Identifying Patch Correctness in Test-Based Program Repair
arXiv:1706.09120 · doi:10.1145/3180155.3180182
Abstract
Test-based automatic program repair has attracted a lot of attention in recent years. However, the test suites in practice are often too weak to guarantee correctness and existing approaches often generate a large number of incorrect patches. To reduce the number of incorrect patches generated, we propose a novel approach that heuristically determines the correctness of the generated patches. The core idea is to exploit the behavior similarity of test case executions. The passing tests on original and patched programs are likely to behave similarly while the failing tests on original and patched programs are likely to behave differently. Also, if two tests exhibit similar runtime behavior, the two tests are likely to have the same test results. Based on these observations, we generate new test inputs to enhance the test suites and use their behavior similarity to determine patch correctness. Our approach is evaluated on a dataset consisting of 139 patches generated from existing program repair systems including jGenProg, Nopol, jKali, ACS and HDRepair. Our approach successfully prevented 56.3\% of the incorrect patches to be generated, without blocking any correct patches.
arXiv commentICSE 2018
References in corpus (3)
Cited by in corpus (26)
- TBar: Revisiting Template-based Automated Program Repair
- On the Efficiency of Test Suite based Program Repair: A Systematic Assessment of 16 Automated Repair Systems for Java Programs
- Ultra-Large Repair Search Space with Automatically Mined Templates: the Cardumen Mode of Astor
- iFixR: Bug Report driven Program Repair
- SelfAPR: Self-supervised Program Repair with Test Execution Diagnostics
- Automated Classification of Overfitting Patches with Statically Extracted Code Features
- Automated Patch Assessment for Program Repair at Scale
- PatchNet: Hierarchical Deep Learning-Based Stable Patch Identification for the Linux Kernel
- Astor: Exploring the Design Space of Generate-and-Validate Program Repair beyond GenProg
- Invalidator: Automated Patch Correctness Assessment via Semantic and Syntactic Reasoning
- The Remarkable Role of Similarity in Redundancy-based Program Repair
- ObjSim: Lightweight Automatic Patch Prioritization via Object Similarity
- Is this Change the Answer to that Problem? Correlating Descriptions of Bug and Code Changes for Evaluating Patch Correctness
- An Empirical Study of Fault Localization Families and Their Combinations
- Accelerating Patch Validation for Program Repair with Interception-Based Execution Scheduling
- Evaluating Representation Learning of Code Changes for Predicting Patch Correctness in Program Repair
- Test-based Patch Clustering for Automatically-Generated Patches Assessment
- Beep: Fine-grained Fix Localization by Learning to Predict Buggy Code Elements
- Estimating the Potential of Program Repair Search Spaces with Commit Analysis
- Validation of Automatically Generated Patches: An Appetizer
- Interactive Patch Filtering as Debugging Aid
- Practical Program Repair via Bytecode Mutation
- Obstacles in Fully Automatic Program Repair: A survey
- You Cannot Fix What You Cannot Find! An Investigation of Fault Localization Bias in Benchmarking Automated Program Repair Systems
- On Reliability of Patch Correctness Assessment
- Show Me Why It's Correct: Saving 1/3 of Debugging Time in Program Repair with Interactive Runtime Comparison