본 논문에서는 임베디드 시스템 테스트에 많이 사용되는 테스트 항목이 기술된 체크리스트를 기반으로 테스트 케이스를 자동으로 생성하기 위한 방법을 제안한다. 일반적으로 체크리스트에는 테스트하고자 하는 항목이 정의되어 있다. 하지만 대부분의 테스트 케이스 생성 전략에서는 테스트 하고자하는 항목뿐만 아니라 다양한 변이 조건에서도 테스트하기를 권하고 있다. 제안하는 방법은 한글로 기술된 체크리스트를 분석하여 시스템 입출력과 연산 정보를 찾아낸다. 그리고 찾아낸 정보와 설정하는 테스트 케이스 생성 전략에 따라 테스트 케이스를 자동으로 생성한다. 이 방법은 테스트 케이스를 수동으로 생성할 때, 일으킬 수 있는 오류를 줄일 수 있을 뿐만 아니라, 체크리스트에는 기술되지 않는 다양한 변이 테스트 케이스도 생성할 수 있다. 제안된 방법은 구현되고, 실제 의료기기용 임베디드 시스템의 체크리스트를 사용하여 실험을 진행한다. 실험에서는 체크리스트로부터 여러 커버리지에 적절한 테스트 케이스가 오류 없이 통계적으로 정확히 생성되었음을 확인할 수 있어서 제안된 방법의 유용성을 보여준다.
본 논문에서는 임베디드 시스템 테스트에 많이 사용되는 테스트 항목이 기술된 체크리스트를 기반으로 테스트 케이스를 자동으로 생성하기 위한 방법을 제안한다. 일반적으로 체크리스트에는 테스트하고자 하는 항목이 정의되어 있다. 하지만 대부분의 테스트 케이스 생성 전략에서는 테스트 하고자하는 항목뿐만 아니라 다양한 변이 조건에서도 테스트하기를 권하고 있다. 제안하는 방법은 한글로 기술된 체크리스트를 분석하여 시스템 입출력과 연산 정보를 찾아낸다. 그리고 찾아낸 정보와 설정하는 테스트 케이스 생성 전략에 따라 테스트 케이스를 자동으로 생성한다. 이 방법은 테스트 케이스를 수동으로 생성할 때, 일으킬 수 있는 오류를 줄일 수 있을 뿐만 아니라, 체크리스트에는 기술되지 않는 다양한 변이 테스트 케이스도 생성할 수 있다. 제안된 방법은 구현되고, 실제 의료기기용 임베디드 시스템의 체크리스트를 사용하여 실험을 진행한다. 실험에서는 체크리스트로부터 여러 커버리지에 적절한 테스트 케이스가 오류 없이 통계적으로 정확히 생성되었음을 확인할 수 있어서 제안된 방법의 유용성을 보여준다.
This paper proposes a method to generate test cases in an automatic manner, based on checklist containing test cases used for testing embedded systems. In general, the items to be tested are defined in a checklist. However, most test case generation strategies recommend to test a system with not onl...
This paper proposes a method to generate test cases in an automatic manner, based on checklist containing test cases used for testing embedded systems. In general, the items to be tested are defined in a checklist. However, most test case generation strategies recommend to test a system with not only the defined test items but also various mutated test conditions. The proposed method parses checklist in Korean file and figures out the system inputs and outputs, and operation information. With the found information and the user defined test case generation strategy, the test cases are automatically generated. With the proposed method, the errors introduced during manual test case generation may be reduced and various test cases not defined in checklist can be generated. The proposed method is implemented and the experiment is performed with the checklist for an medical embedded system. The feasibility of the proposed method is shown through the test cases generated from the checklist. The test cases are adequate to the coverages and their statistics are correct.
This paper proposes a method to generate test cases in an automatic manner, based on checklist containing test cases used for testing embedded systems. In general, the items to be tested are defined in a checklist. However, most test case generation strategies recommend to test a system with not only the defined test items but also various mutated test conditions. The proposed method parses checklist in Korean file and figures out the system inputs and outputs, and operation information. With the found information and the user defined test case generation strategy, the test cases are automatically generated. With the proposed method, the errors introduced during manual test case generation may be reduced and various test cases not defined in checklist can be generated. The proposed method is implemented and the experiment is performed with the checklist for an medical embedded system. The feasibility of the proposed method is shown through the test cases generated from the checklist. The test cases are adequate to the coverages and their statistics are correct.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 이러한 단점을 보완할 수 있는 체크리스트로부터 테스트 케이스를 직접 생성하는 방안을 제시한다. 제안하는 방법에서는 테스트 용도나 테스트 시간을 고려하여 용도에 따른 테스트 케이스를 자동으로 생성한다.
본 논문에서는 자연어로 작성된 체크리스트를 파싱을 통해 얻은 정보로, 테스트 입력을 테스트 전략에 따라 조합한 테스트 케이스와 각 테스트 케이스에 대한 예상 출력을 시스템 출력으로 자동으로 생성하여 오라클로 사용할 수 있는 방법에 대해 다룬다.
본 논문에서는 한글로 작성된 체크리스트에서 테스트 케이스를 자동으로 생성하는 방법을 제시하였다. 제안된 방법은 임베디드 시스템 테스트 현장에서 일반적으로 사용하는체크리스트 기반 테스트의 단점을 보완할 수 있다.
본 실험에서는 본문에서 제시하는 이론을 바탕으로 구현한 테스트 케이스 자동 생성 프로그램이 실제 사용하는 체크리스트로부터 테스트 케이스를 원하는 대로 생성하는 지를 검증하였다.
연구[17]에서는 체크리스트 기반으로 테스트 케이스를 생성하는 방법에 대해 다룬다. 이 연구에서는 효율적으로 체크 항목을 작성할 수 있는 체크리스트의 체계를 제안하고, 이를 기반으로 체크리스트를 생성한다.
이러한 문제를 해결하기 위해 체크리스트로부터 테스트 케이스를 체계적으로 만드는 방법이 필요하다. 자연어로 된 체크리스트를 엔지니어가 해석하여 테스트 케이스를 만드는 과정에서 유입될 수 있는 오류를 줄일 수 있고, 엔지니어마다 다른 결과를 내는 것을 방지하기 위한 체계적인 방법의 하나로, 본 논문에서는 자연어로 작성된 체크리스트를 해석(parsing)을 통하여 테스트 케이스를 자동 생성하는 방법을 제안한다.
제안 방법
고장 트리는 오류를 일으키는 원인과 관계를 AND, OR, Priority AND, XOR 등의 논리 연산자를 이용하여 트리 형태로 표현하는 방법이다[14]. 고장 트리를 활용하면 결과 이벤트 중 일부를 오류 발생 상황으로 만들고 이 상황이 발생할 수 있는 시나리오를 고장 트리에서 추적하여 생성할 수 있고 이를 테스트 케이스로 사용한다. 즉, 오류 발생의 경로를 결과 이벤트로부터 거슬러 올라가면 초기 상태부터 결과 이벤트에 이르는 시나리오를 역방향으로 생성할 수 있다.
사용된 체크리스트에 나온 테스트 항목에서 모호하거나 입력 정보가 없는 테스트 항목은 입출력 정보로 수정하여 사용하였다. 예를 들면, “흡인기를 동작시키면”과 같은 표현은 “키버튼을 동작시키면”으로 변환하여 사용하였다.
생성된 테스트 케이스가 해당되는 커버리지를 만족하면서 주어진 체크리스트를 정확히 만족하는 지는 모든 테스트 케이스를 모두 비교하여, 정확히 생성되는 지를 확인하였다. 확인 과정에서 입출력을 기준으로 오류없이 정확히 생성하였음을 확인하였다.
출력 LED는 범위가 정해지지 않아서 임의 값이 출력될 수 있음을 의미한다. 실제 테스트 시에는 테스트 엔지니어가 눈으로 직접 확인하며 그 동작의 정확성 여부를 테스트한다. 연산자 정의 테이블은 Table 1을 사용한다.
이 연구에서는 “진입 시 조건”과 “종료 조건”의 조합을 조건 커버리지(Condition coverage), 결정 커버리지(Decision coverage), 수정된 조건 결정 커버리지(MCDC: Modified Condition and Decision Coverage)와 같은 기준에 맞게 생성하여 테스트 케이스로 사용한다.
본 논문에서는 이러한 단점을 보완할 수 있는 체크리스트로부터 테스트 케이스를 직접 생성하는 방안을 제시한다. 제안하는 방법에서는 테스트 용도나 테스트 시간을 고려하여 용도에 따른 테스트 케이스를 자동으로 생성한다. 제안하는 방법에서는 한글 문서로 된 체크리스트를 해석(parsing)하고, 해석된 내용에서 사용자가 정의한 시스템 입출력 정보, 문서 해석 정보 내의 연산 정보 및 테스트 케이스 생성 전략을 이용하여 용도에 맞는 테스트 케이스 생성한다.
제안하는 방법에서는 테스트 용도나 테스트 시간을 고려하여 용도에 따른 테스트 케이스를 자동으로 생성한다. 제안하는 방법에서는 한글 문서로 된 체크리스트를 해석(parsing)하고, 해석된 내용에서 사용자가 정의한 시스템 입출력 정보, 문서 해석 정보 내의 연산 정보 및 테스트 케이스 생성 전략을 이용하여 용도에 맞는 테스트 케이스 생성한다.
제안하는 방법에서는 한글로 작성된 체크리스트 내의 사용자 혹은 미리 정의된 입출력 정보 테이블과 연산자 정보 테이블을 이용하여 테스트 항목들을 파싱하여 논리 표현으로 바꾸고, 사용자가 정하는 테스트 케이스 생성 전략에 맞는 테스트 케이스를 논리 표현으로부터 도출한다.
제안하는 방법은 크게 두 가지 테이블과 두 가지 기능 모듈로 구성된다. 첫 번째 테이블은 사용자가 정의한 시스템 입출력과 해당 변수 정보를 가지고 있는 ‘입출력 정보 테이블’이고, 두 번째 테이블은 비교어, 명령어와 접속어 및 그들의 변형어 들과 해당하는 로직들이 정의되어 있는 ‘연산자정의 테이블’이다.
제안하는 체크리스트 체계는 “동작모드”, “기능분류”, “기능설명”, “테스트 명령” 으로 이루어져 있다.
체크리스트는 시스템을 테스트할 때 확인해야하는 기능이나 동작을 기술한 문서이다. 체크리스트 기반 테스트에서 엔지니어는 시스템이 정상적으로 동작하는가를 확인하기 위해 체크리스트에 명시된 항목을 순차적으로 실행하며 테스트를 진행한다. 엔지니어가 체크리스트를 통하여 테스트를 진행 할 경우 엔지니어는 시스템에 입력시킬 테스트 케이스가 필요하게 된다.
대상 데이터
실험에서 사용한 체크리스트 파일은 의료기기용 내장 소프트웨어의 여러 기능 중, 특정 하나의 기능을 테스트하기 위한 체크리스트로 총 80개의 테스트 항목으로 구성되어 있다. 시스템 입력은 Foot switch 등 7개이고 출력은 LED, DC motor 등 6개이다.
성능/효과
테스터의 실수 또는 판단 착오로 인하여 잘못된 테스트 케이스를 생성할 수 있다. 2) 체크리스트에 작성된 항목은 테스트해야 하는 기능만을 나열하고 있어서, 만들어진 소프트웨어 혹은 시스템이 체크리스트에 없는 입력이 가해지는 이상 상황에서 제대로 동작하는 지를 체계적으로 테스트하기 힘들다. 많은 테스트 방법 및 전략에서는 엔지니어가 생성한 테스트 항목 혹은 시스템 사양에 나타나지 않는 변이 입력 조합에 대해서 테스트하기를 권하고 있다.
논문에서 제안한 방법을 구현하였고, 실험을 통해 테스트 케이스를 자동으로 생성할 수 있음을 확인하였다. 생성된 케이스는 의료기기용 임베디드 시스템에서 사용하는 체크리스트로는 확인할 수 없는 다양한 케이스를 생성함을 확인할 수 있었다.
이는 수작업으로 하기 힘든 체계적이고 다양한 조합의 테스트 케이스 생성를 생성 할 수 있는 장점을 의미한다. 본 연구에서 수행한 결과로 제안하는 방법의 효용성을 일반화할 수는 없지만, 그 가능성은 충분히 보여주고 있다.
논문에서 제안한 방법을 구현하였고, 실험을 통해 테스트 케이스를 자동으로 생성할 수 있음을 확인하였다. 생성된 케이스는 의료기기용 임베디드 시스템에서 사용하는 체크리스트로는 확인할 수 없는 다양한 케이스를 생성함을 확인할 수 있었다. 제안한 방법에서 체크리스트를 파싱하여 체계적인 테스트 케이스 생성하는 것은 다른 선행 연구에서는 다루지 못하는 내용이다.
본 논문에서는 한글로 작성된 체크리스트에서 테스트 케이스를 자동으로 생성하는 방법을 제시하였다. 제안된 방법은 임베디드 시스템 테스트 현장에서 일반적으로 사용하는체크리스트 기반 테스트의 단점을 보완할 수 있다.
생성된 테스트 케이스가 해당되는 커버리지를 만족하면서 주어진 체크리스트를 정확히 만족하는 지는 모든 테스트 케이스를 모두 비교하여, 정확히 생성되는 지를 확인하였다. 확인 과정에서 입출력을 기준으로 오류없이 정확히 생성하였음을 확인하였다. 또한 결정, 조건 및 수정된 결정 조건 커버리지 기준으로 생성된 테스트 케이스는 체크리스트에 없는 입력이가해지는 경우에 시스템이 정상 동작하는 지를 검사할 수 있는 항목들을 정확히 포함하고 있었다.
후속연구
이 연구에서는 “진입 시 조건”과 “종료 조건”의 조합을 조건 커버리지(Condition coverage), 결정 커버리지(Decision coverage), 수정된 조건 결정 커버리지(MCDC: Modified Condition and Decision Coverage)와 같은 기준에 맞게 생성하여 테스트 케이스로 사용한다. 또한 동작 모드 별로 다양한 조합을 자동으로 생성하게 하여 모드 간 실행 순서에 따른 시스템 오동작 여부도 검출 할 수 있는 테스트 케이스를 생성한다.
하지만 제안하는 테스트 케이스 방법을 사용하면 테스트 전략에 따라 Table 5와 같이 테스트 목적에 맞는 다양한 테스트 케이스를 생성하여 사용할 수 있을 것이다. 또한, 각 테스트 항목을 사용하였을 경우 출력 정보도 정확히 전달하여 테스트 엔지니어의 오류를 줄일 수 있을 것이다.
제안한 방법을 보완하기 위해서는 연산자 테이블을 보완해야하고, 좀 더 다양한 표현을 파싱 할 수 있는 방안에 대한 지속적인 연구가 필요하다. 또한, 본 논문에서 제시한 테스트 케이스에서 실제 시스템을 테스트 할 수 있는 테스트 스크립트를 자동으로 생성할 수 있는 방법에 대한 연구가 필요하다.
제안한 방법을 보완하기 위해서는 연산자 테이블을 보완해야하고, 좀 더 다양한 표현을 파싱 할 수 있는 방안에 대한 지속적인 연구가 필요하다. 또한, 본 논문에서 제시한 테스트 케이스에서 실제 시스템을 테스트 할 수 있는 테스트 스크립트를 자동으로 생성할 수 있는 방법에 대한 연구가 필요하다.
체크리스트를 사용하던 기존의 방법에서는 체크리스트에 나타난 테스트 항목 수인 80개의 테스트 케이스를 테스트 엔지니어가 사용할 것이다. 하지만 제안하는 테스트 케이스 방법을 사용하면 테스트 전략에 따라 Table 5와 같이 테스트 목적에 맞는 다양한 테스트 케이스를 생성하여 사용할 수 있을 것이다. 또한, 각 테스트 항목을 사용하였을 경우 출력 정보도 정확히 전달하여 테스트 엔지니어의 오류를 줄일 수 있을 것이다.
질의응답
핵심어
질문
논문에서 추출한 답변
고장 트리란 무엇인가?
고장 트리는 오류를 일으키는 원인과 관계를 AND, OR, Priority AND, XOR 등의 논리 연산자를 이용하여 트리 형태로 표현하는 방법이다[14]. 고장 트리를 활용하면 결과 이벤트 중 일부를 오류 발생 상황으로 만들고 이 상황이 발생할 수 있는 시나리오를 고장 트리에서 추적하여 생성할 수 있고 이를 테스트 케이스로 사용한다.
테스트 엔지니어가 체크리스트를 참조하여 테스트 입력을 결정할 때의 문제점은 무엇인가?
이러한 방법은 크게 두 가지 문제점이 있다. 1) 수많은 체크리스트 항목을 보고 테스트 케이스를 작성 도중. 테스터의 실수 또는 판단 착오로 인하여 잘못된 테스트 케이스를 생성할 수 있다. 2) 체크리스트에 작성된 항목은 테스트해야 하는 기능만을 나열하고 있어서, 만들어진 소프트웨어 혹은 시스템이 체크리스트에 없는 입력이 가해지는 이상 상황에서 제대로 동작하는 지를 체계적으로 테스트하기 힘들다. 많은 테스트 방법 및 전략에서는 엔지니어가 생성한 테스트 항목 혹은 시스템 사양에 나타나지 않는 변이 입력 조합에 대해서 테스트하기를 권하고 있다.
엔지니어는 체크리스트에 어떤 항목을 작성하는가?
이와 같은 체계적인 생성 방법 이외에 개발 현장에서 흔히 사용하는 방법이 체크리스트(Checklist)를 작성하여 이를 기반으로 테스트하는 방법이다. 체크리스트는 개발 시스템에 대한 엔지니어의 지식, 과거의 경험, 사용자 피드백 등을 활용하여 테스트하고자 하는 항목을 엔지니어가 작성한다,
참고문헌 (22)
J. Y. Seo, A. Y. Sung, B. J. Choi, and S. B. Kang, "Automating Embedded software Testing on an Emulated Target Board," Proc. of the Second International Workshop on Automation of Software Test, p.9, Aug., 2007.
T. Y. Chen, H. Leung, and I. K. Mak, "Adaptive random testing," In Proceedigns of the 9th Asian Computaing Science Conference, Volum 3321 of Lecture Notes in Computer Science, pp.320-329, 2004.
Kuo Chung Tai and Yu Lei, "A Test Generation Strategy for Pairwise Testing," IEEE Transactions on Software Engineering, Vol.28, No.1, pp.109-111, Jan., 2002.
K. P. Chan, T. Y. Chen, and Dave Towey, "Restricted Random Testing," In Proceedings of the 7th European Conference on Software Quality Helsinki, Finland, Vol.2349/2002 of Lecture Notes in Computer Science, pp.321-330, Jun., 9-13, 2002.
M. Conrad, H. Dorr, I. Fey, and A. Yap, "Model-based Generation and Structured Representation of Test Scenarios," Workshop on Software-Embedded Systems Testing (WSEST), Gaithersburg, USA, Nov., 1999.
P. S. Loo, and W. K. Tsai, "Random Testing Revisited," Information and Software Technology, Vol.30, Issue 7, pp.402-417, Sep., 1988.
T. Y. Chen, F. C. Kuo, Huai Liu, and W. E. Wong, "Does Adaptive Random Testing Deliver a Higher Confidence than Random Testing?," The Eighth International Conference on Quality Software, 2008, QSCI'08, pp.145-154, Aug., 2008.
M. Grochtmann and K. Grimm, "Classification Trees for Partition Testing," Software Testing, Verification & Reliability, Vol.3, No.2, pp.63-82, Jun., 1993.
P. M. Kruse and M. Luniak, "Automated test case generation using classification trees," Software Quality Professional Magazine, Vol.13, No.1, pp.4-12, 2011.
H. S. Park, "Generating Structural Test Cases for MATLAB Stateflow Model Using Rapidly-exploring Random Tree," Ph.D. dissertation, Ajou University, 2014.
M. Utting and B. Legeard, "Practical Model-Based Testing: A Tools Approach," Morgan kaufmann, 2007.
A. P. Mathur, "Foundations of Software Testing," Pearson Education, 2008.
Joseph Schmuller, "Teach yourself UML in 24 Hours, 3/E," SAMS, 2004.
U. S. NRC, "Fault Tree Handbook (NUREG-0492)," US, 1981.
Yu Lei and K. C. Tai, "In-Parameter-Order: A Test Generation Strategy for Pairwise Testing," In Proceedings of the 3rd IEEE International High-Assurance Systems Engineering Symposium, pp.254-261, 1998.
Kang Tae Hoon, Kim Dae Joon, Chung Ki Hyun, and Choi Kyung Hee, "A Method to Automatically Generate Test Scripts from Checklist for Testing Embedded System," KIPS, Vol.5, No.12, pp.641-652, 2016.
GitHub, Inc. [Internet], https://github.com/modamoda/TwitterKoreanProcessorCS.
S. Zhang et al., "Combined Static and Dynamic Automated Test Generation," Proceedings of ISSTA'11, Toronto, Canada, pp.353-363, Jul., 2011.
S. Ananad et. al., "An orchestrated survey of methodologies for automated software test case generation," Journal of Systems and Software, Vol.86, No.8, pp.1978-2001, 2013.
O. Olajubu et. al., "Automated test case generation from domain specific models of high-level requirements," Proceedings of RACS'15, ACM, pp.505-508, Oct., 2015.
Dae Joon Kim, Ki Hyun Chung, and Kyung Hee Choi, "A Hierarchical Checklist to Automatically Generate Test Scripts," KIPS Tr. Software and Data Eng., Vol.6, No.5, pp.245-257, 2017.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.