Papers/Others

Feedback-directed Random Test Generation

tomato13 2011. 2. 6. 14:46

http://people.csail.mit.edu/cpacheco/publications/feedback-random.pdf


논문에서는 unit test case를 자동으로 생성하고 수행하기 위한 방안으로 random test를 사용한다. 즉, 임의의 API를 무작위로 선정하여 그 입력 파라미터 또한 임의의 값을 넣게 되는 것이다. 논문에서 소개하는 RANDOOP라는 도구가 생성하는 unit test case는 여러개 API 조합으로 구성이 되고 각각 API들의 입력 파라미터는 이전에 호출된 API의 반환값을 사용하게 된다. 즉,예로 아래와 같이 TC가 생성되는 것이다.

b = Func1(a)             // (1)

c = Func2(b)

d = Func3(c)

.........


그런데 RANDOOP라는 도구는 마냥 무작위로 API들을 조합하는 것은 아니다. 만일 위의 tc코드 (1)에서 exception등의 문제가 발생하는 것을 확인하게 되면 더이상의 조합작업을 진행하지 않게 된다.

(이미 문제가 발생한 상태에서 API를 조합하는 것을 무의미하게 보는 것이다.)


이렇게 조합을 더이상 진행하지 않는 조건은 다음과 같다.

1. Equality : 

예를 들어 위 tc코드 (1)에서 반환된 b가 object일 경우에 만일 b.equal(b)가 false가 되면 문제가 있는 것으로 간주한다.

(http://blog.daum.net/jhmoon77/17455474)

2. Null : 

반환값이 null인 경우에 대한 check가 진행되지 않고 null dereference exception이 발생하는 경우이다.

3. Exception:

exception error가 발생하는 경우이다.