Skip to main content
QUICK REVIEW

[논문 리뷰] Causal testing: understanding defects' root causes

Brittany Johnson, Yuriy Brun|arXiv (Cornell University)|2020. 06. 27.
Software Engineering Research참고 문헌 74인용 수 17
한 줄 요약

Causal Testing는 소프트웨어 결함의 진정한 원인을 드러내는 실행을 식별하는 데에 반사적 원인관계를 사용하는 새로운 루트 코스 분석 방법이다. Defects4J에서 평가한 결과, 개발자가 루트 코스를 특정한 데서 표준 도구보다 80%에서 86%로 향상되어 디버깅 효율성 향상이 뚜렷하게 입증되었다.

ABSTRACT

Understanding the root cause of a defect is critical to isolating and repairing buggy behavior. We present Causal Testing, a new method of root-cause analysis that relies on the theory of counterfactual causality to identify a set of executions that likely hold key causal information necessary to understand and repair buggy behavior. Using the Defects4J benchmark, we find that Causal Testing could be applied to 71% of real-world defects, and for 77% of those, it can help developers identify the root cause of the defect. A controlled experiment with 37 developers shows that Causal Testing improves participants' ability to identify the cause of the defect from 80% of the time with standard testing tools to 86% of the time with Causal Testing. The participants report that Causal Testing provides useful information they cannot get using tools such as JUnit. Holmes, our prototype, open-source Eclipse plugin implementation of Causal Testing, is available at http://holmes.cs.umass.edu/.

연구 동기 및 목표

  • 효율적인 디버깅을 위해 필수적인 소프트웨어 결함의 원인을 규명하는 데 도전하는 것.
  • 디버깅을 위해 디버깅에 소요되는 시간과 노력을 줄이기 위해 표적화된 원인 실행 추적을 제공하는 것.
  • JUnit과 같은 표준 테스팅 도구에서는 확보할 수 없는 원인적 통찰을 드러내는 방법을 개발하는 것.
  • 실제 소프트웨어 결함에서 원인 분석의 효과성을 실증 기준을 통해 평가하는 것.

제안 방법

  • 결함의 원인 요인을 규명하기 위해 프로그램 실행을 분석하는 데에 반사적 원인관계 이론을 적용한다.
  • 결함의 유무에 따라 다를 뿐 다른 점이 없는 실행 집합을 생성하여 원인 변수를 고립한다.
  • 원인 분석을 개발 워크플로우에 통합하기 위해 프로토타입 Eclipse 플러그인인 Holmes를 사용한다.
  • 결함을 유발하거나 방지하는 최소 조건의 집합을 식별하기 위해 실행을 분석한다.
  • 디버깅에 가장 관련성이 높은 원인 정보를 드러내는 실행을 우선순위에 따라 정렬한다.
  • 실행 간 비교를 통해 원인적 차이점을 특정하기 위해 추적 분석 기법을 활용한다.

실험 결과

연구 질문

  • RQ1표준 테스팅 도구보다 Causal Testing가 실제 소프트웨어 결함의 원인을 더 효과적으로 규명할 수 있는가?
  • RQ2개발자 정확도 측면에서 Causal Testing는 전통적 디버깅 방법보다 어떻게 비교되는가?
  • RQ3JUnit과 같은 표준 도구에서는 제공하지 못하는 Causal Testing의 원인적 정보는 어떤 것인가?

주요 결과

  • Causal Testing는 Defects4J 벤치마크의 실제 결함 71%에 적용 가능했다.
  • 적용 가능한 결함의 77%에 대해 Causal Testing가 개발자가 루트 코스를 특정하는 데에 도움을 주었다.
  • 통제 실험에서 Causal Testing를 사용한 개발자는 86%의 경우에 루트 코스를 특정했으며, 표준 도구를 사용한 경우는 80%였다.
  • 참가자들은 Causal Testing가 JUnit이나 유사 도구에서는 확보할 수 없는 통찰을 제공했다고 보고했다.
  • 오픈소스 Eclipse 플러그인인 Holmes 프로토타입은 원인 테스팅을 실제 개발 환경에 성공적으로 통합했다.
  • 이 방법은 실용적 타당성과 디버깅 효율성 향상의 명백한 개선 효과를 입증했다.

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

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

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

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