반응형

제목: Generation of Test Cases from UML Sequence Diagram Based on Extenics Theory

저자: Wasiur Rhmann, Vipin Saxena, 인도

문서유형: 저널 페이퍼( 13페이지), 2016

 

 

시퀀스 다이어그램 기반으로 테스트케이스를 자동 생성하는 방법을 제안하며, 항공기 제어 시스템의 항공기 출발 액티비티를 예로 들어 설명한다.

 


 

Extenics 이론에 기반한 테스트케이스 생성 방법

제안하는 방법이 아래 단계로 구성된다. 

  1. Extenics 이론의 n차원 Matter Element 속성을 사용하여 주어진 문제의 시퀀스 다이어그램을 작성한다(저자는 Rational Rose 도구를 사용함).
  2. Rational Rose의 시퀀스 다이어그램 .mdl 파일을 생성하고, 이를 Java 프로그램을 사용하여 XML로 변환한다.
  3. XML 파일을 Java DOM 파서로 파싱하여 메시지 시퀀스 번호, 메시지, 메시지 방향, 메시지 순서 같은 유용한 정보를 추출한다.
  4. 메시지 흐름 그래프(MFG)를 생성한다. MFG는 메시지가 에지(간선) 라벨에 기술되는 방향 그래프(diected graph)이다. MFG에서 조건부 메시지는 두 개의 진출 메시지를 가진다.
  5. 노드에 메시지 정보를 기술하는 듀얼 MFG로 전환한다. 이 프로세스가 에지 수를 최소화하며, 따라서 테스트케이스 수가 줄어든다.
  6. 듀얼 MFG에 탐색 알고리즘(traversal algorithm)을 적용하여 테스트케이스를 생성한다. 깊이 기반 탐색(DFS) 알고리즘을 변형하여 루트에서 가장 가까운 이웃(거리가 최소인 노드)을 선택한다.

 

그림 1. 제안된 테스트케이스 생성 방법

 

Extenics Theory
전통적인 수학적 토대와 논리를 확장하여 모순되는 문제(contradictory problems)에 대한 솔루션을 연구하는 학문 분야이다.

 

 

케이스 스터디: 항공기 출발 액티비티

위 제안한 방법을 항공기 출발 액티비티에 적용하고 Java 프로그래밍 언어로 구현한 예가 아래와 같다.

 

1단계: 시퀀스 다이어그램

항공기 제어 시스템은 수많은 항공기로 인한 충돌을 피하기 위해 항공기의 출발 액티비티를 조정할 필요가 있다. 그림 4는 항공기의 출발 액티비티에 대한 시퀀스 다이어그램을 보여준다.

그림 4. 항공기 출발 액티비티의 UML 시퀀스 다이어그램

 

항공기(Aircraft)와 컨트롤러(Controller)의 두 개 오브젝트가 있으며, 이 두 오브젝트가 메시지를 교환한다. 먼저 항공기가 푸시백(공항 게이트에서 항공기가 외부 동력으로 후진하는 절차) 허가를 요청하는 메시지를 보낸다. 컨트롤러가 항공기의 푸시백 요청을 수락하면 항공기는 푸시백을 한다. 항공기가 컨트롤러에게 보내는 두 번째 메시지는 램프 출발(Leave Ramp) 요청이다. 컨트롤러가 이를 허용하면 항공기가 램프(항공기 정비 활동이 수행되는 구역)를 벗어난다. 이어서 항공기가 택싱(항공기가 자체 동력으로 이동하는 절차) 허가를 요청한다. 택싱(Taxiing) 허가가 나면 항공기는 활주로(항공기 이착륙에 사용되는 직사각형 영역)를 주행한다. 다음은 항공기가 컨트롤러에게 이륙 허가를 요청하고, 컨트롤러가 허가를 하면 항공기가 이륙한다.

 

제시된 시퀀스 다이어그램을 n차원 Matter Element SD= (N, Cm, Vm)으로 표현한다. 여기서 N은 시퀀스 다이어그램, Cm은 다양한 메시지 타입의 특성, Vm은 이 특성에 대한 N의 측정치를 의미한다. 오브젝트 항공기(A)와 컨트롤러(C)Affair Element I=(d, h, u)로 표현한다. 오브젝트 간의 메시지 교환은 Relation Element Q=(s, a, z)로 나타낸다.

  

2단: 시퀀스 다이어그램의 .mdl 파일

항공기 출발 액티비의 시퀀스 다이어그램을 그리기 위해 Rational Rose 소프트웨어를 사용하였으며, 시퀀스 다이어그램의 Petal 파일을 생성한다. Petal 파일이 엔터티 및 엔터티 간 관계를 포함하고 있다.

그림 6. Rational Rose에서 생성한 시퀀스 다이어그램 .mdl 파일

 

3단계: XML 생성

Petal 파일을 파싱하여 모델 파일을 XML 파일로 전환한다. XML 파일 생성을 위해 스트링(string)과 좌우 괄호를 검색한다. 그림 9는 시퀀스 다이어그램의 .mdl 파일을 가져와서 XML을 생성하는 Java 프로그램의 스크린샷이다. Java 프로그래밍에 Netbeans IDE가 사용되었다.

그림 9. 시퀀스 다이어그램 .mdl 파일로부터 생성된 XML

 

4단계: Java DOM 파서를 통한 정보 추출

Java DOM 파서를 사용하여 메시지 흐름 그래프를 구축하는 데 유용한 정보를 추출한다. 파싱된 데이터가 시퀀스 번호, 메시지, 메시지 방향 등에 대한 정보를 포함한다.

그림 10. Java DOM 파서를 사용하여 메시지 흐름 그래프 생성을 위한 정보 추출

 

5단계: 메시지 흐름 그래프 생성

그래프 생성을 위해 Graphviz 소프트웨어를 사용하였다. 그림 11은 시퀀스 다이어그램을 기반으로 생성된 메시지 흐름 그래프이다.

그림 11. UML 시퀀스 다이어그램으로부터 도출된 메시지 흐름 그래프

 

Graphviz (http://www.graphviz.org/Download.php)
Graphviz는 오픈 소스 그래프 시각화 소프트웨어로 몇 가지 주요 그래프 레이아웃 프로그램을 제공한다. Graphviz 레이아웃 프로그램은 간단한 텍스트 언어로 쓰여진 그래프에 대한 묘사를 입력으로 취하여 여러 유용한 형식(, 웹 페이지용 이미지 및 SVG, PDF 또는 기타 문서에 포함하기 위한 Postscript)의 다이어그램을 만들거나 또는 대화형 그래프 브라우저에 표시한다.

 

아래는 위 그래프를 한글화하여 그린 것(일반 다이어그램 작성 툴 사용)

 

6단계: 듀얼 메시지 흐름 그래프 생성

그림 11의 에지가 듀얼 그래프에서는 노드로 변환된다. 그림 11MFG에서 요청 불허(Permission not Granted) 메시지를 가진 에지가 여러 개 존재하는 데, 이것들이 듀얼 그래프에서는 단일 노드(Permission not Granted 노드)가 된다.

그림 12. 듀얼 메시지 흐름 그래프

 

아래는 위 그림의 한글 버전

 

7단계: 테스트케이스 생성

위 그래프에 경로 탐색 알고리즘 적용하여 아래와 같은 5개 경로(테스트케이스)를 생성한다. 

  • 테스트케이스 1: 푸시백 허가 요청 -> 푸시백 수락 -> 푸시백 -> 램프 출발 요청 -> 램프 출발 수락 -> 램프 출발 -> 택싱 허가 요청 -> 택싱 수락 -> 택싱 -> 활주로 주행 -> 이륙 허가 요청 -> 이륙 수락 -> 이륙 -> 종료
  • 테스트케이스 2: 푸시백 허가 요청 -> 푸시백 수락 -> 푸시백 -> 램프 출발 요청 -> 램프 출발 수락 -> 램프 출발 -> 택싱 허가 요청 -> 택싱 수락 -> 택싱 -> 활주로 주행 -> 이륙 허가 요청 -> 요청 불허 -> 종료
  • 테스트케이스 3: 푸시백 허가 요청 -> 푸시백 수락 -> 푸시백 -> 램프 출발 요청 -> 램프 출발 수락 -> 램프 출발 -> 택싱 허가 요청 -> 요청 불허 -> 종료
  • 테스트케이스 4: 푸시백 허가 요청 -> 푸시백 수락 -> 푸시백 -> 램프 출발 요청 -> 요청 불허 -> 종료
  • 테스트케이스 5: 푸시백 허가 요청 -> 요청 불허 -> 종료

 

그림 13. 항공기 출발 액티비티의 테스트케이스

 

반응형

+ Recent posts