주요 연구 내용: 공식적인 명세(Specification)가 없는 기성(off-the-shelf) C 프로그램의 결함을 수정하기 위해, 유전 프로그래밍(Genetic Programming)을 확장하여 자동화된 수정을 생성하는 기법인 GenProg를 제안함. 기존 테스트 케이스를 활용해 결함과 필수 기능을 정의하고, AST(추상 구문 트리) 수준에서 유전 연산(변경, 교차)을 수행하여 수정한 뒤 델타 디버깅으로 최소한의 패치를 생성함.
주요 결과 및 결론: 총 125만 줄(LOC)에 달하는 16개의 오픈 소스 프로그램(웹 서버, 미디어 플레이어 등)에서 8가지 유형의 결함을 대상으로 실험한 결과, 평균 357초 만에 수리에 성공함. 생성된 패치는 입력 암기(Input Memorization) 방식이 아닌 실제 결함을 해결하는 일반적인 수정본임이 검증됨.
기여점: 주석이나 특수 코딩 관행 없이도 실제 레거시 소프트웨어에 적용 가능한 최초의 범용 자동 수리 방법을 입증했으며, 유전 프로그래밍을 소프트웨어 유지보수 영역으로 확장함.
주요 연구 내용: 순서 의존적(order-dependent) 결함 테스트 복구를 위한 자동화 기법 ODRepair 제안. 이 기법은 먼저 테스트 실패를 유발하는 오염된 공유 상태(polluted shared state)를 식별하고, 이후 자동화된 테스트 생성 도구(Randoop)를 활용하여 해당 상태를 리셋(reset)하는 '클리너(cleaner)' 코드(메서드 호출 시퀀스)를 생성함.
주요 결과 및 결론: 327개의 순서 의존적 테스트 대상 평가. ODRepair는 181개 테스트에서 오염된 정적 필드(static field)를 식별했으며, 이 중 141개의 테스트에 대한 패치를 성공적으로 생성함. 기존 SOTA 기법인 iFixFlakies가 복구하지 못하는 24개의 테스트를 ODRepair가 복구함.
기여점:
기존에 '클리너' 테스트가 없는 경우에도 테스트 생성을 통해 순서 의존적 테스트를 복구하는 새로운 접근법 제시.
오염된 공유 힙 상태(heap-state), 특히 정적 필드를 자동으로 식별하는 'Debugger' 컴포넌트 개발.
'Generator' 컴포넌트를 통해 테스트 생성 도구를 가이드하여 리셋 메서드를 호출하고 패치를 생성하는 방법론 구현.