Test-equivalence analysis for automatic patch generation

  • Sergey Mechtaev
  • , Xiang Gao
  • , Shin Hwei Tan*
  • , Abhik Roychoudhury
  • *Corresponding author for this work

Research output: Contribution to journalArticlepeer-review

Abstract

Automated program repair is a problem of finding a transformation (called a patch) of a given incorrect program that eliminates the observable failures. It has important applications such as providing debugging aids, automatically grading student assignments, and patching security vulnerabilities. A common challenge faced by existing repair techniques is scalability to large patch spaces, since there are many candidate patches that these techniques explicitly or implicitly consider. The correctness criteria for program repair is often given as a suite of tests. Current repair techniques do not scale due to the large number of test executions performed by the underlying search algorithms. In this work, we address this problem by introducing a methodology of patch generation based on a test-equivalence relation (if two programs are “test-equivalent” for a given test, they produce indistinguishable results on this test). We propose two test-equivalence relations based on runtime values and dependencies, respectively, and present an algorithm that performs on-the-fly partitioning of patches into test-equivalence classes. Our experiments on real-world programs reveal that the proposed methodology drastically reduces the number of test executions and therefore provides an order of magnitude efficiency improvement over existing repair techniques, without sacrificing patch quality.

Original languageEnglish
Article number15
JournalACM Transactions on Software Engineering and Methodology
Volume27
Issue number4
DOIs
StatePublished - Oct 2018
Externally publishedYes

UN SDGs

This output contributes to the following UN Sustainable Development Goals (SDGs)

  1. SDG 3 - Good Health and Well-being
    SDG 3 Good Health and Well-being

Keywords

  • Dynamic program analysis
  • Program repair
  • Program synthesis

Fingerprint

Dive into the research topics of 'Test-equivalence analysis for automatic patch generation'. Together they form a unique fingerprint.

Cite this