Skip to main content
QUICK REVIEW

[논문 리뷰] Selecting Fault Revealing Mutants

Thierry Titcheu Chekam, Mike Papadakis|arXiv (Cornell University)|2018. 03. 21.
Software Testing and Debugging Techniques참고 문헌 7인용 수 5
한 줄 요약

이 논문은 테스트 실행 이전에 제어 흐름 구조, 코드 복잡도, 데이터 종속성과 같은 정적 프로그램 특징을 사용하여 결함을 드러내는 변종을 선택하고 우선순위를 정하는 기계학습 기반 접근법인 FaRM을 제안한다. FaRM은 랜덤 선택, 선택적 변종 생성, 결함 예측 방법보다 실제 결함을 23%에서 34% 더 많이 드러내며, 최소한의 런타임 오버헤드로 변종 테스팅의 효율성과 효과성을 크게 향상시킨다.

ABSTRACT

Mutant selection refers to the problem of choosing, among a large number of mutants, the (few) ones that should be used by the testers. In view of this, we investigate the problem of selecting the fault revealing mutants, i.e., the mutants that are most likely to be killable and lead to test cases that uncover unknown program faults. We formulate two variants of this problem: the fault revealing mutant selection and the fault revealing mutant prioritization. We argue and show that these problems can be tackled through a set of 'static' program features and propose a machine learning approach, named FaRM, that learns to select and rank killable and fault revealing mutants. Experimental results involving 1,692 real faults show the practical benefits of our approach in both examined problems. Our results show that FaRM achieves a good trade-off between application cost and effectiveness (measured in terms of faults revealed). We also show that FaRM outperforms all the existing mutant selection methods, i.e., the random mutant sampling, the selective mutation and defect prediction (mutating the code areas pointed by defect prediction). In particular, our results show that with respect to mutant selection, our approach reveals 23% to 34% more faults than any of the baseline methods, while, with respect to mutant prioritization, it achieves higher average percentage of revealed faults with a median difference between 4% and 9% (from the random mutant orderings).

연구 동기 및 목표

  • 생성되는 변종의 수가 많아 발생하는 변종 테스팅의 확장성 문제를 해결하기 위해.
  • 테스트 실행 이전에 실제 알 수 없는 프로그램 결함을 드러내는 '결함 드러내는' 변종으로서 가장 가능성 높은 변종을 식별하고 우선순위를 정하기 위해.
  • 초기 선택을 위해 테스트 세트나 변종 실행에 의존하지 않는 경량의 정적 분석 기반 방법을 개발하기 위해.
  • 결함 제거 가능성과 결함 드러냄과 관련된 프로그램 특징을 기반으로 기계학습을 활용하여 변종 선택 및 우선순위 정렬을 향상시키기 위해.
  • 수동 작업을 줄이고 실제 소프트웨어 테스팅에서 결함 탐지 능력을 향상시키는 실용적이고 확장 가능한 솔루션을 제공하기 위해.

제안 방법

  • FaRM는 제어 흐름 그래프 내 변종 위치, 코드 복잡도 메트릭, 제어/데이터 종속성과 같은 정적 프로그램 특징을 사용하여 변종를 특성화한다.
  • 이 방법은 변종가 죽을 가능성이 높거나 동등한 것으로 분류되고, 실제 결함을 드러낼 가능성이 높은지 분류하기 위해 지도 기계학습을 적용한다.
  • 특징은 테스트 케이스나 변종 실행 없이 소스 코드와 변종 표현에서 추출된다.
  • 모델은 이전에 테스트된 소프트웨어 프로젝트 또는 이전 릴리스의 역사적 데이터를 기반으로 훈련되어 새로운 시스템에 대한 전이 학습을 가능하게 한다.
  • 변종 우선순위 정하기를 위해 FaRM은 예측된 결함 드러냄 잠재력에 따라 변종을 순위 매긴다. 이를 통해 테스터는 우선 고가치 변종부터 집중할 수 있다.
  • 성능 평가를 위해 FaRM은 1,692개의 실제 결함과 45개의 결함 있는 프로그램 버전에서 10겹 교차 검증을 사용한다.

실험 결과

연구 질문

  • RQ1정적 프로그램 특징이 얼마나 효과적으로 죽을 가능성이 높고 실제 결함을 드러내는 변종를 예측할 수 있는가?
  • RQ2FaRM의 변종 선택 성능은 랜덤 선택, 선택적 변종 생성, 결함 예측 기반 방법과 비교해 실제 결함을 드러내는 데서 어떻게 다른가?
  • RQ3FaRM은 결함 탐지 능력을 유지하거나 향상시키면서 분석 대상 변종 수를 얼마나 줄일 수 있는가?
  • RQ4테스트 실행 예산이 제한된 상황에서 FaRM은 테스트 케이스 수를 줄이며 결함 드러냄을 최대화할 수 있도록 변종을 우선순위 정렬할 수 있는가?
  • RQ5FaRM은 훈련 데이터로 사용된 관련 없는 프로젝트와는 다를 수 있는 다양한 소프트웨어 시스템과 결함 유형으로도 일반화 가능한가?

주요 결과

  • FaRM는 랜덤 변종 샘플링, 선택적 변종 생성, 결함 예측 기반 변종 생성과 같은 기준 방법보다 실제 결함을 23%에서 34% 더 많이 드러낸다.
  • 변종 우선순위 정렬에서 FaRM는 랜덤 변종 순서와 비교해 결함 드러냄 비율에 대해 중앙값 기준 4%에서 9%의 개선을 달성한다.
  • FaRM는 변종 선택 및 우선순위 정렬 모두에서 모든 기준 방법보다 통계적으로 유의미한 개선을 달성한다.
  • 1,692개의 실제 결함과 45개의 결함 있는 프로그램 버전에서 10겹 교차 검증을 통해 검증된 바와 같이 FaRM의 성능은 다양한 소프트웨어 시스템에서 뛰어난 안정성을 보인다.
  • 테스트 실행이나 동적 분석을 요구하지 않는 정적 특징만을 사용함으로써 FaRM는 테스팅 파이프라인의 조기에 적용 가능해 총 비용을 줄일 수 있다.
  • 이 연구는 정적 코드 성질을 기반으로 결함 드러내는 변종를 효과적으로 예측할 수 있음을 입증하며, 실행 이전 변종 선택에 기계학습을 적용할 수 있음을 뒷받침한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.