본문으로 건너뛰기

"Automated Software Repair" 태그로 연결된 2개 게시물개의 게시물이 있습니다.

모든 태그 보기

GenProg: A Generic Method for Automatic Software Repair

· 약 4분
Claire Le Goues
Thanh Vu Nguyen
Stephanie Forrest
Westley Weimer

논문 정보

  • 제목: GenProg: A Generic Method for Automatic Software Repair
  • 저자: Claire Le Goues, Thanh Vu Nguyen, Stephanie Forrest, Westley Weimer (University of Virginia, University of New Mexico)
  • 학회/저널: IEEE Transactions on Software Engineering (Vol. 38, No. 1, 2012)
  • 발행일: 2012-01-01
  • DOI: 10.1109/TSE.2011.104
  • 주요 연구 내용: 공식적인 명세(Specification)가 없는 기성(off-the-shelf) C 프로그램의 결함을 수정하기 위해, 유전 프로그래밍(Genetic Programming)을 확장하여 자동화된 수정을 생성하는 기법인 GenProg를 제안함. 기존 테스트 케이스를 활용해 결함과 필수 기능을 정의하고, AST(추상 구문 트리) 수준에서 유전 연산(변경, 교차)을 수행하여 수정한 뒤 델타 디버깅으로 최소한의 패치를 생성함.
  • 주요 결과 및 결론: 총 125만 줄(LOC)에 달하는 16개의 오픈 소스 프로그램(웹 서버, 미디어 플레이어 등)에서 8가지 유형의 결함을 대상으로 실험한 결과, 평균 357초 만에 수리에 성공함. 생성된 패치는 입력 암기(Input Memorization) 방식이 아닌 실제 결함을 해결하는 일반적인 수정본임이 검증됨.
  • 기여점: 주석이나 특수 코딩 관행 없이도 실제 레거시 소프트웨어에 적용 가능한 최초의 범용 자동 수리 방법을 입증했으며, 유전 프로그래밍을 소프트웨어 유지보수 영역으로 확장함.

Repairing Order-Dependent Flaky Tests via Test Generation

· 약 7분
Chengpeng Li
Chenguang Zhu
Wenxi Wang
August Shi

논문 정보

  • 제목: Repairing Order-Dependent Flaky Tests via Test Generation
  • 저자: Chengpeng Li, Chenguang Zhu, Wenxi Wang, and August Shi (The University of Texas at Austin)
  • 학회/저널: 2022 IEEE/ACM 44th International Conference on Software Engineering (ICSE)
  • 발행일: 2022-05-21
  • DOI: https://doi.org/10.1145/3510003.3510173
  • 주요 연구 내용: 순서 의존적(order-dependent) 결함 테스트 복구를 위한 자동화 기법 ODRepair 제안. 이 기법은 먼저 테스트 실패를 유발하는 오염된 공유 상태(polluted shared state)를 식별하고, 이후 자동화된 테스트 생성 도구(Randoop)를 활용하여 해당 상태를 리셋(reset)하는 '클리너(cleaner)' 코드(메서드 호출 시퀀스)를 생성함.
  • 주요 결과 및 결론: 327개의 순서 의존적 테스트 대상 평가. ODRepair는 181개 테스트에서 오염된 정적 필드(static field)를 식별했으며, 이 중 141개의 테스트에 대한 패치를 성공적으로 생성함. 기존 SOTA 기법인 iFixFlakies가 복구하지 못하는 24개의 테스트를 ODRepair가 복구함.
  • 기여점:
    1. 기존에 '클리너' 테스트가 없는 경우에도 테스트 생성을 통해 순서 의존적 테스트를 복구하는 새로운 접근법 제시.
    2. 오염된 공유 힙 상태(heap-state), 특히 정적 필드를 자동으로 식별하는 'Debugger' 컴포넌트 개발.
    3. 'Generator' 컴포넌트를 통해 테스트 생성 도구를 가이드하여 리셋 메서드를 호출하고 패치를 생성하는 방법론 구현.