ITGeine
Concolic Testing 본문
2017 BESTCon (Better Software Testing Conference) 를 다녀온 후, AI 를 활용한 UI 기반 자동 테스팅 기법을 알게 되었다.
CONCOLIC?
•CONCrete + SymbOLIC : symbolic한 실행과 concrete 실행을 함께 사용하는 기술
•주어진 소스코드를 기반으로 높은 커버리지를 달성하는 테스트 케이스를 자동으로 생성하는 테스팅 기법
•Input : 소스 코드
•Output : 수만 개의 테스트 케이스
•Dynamic symbolic execution, white-box fuzzing 등으로도 불림
Limit of Conventional Testing
•낮은 비용으로 찾기 쉬운 버그의 발견 (Low cost, easy-to-detect)
•정적 분석 툴 (Static analyzer) - Coverity, Sparrow, Findbugs
•코딩 규칙 검사(Secure coding-rule checker) - MISRA C, CERT C Coding standard, CERT Oracle secure coding standard
•Various Random - Suresoft codescroll
•뚜렷하게 명시되지 않은 precondition들을 고려한 테스트 케이스 생성 문제
•복잡한 반복문과 제어 구조를 갖는 유닛의 가능한 실행 경로를 파악하는 작업의 높은 난이도
•실행 가능 경로를 구한 뒤, 각 실행 경로를 따라가는 입력 값을 만드는 작업의 높은 난이도
• Concrete execution
실제 값을 대입해 프로그램을 실행
-> 일상적으로 프로그램을 실행하는 것. 구체적인 입력 값이 있음
• Symbolic execution
프로그램 변수가 특정한 값을 가지지 않고 x, y, z와 같은 미지수(symbol)로 프로그램을 실행
-> symbolic 한 결과를 가지고 concrete 한 입력값을 생성함
==> 테스트 케이스!
==> symbolic 결과를 만족하는 값은 모든 input 값이 됨
Concolic Testing Tools
•CREST
─Target : C
•KLEE
─Target : LLVM
•PEX
─Target : C#
•Java Pathfinder
─Target : JAVA
이러한 Automatic Testing 기법을 실제 코드에 적용하려 시도 했으나 실패했다.
대상은 학부생 때 개발한 간단한 게임이었고, Java Pathfinder 로 도전했다.
-> 실험 대상 선정의 미스 : 이러한 자동 케이스 생성은 비즈니스 로직과 같이 복잡한 분기 처리 등이 포함되었을 경우 의미가 있다.
UI 기반으로 수행하는 것은 의미가 없음
-->추후 재도전 필요함
-> 오픈소스 가이드 X : 해당 라이브러리를 사용하기 위해서는 먼저 이해가 필요했음.
가이드 등이 없어 적용이 힘들었다.
'테스트 자동화' 카테고리의 다른 글
Postman test script (0) | 2019.11.05 |
---|