위키득계정 ↗
기술

Randoop

Randoop기술
대상 언어
Java
출력
JUnit 테스트
생성 방식
실행 피드백 기반 무작위 생성
활용
결함 탐색과 회귀 테스트
Randoop는 Java 클래스의 단위 테스트를 JUnit 형식으로 자동 생성하는 도구다. 메서드와 생성자 호출 시퀀스를 만들고 실행 결과를 다음 생성에 활용한다.

호출을 이어 붙이는 생성

객체를 생성한 뒤 메서드를 호출하는 순서에 따라 프로그램의 행동이 달라질 수 있다. Randoop는 이런 호출 시퀀스를 생성하고 직접 실행한다. 실행에서 얻은 피드백을 활용해 다음 테스트 생성을 진행하는 것이 핵심이다.

관찰한 행동을 기록

생성한 호출과 실행 결과를 바탕으로 단언문을 포함한 테스트를 만든다. 현재 행동을 기록하는 회귀 테스트는 이후 변경으로 결과가 달라졌는지 알려 줄 수 있다. 다만 현재 결과에 기존 오류가 있다면 그 행동을 기록했을 가능성도 검토해야 한다.

생성 결과의 활용 범위

자동 생성은 사람이 생각하지 못한 호출 조합을 탐색하는 데 도움이 된다. 반면 업무 요구 사항이 무엇인지를 도구가 스스로 결정하지는 않는다. 오류 발견용 결과와 회귀용 결과를 목적에 맞게 살펴보고, 생성된 검사가 실제로 유용한지 확인한다.

관련 문서

EvoSuite / Pynguin / Jazzer / Java PathFinder