관리 메뉴

ITGeine

Concolic Testing 본문

테스트 자동화

Concolic Testing

Nick9 2018. 2. 11. 20:30

2017 BESTCon (Better Software Testing Conference) 를 다녀온 후, AI 를 활용한 UI 기반 자동 테스팅 기법을 알게 되었다.

그러나 UI기반으로 테스팅이 이루어질 경우,  Black-box 테스팅을 과연 의미있게 할수 있을지? 라는 의구심이 들었고. (기능 테스트가 아닌 단순 UI테스트가 진행될 것으로 보임)코드 기반 자동 테스팅을 수행하는 기법을 찾아보았다. (자동 테스팅 != AI)

 

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