지속적으로 증가하는 소프트웨어 복잡성으로 인해, 모델 기반 개발 기법은 소프트웨어 개발에 있어 거의 필수적인 기법이 되고 있다. 그러나, 모델 기반 기법을 활용한다 하더라도 복잡한 소프트웨어를 위한 테스트 케이스 생성은 여전히 풀어야 할 숙제이다. 본 논문에서는, 커스텀 파서와 SMT솔버를 이용해 UML 모델 기반에서 자동 테스트 데이터를 생성하는 기법을 제안한다. 제안된 기법을 이용하면, 모델이 액션 언어(action language)와 같은 플랫폼 독립적인 언어로 구현되어 있거나, 플랫폼 종속적인 언어로 기술되어 있더라도 테스트 입력을 생성할 수 있다. 또한, 모델에서 테스트 케이스를 효율적으로 생성하기 위해 콘콜릭 수행 기법을 적용하였다. 본 논문에서는, 제안된 테스트 데이터 생성 기법을 통해 현대 산타페의 파워윈도우 스위치 모델에 활용된 사례를 기술한다.
지속적으로 증가하는 소프트웨어 복잡성으로 인해, 모델 기반 개발 기법은 소프트웨어 개발에 있어 거의 필수적인 기법이 되고 있다. 그러나, 모델 기반 기법을 활용한다 하더라도 복잡한 소프트웨어를 위한 테스트 케이스 생성은 여전히 풀어야 할 숙제이다. 본 논문에서는, 커스텀 파서와 SMT 솔버를 이용해 UML 모델 기반에서 자동 테스트 데이터를 생성하는 기법을 제안한다. 제안된 기법을 이용하면, 모델이 액션 언어(action language)와 같은 플랫폼 독립적인 언어로 구현되어 있거나, 플랫폼 종속적인 언어로 기술되어 있더라도 테스트 입력을 생성할 수 있다. 또한, 모델에서 테스트 케이스를 효율적으로 생성하기 위해 콘콜릭 수행 기법을 적용하였다. 본 논문에서는, 제안된 테스트 데이터 생성 기법을 통해 현대 산타페의 파워윈도우 스위치 모델에 활용된 사례를 기술한다.
Because of the ever-increasing software complexity, model-based development techniques are becoming an essential technique in software development. However, even if model-based techniques are used, the test case generation for complex software is still a challenge to solve. In this paper, we propose...
Because of the ever-increasing software complexity, model-based development techniques are becoming an essential technique in software development. However, even if model-based techniques are used, the test case generation for complex software is still a challenge to solve. In this paper, we propose a method to generate automatic test cases based on UML model using custom parser and SMT solver. By proposed technique, a test case can be generated even though the model is described in a platform independent language such as action language, or in a platform dependent language. In addition, a concolic execution technique is applied to efficiently generate test cases in the model. In this paper, we present a case study on the power window switch model of Hyundai Santa Fe through the proposed test case generation technique.
Because of the ever-increasing software complexity, model-based development techniques are becoming an essential technique in software development. However, even if model-based techniques are used, the test case generation for complex software is still a challenge to solve. In this paper, we propose a method to generate automatic test cases based on UML model using custom parser and SMT solver. By proposed technique, a test case can be generated even though the model is described in a platform independent language such as action language, or in a platform dependent language. In addition, a concolic execution technique is applied to efficiently generate test cases in the model. In this paper, we present a case study on the power window switch model of Hyundai Santa Fe through the proposed test case generation technique.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 이와 같이 검증 도구 또한 표준 준수가 요구되는 경우에도 기존 검증 환경의 교체 없이도 사용될 수 있도록 커스텀 파서와 SMT 솔버가 결합된 새로운 모델 기반 자동 테스트 생성 방식을 제안한다.
본 논문에서는 커스텀 파서와 SMT (Satisfiability Modulo Theories) 솔버가 결합된 콘콜릭 수행 기반의 테스트 케이스 생성 구조를 통해, UML (Unified Modeling Language) 모델에서 생성한 클래스 다이어그램 및 상태 선도를 기반으로 자동 테스트 케이스 생성 기법을 제안한다. 이를 위해, 먼저 XMI로 변환된 모델 정보에서 테스트 케이스 생성에 필요한 각종 정보를 XPath (XML path language)를 이용해 불러온다.
이러한 문제를 해결하기 위해 본 논문에서는, 산업 분야에서도 활용할 수 있도록 추상 테스트 케이스 대신 커스텀 파서와 SMT 솔버를 활용해 테스트 환경에 맞춰 바로 테스트 케이스를 생성하는 구조를 제안하였다. 또한, 모델 기반 개발 기법 적용 시 플랫폼 종속적인 모델 및 플랫폼 독립적인 모델 두 가지가 동시에 혼재되어 있는 환경에서도 테스트 케이스를 생성할 수 있도록 SMT 솔버 활용 전에 커스텀 파서 생성기를 통해 다양한 모델 구현 언어에도 대응할 수 있는 방식을 고안하였다.
가설 설정
상기 언급한 테스트 데이터 생성 기법의 이해를 위한 예제로서, 파워윈도우 스위치 모듈에서 키 박스에 키를 넣었는지 여부에 따라 램프가 동작하는 기능을 검증하기 위한 테스트 데이터를 생성한다고 가정하자. 이러한 기능 구현을 위해 두 개의 클래스 MechanicalKeyInput, PocketLampOutput가 있고, 하기의 Fig.
제안 방법
본 논문에서는, MiniSMT, Z3, Yices와 같은 다양한 SMT 솔버 중 상대적으로 좋은 성능을 보여준 Yices를 선정하였다[12]. Yices를 이용해 현재 입력 값에 대한 천이 가능 여부를 판단하고, 아직까지 도달하지 못한 목표 경로의 필요한 입력 값을 산출한다.
이를 위해, 먼저 XMI로 변환된 모델 정보에서 테스트 케이스 생성에 필요한 각종 정보를 XPath (XML path language)를 이용해 불러온다. 그리고 나서, 상태 선도 및 함수에 포함된 액션 언어 및 구현 코드 등을 대표적인 커스텀 파서 생성기인 ANTLR를 이용해 파싱한다. 파싱된 텍스트는 SMT 솔버인 Yices 기반에서 자동 테스트 케이스 생성에 활용된다.
이러한 모델 기반 개발 기법 중 모델 기반 테스트에서는, 플랫폼 독립적인 모델에서 추상 테스트 케이스를 생성한다. 그리고, 이를 수행 시점에서 실제 수행 가능한 테스트 케이스로 인터프리트 하여 각 테스트 환경에 맞는 테스트를 수행한다. 이는 보편적인 모델 기반 테스트의 형태로서 정립되었지만, 한편으로는 테스트를 수행하기 위한 테스트 수행기를 비롯한 테스트 환경 전반적으로 추상 테스트 케이스를 인터프리트 할 수 있는 기능을 지원하는 도구를 반드시 사용해야 한다는 것을 의미한다.
이러한 문제를 해결하기 위해 본 논문에서는, 산업 분야에서도 활용할 수 있도록 추상 테스트 케이스 대신 커스텀 파서와 SMT 솔버를 활용해 테스트 환경에 맞춰 바로 테스트 케이스를 생성하는 구조를 제안하였다. 또한, 모델 기반 개발 기법 적용 시 플랫폼 종속적인 모델 및 플랫폼 독립적인 모델 두 가지가 동시에 혼재되어 있는 환경에서도 테스트 케이스를 생성할 수 있도록 SMT 솔버 활용 전에 커스텀 파서 생성기를 통해 다양한 모델 구현 언어에도 대응할 수 있는 방식을 고안하였다. 또한, 해당 기법을 자동차 전장 산업 분야의 파워윈도우 스위치 모듈에 지역 최적화 기법을 이용한 테스트 케이스 생성을 통해, 실제 적용 사례를 제시하였다.
또한, 모델 기반 개발 기법 적용 시 플랫폼 종속적인 모델 및 플랫폼 독립적인 모델 두 가지가 동시에 혼재되어 있는 환경에서도 테스트 케이스를 생성할 수 있도록 SMT 솔버 활용 전에 커스텀 파서 생성기를 통해 다양한 모델 구현 언어에도 대응할 수 있는 방식을 고안하였다. 또한, 해당 기법을 자동차 전장 산업 분야의 파워윈도우 스위치 모듈에 지역 최적화 기법을 이용한 테스트 케이스 생성을 통해, 실제 적용 사례를 제시하였다.
본 논문에서는 모델 구현을 위한 액션 언어에 포함되어 있는 비교문과 같은 구문을 다시 변환하는데 필요한 노력을 줄이기 위해 SMT 솔버를 활용하였다. 본 논문에서는, MiniSMT, Z3, Yices와 같은 다양한 SMT 솔버 중 상대적으로 좋은 성능을 보여준 Yices를 선정하였다[12].
2와 같이, 세부적인 테스트 입력 생성 절차로서 먼저 생성된 모델을 XMI를 이용해 테스트 입력 생성 프로그램에 불러들인다. 여기에서 대상으로 선정한 객체에 대해 프로퍼티 초기화를 진행한 후, 테스트 시뮬레이션 환경을 구성한다. 먼저 초기에는 임의의 입력 값을 사용하여 테스트를 한번 수행한 후, 해당 수행 정보를 통해 심볼릭 테이블을 작성한다.
이를 위해 Fig. 1과 같이 모델 내의 플랫폼 독립적인 모델 및 플랫폼 종속적인 모델에 관계없이 실시간으로 동작시키기 위한 별도의 테스트 프레임워크를 구현하였다. 이러한 프레임워크는 SUT를 검증하기 위해 외부 인터페이스를 기반으로 수행할 입력 인터페이스를 정의한다.
이를 위해 본 논문에서는 인터프리트 기능을 지원하는 테스트 수행기를 사용하지 않고, 모델에서 자동 생성한 테스트 케이스를 테스트 환경에 맞는 실제 테스트 케이스로 변환하는 방법을 제안한다. 메타 데이터 교환을 위한 XMI (XML Metadata Interchange)를 제외한, 플랫폼 독립적인 모델에서 다룰 수 있는 액션 언어(action language) 및 플랫폼 종속적인 모델에서 사용되는 코드와 같은 특정 언어를 분석할 수 있도록, 커스텀 파서 생성기를 활용한다.
Integer 변수의 입력 범위를 1~100과 같이 지나치게 작게 제한하는 경우에는 지역 최적화 알고리즘과 같은 기법이 별로 효과가 없을 수 있다[14]. 이를 위해 본 논문에서는 파워윈도우 스위치 모델의 특성을 고려하여 Integer 변수 입력 범위를 0~65535로 설정하였다. 이보다 더 큰 입력 범위를 사용한 경우 천이 커버리지에는 특별한 차이가 없으면서 생성 시간이 오래 걸리는 문제점이 발생하였다.
본 논문에서는 커스텀 파서와 SMT (Satisfiability Modulo Theories) 솔버가 결합된 콘콜릭 수행 기반의 테스트 케이스 생성 구조를 통해, UML (Unified Modeling Language) 모델에서 생성한 클래스 다이어그램 및 상태 선도를 기반으로 자동 테스트 케이스 생성 기법을 제안한다. 이를 위해, 먼저 XMI로 변환된 모델 정보에서 테스트 케이스 생성에 필요한 각종 정보를 XPath (XML path language)를 이용해 불러온다. 그리고 나서, 상태 선도 및 함수에 포함된 액션 언어 및 구현 코드 등을 대표적인 커스텀 파서 생성기인 ANTLR를 이용해 파싱한다.
이를 위해, 본 논문에서는 커스텀 파서 생성기를 이용하여 필요한 환경에 맞는 파서를 생성해, 플랫폼 종속적인 모델 및 플랫폼 독립적인 모델에 적용이 가능한 테스트 케이스 생성 구조를 제안한다[11]. 커스텀 파서 생성기는 크게 입력 문법 표현형에 따라 YACC나 EBNF을 분석할 수 있는 도구로 나눌 수 있으며, 세부적으로는 매우 다양한 파생 도구가 있으나, 본 논문에서는 상대적으로 출력 언어가 다양하며 IDE 환경을 제공하는 ANTLR v4를 사용했다.
이를 전체 파워윈도우 스위치 모듈을 대상으로 각 기능 별 최대 제한시간 5분 이내에서 테스트를 생성하였다.
만약, 테스트 케이스 해집합이 100% 천이 커버리지를 만족하지 못한다면 아직까지 만족되지 않은 상태 천이를 선택한다. 작성된 심볼릭 테이블로부터 이를 커버하기 위한 적절한 입력 값을 추출하고 이를 기반으로 테스트를 수행한다. 이러한 시도는 일정 횟수 이상 반복되고 나서 완료될 수 있다.
이러한 수행 정보들은 심볼릭 테이블 작성에 활용되어 다음 테스트 케이스 생성 시 미달성된 경로를 커버하기 위한 입력 값 생성에 사용된다. 진입 불가능한 경로가 발생하거나 지나치게 한 경로에서 오랜 시간을 반복하는 문제를 줄이기 위해 일정 제한 시간이 지나면 테스트 케이스 생성을 중단하도록 하였다.
대상 데이터
본 논문에서는 이러한 적용 대상으로서, 현대자동차의 싼타페 DM에 장착되는 파워윈도우 스위치 모듈을 선정하였다. 소프트웨어 모델은 IBM 사의 Rational Rhapsody를 사용하여 UML 기반 모델로 작성되었으며, 시스템의 구조를 표현하기 위해 클래스 다이어그램 및 객체 다이어그램, 행위 다이어그램으로는 상태 선도가 주로 활용되었다.
본 논문에서는 모델 구현을 위한 액션 언어에 포함되어 있는 비교문과 같은 구문을 다시 변환하는데 필요한 노력을 줄이기 위해 SMT 솔버를 활용하였다. 본 논문에서는, MiniSMT, Z3, Yices와 같은 다양한 SMT 솔버 중 상대적으로 좋은 성능을 보여준 Yices를 선정하였다[12]. Yices를 이용해 현재 입력 값에 대한 천이 가능 여부를 판단하고, 아직까지 도달하지 못한 목표 경로의 필요한 입력 값을 산출한다.
데이터처리
Fig. 5에서 파워윈도우 스위치 모듈의 중 퍼들 램프 기능에 대해 일반적인 랜덤 알고리즘을 사용한 경우와 지역 최적화 알고리즘을 사용했을 경우를 10회 반복 시의 평균 결과로 비교하였다. 해당 실험 결과에서는, 테스트 입력 생성 시 일반적인 랜덤 방식을 활용하면 테스트 케이스가 비교적 빨리 커버리지를 달성하지만 덜 익은 수렴을 하는 현상이 발생했다.
이론/모형
예를 들어, 파워 윈도우 클래스에서 상태 전이를 위해 도난 경보 클래스의 경보 상태 출력 값을 참조하고, 다시 경보 상태 출력 값은 특정 조건을 만족해야 하는 경우와 같이, 클래스가 상호적인 연관 관계에 있거나 복잡한 연관 관계를 가지면 주어진 시간 내에 목표 커버리지를 달성하지 못할 수 있다. 이러한 문제를 해결하기 위해 본 논문에서는 지역 최적화 탐색 알고리즘을 활용하였다.
이러한 커스텀 파서를 활용하면 플랫폼 종속적인 모델에 활용된 C/C++, Java와 같은 프로그래밍 언어를 비롯하여, 플랫폼 독립적인 모델에 활용되는 액션 언어와 같은 다양한 언어를 파싱하기 위한 커스텀 파서를 생성할 수 있다. 이를 통해 분석된 코드는 대표적인 SMT 솔버인 Yices를 통해 심볼릭 수행 기법에 활용된다.
이를 위해, 본 논문에서는 커스텀 파서 생성기를 이용하여 필요한 환경에 맞는 파서를 생성해, 플랫폼 종속적인 모델 및 플랫폼 독립적인 모델에 적용이 가능한 테스트 케이스 생성 구조를 제안한다[11]. 커스텀 파서 생성기는 크게 입력 문법 표현형에 따라 YACC나 EBNF을 분석할 수 있는 도구로 나눌 수 있으며, 세부적으로는 매우 다양한 파생 도구가 있으나, 본 논문에서는 상대적으로 출력 언어가 다양하며 IDE 환경을 제공하는 ANTLR v4를 사용했다.
그리고 나서, 상태 선도 및 함수에 포함된 액션 언어 및 구현 코드 등을 대표적인 커스텀 파서 생성기인 ANTLR를 이용해 파싱한다. 파싱된 텍스트는 SMT 솔버인 Yices 기반에서 자동 테스트 케이스 생성에 활용된다.
성능/효과
5에서 파워윈도우 스위치 모듈의 중 퍼들 램프 기능에 대해 일반적인 랜덤 알고리즘을 사용한 경우와 지역 최적화 알고리즘을 사용했을 경우를 10회 반복 시의 평균 결과로 비교하였다. 해당 실험 결과에서는, 테스트 입력 생성 시 일반적인 랜덤 방식을 활용하면 테스트 케이스가 비교적 빨리 커버리지를 달성하지만 덜 익은 수렴을 하는 현상이 발생했다. 반면, 지역 최적화 알고리즘을 활용한 경우, 랜덤 탐색 방식보다 더 많은 코드 커버리지를 달성할 수 있다.
질의응답
핵심어
질문
논문에서 추출한 답변
SAT 솔버의 단점은?
주로 코드 기반에서 테스트 케이스 생성을 위해 SAT 솔버 또는 SMT 솔버가 대표적으로 활용된다. SAT 솔버는 표현형이 간단하여 상대적으로 SMT 솔버에 비해 처리 속도가 빠르지만 CNF (conjunctive normal form) 와 같은 특정 포맷으로 변환이 필요하다는 단점이 있다. 반면, SMT 솔버는 속도가 느리지만 비교문과 같은 조건문 내의 다양한 구문을 처리할 수 있다는 점에서 사용이 편리하다.
주로 코드 기반에서 테스트 케이스 생성을 위해 무엇이 활용되는가?
주로 코드 기반에서 테스트 케이스 생성을 위해 SAT 솔버 또는 SMT 솔버가 대표적으로 활용된다. SAT 솔버는 표현형이 간단하여 상대적으로 SMT 솔버에 비해 처리 속도가 빠르지만 CNF (conjunctive normal form) 와 같은 특정 포맷으로 변환이 필요하다는 단점이 있다.
플랫폼 독립적인 모델을 구현하기 위해 ALF 와 fUML을 사용한 경우 한계점은?
플랫폼 독립적인 모델을 구현하기 위해 ALF 와 fUML을 사용한 경우, 활동 다이어그램을 수행 가능하게 만들어줄 수 있는 오픈 소스 도구인 fUML Reference Implementation를 활용할 수 있다[13]. 그러나, 플랫폼 독립적인 모델뿐 만 아니라 플랫폼 종속적인 모델을 동시에 구현하였거나 fUML 기반으로 생성하지 않은 경우는 해당 모델을 실시간으로 동작시키기 어렵다.
참고문헌 (14)
C. Cadar, P. Godefroid, S. Khurshid, C. S. P?s?reanu, K. Sen, N. Tillmann, and W. Visser, "Symbolic execution for software testing in practice: preliminary assessment," Proceedings of the 33rd International Conference on Software Engineering, ACM, pp.1066-1071, 2011.
C. Mingsong, Q. Xiaokang, and L. Xuandong, "Automatic test case generation for UML activity diagrams," Proceedings of the 2006 International Workshop on Automation of Software Test, ACM, Shanghai, China, pp.2-8, 2006.
M. Prasanna, K. R. Chandran, and K. Thiruvenkadam, "Automatic Test Case Generation for UML Collaboration Diagrams," IETE Journal of Research, Vol.57, No.1, pp.77, 2011.
P. Samuel, R. Mall, and P. Kanth, "Automatic test case generation from UML communication diagrams," Information and Software Technology, Vol.49, No.2, pp.158-171, 2007.
M. Sarma, D. Kundu, and R. Mall, "Automatic Test Case Generation from UML Sequence Diagram," Advanced Computing and Communications, 2007. ADCOM 2007. International Conference on, pp.60-67, 2007.
P. Samuel, R. Mall, and A. K. Bothra, "Automatic test case generation using unified modeling language (UML) state diagrams," IET Software, Vol.2, No.2, pp.79-93, 2008.
P. Gulia and R. S. Chillar, "A new approach to generate and optimize test cases for UML state diagram using genetic algorithm: http://doi.acm.org/10.1145/180921.2180933." ACM SIGSOFT Software Engineering Notes, Vol.37, No.3, pp.1-5, 2012.
Y. J. Kim, M. Z. Kim, Y. H. Kim, and U. J. Jung, "Comparison of Search Strategies of KLEE Concolic Testing Tool," Journal of KIISE: Computing Practices and Letters, Vol.18, No.4, pp.321-325, 2012.
K. Yunho, K. Moonzoo, and J. Yoonkyu, "CREST-BV: An Improved Concolic Testing Technique Supporting Bitwise Operations for Embedded Software," Journal of KIISE: Software and Applications, Vol.40, No.2, pp.90-98, 2013.
S. J. Park, "A Method for Managing Traceability of Business Application Services through Automatic Generation of Analysis Model," Ph.D. dissertation, Dept. of Computer Science, Sogang University, 2008.
K. W. Shin, J. H. Lee, S. S. Kim, J. U. Park, and D. J. Lim, "Automatic Test Case Generation Based on the UML Model of the Automotive-Embedded Software using a Custom Parser and SMT Solver," JSAE 2016 Annual Congress (Spring), pp.1198-1202, 2016.
C. Barrett, M. Deters, L. de Moura, A. Oliveras, and A. Stump, "6 Years of SMT-COMP," Journal of Automated Reasoning, Vol.50, Issue 3, pp.243-277, 2013.
Zoltan Micskei, R.-A.K. Benedek Horvath, Oszkar Semerath, Andras Voros, Daniel Varro, "On Open Source Tools for Behavioral Modeling and Analysis with fUML and Alf," 1st Workshop on Open Source Software for Model Driven Engineering '2014, Valencia, Spain, pp.31-41, 2014.
S. Ali, M. Zohaib Iqbal, A. Arcuri, and L. C. Briand, "Generating Test Data from OCL Constraints with Search Techniques," IEEE Transactions on Software Engineering, Vol.39, No.10, pp.1376-1402, 2013.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.