2016년 1월 6일 수요일

동적 분기 커버리지를 위한 테스트 데이터 자동 생성

많은 목적 지향 테스트 데이터 생성 방법들이 진화 알고리즘 (Evolutionary Algorithm, EA) 에 바탕을 두고 있습니다 .  진화 알고리즘은 자연세계의 진화과정을 모델링하여 복잡한 실세계의 문제를 해결하고자 하는 계산모델입니다 .  진화 알고리즘은 구조가 간단하고 방법이 일반적이어서 응용범위가 매우 넓으며 ,  특히 적응적 탐색과 학습 및 최적화를 통한 공학적인 문제의 해결에 많이 이용되고 있습니다 .  진화 알고리즘을 이용하여 테스트 데이터를 생성하는 방법을 진화 테스팅 (Evolutionary Testing, ET) 라 합니다 .

ET 는 후보 테스트 데이터와 원하는 테스트 데이터간의 차이를 평가하기 위해 적합성 함수 (fitness function) 를 이용합니다 [3].  예를 들면 ,  어떤 프로그램에서  x==5 인 분기 조건이 참이 되게 하는 테스트 데이터를 구하는 문제를 생각해 봅니다 .  이와 같은 분기 조건은  F(x) = |5-x| 와 같은 함수로 간주합니다 .  이때 함수  F(x) 를 최소화하는 입력 데이터  x 는 분기 조건  x==5 를 참이 되게 하는 입력 값이 원하는 테스트 데이터가 됩니다 .  여기에서 분기 조건  x==5 의 분기 거리 (branch distance) 는  |5-x| 로 정의되며 해당 분기가 참이 되기 위해 얼마나 가까이 접근했는지를 나타냅니다 .  예를 들면  x 가  7 과  10 을 각각 가졌을 경우에 분기 거리는  2 와  5 가 됩니다 .  이는  x 가  7 일 때  10 인 경우 보다 분기 조건  x==5 을 참이 되게 하는 경우에 보다 더 가까이 접근했음을 의미합니다 .  만약 탐색 알고리즘이  10 을 먼저 생성하였다면 이를 감소하는 방향으로 탐색을 진행할 것입니다 .

댓글 없음 :

댓글 쓰기