Accelerating Patch Validation for Program Repair with Interception-Based Execution Scheduling

05/06/2023
by   Yuan-an Xiao, et al.
0

Long patch validation time is a limiting factor for automated program repair (APR). Though the duality between patch validation and mutation testing is recognized, so far there exists no study of systematically adapting mutation testing techniques to general-purpose patch validation. To address this gap, we investigate existing mutation testing techniques and recognize five classes of acceleration techniques that are suitable for general-purpose patch validation. Among them, mutant schemata and mutant deduplication have not been adapted to general-purpose patch validation due to the arbitrary changes that third-party APR approaches may introduce. This presents two problems for adaption: 1) the difficulty of implementing the static equivalence analysis required by the state-of-the-art mutant deduplication approach; 2) the difficulty of capturing patches' changes to the system state at runtime. To overcome these problems, we propose two novel approaches: 1) execution scheduling, which detects the equivalence between patches online, avoiding the static equivalence analysis and its imprecision; 2) interception-based instrumentation, which intercepts patches' changes to the system state, avoiding a full interpreter and its overhead. Based on the contributions above, we implement ExpressAPR, a general-purpose patch validator for Java that integrates all recognized classes of techniques suitable for patch validation. Our large-scale evaluation with four APR approaches shows that ExpressAPR accelerates patch validation by 137.1x over plain validation or 8.8x over the state-of-the-art approach, making patch validation no longer the time bottleneck of APR. Patch validation time for a single bug can be reduced to within a few minutes on mainstream CPUs.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
08/01/2023

Patch Space Exploration using Static Analysis Feedback

Automated Program Repair (APR) techniques typically rely on a given test...
research
07/22/2020

Fast and Precise On-the-fly Patch Validation for All

Generate-and-validate (G V) automated program repair (APR) techniques ...
research
08/01/2023

Program Repair by Fuzzing over Patch and Input Space

Fuzz testing (fuzzing) is a well-known method for exposing bugs/vulnerab...
research
12/18/2018

AVATA R : Fixing Semantic Bugs with Fix Patterns of Static Analysis Violations

Fix pattern-based patch generation is a promising direction in Automated...
research
12/18/2018

AVATAR : Fixing Semantic Bugs with Fix Patterns of Static Analysis Violations

Fix pattern-based patch generation is a promising direction in Automated...
research
11/30/2019

Validation of Automatically Generated Patches: An Appetizer

In the context of test case based automated program repair (APR), the re...
research
05/15/2021

How Does Regression Test Selection Affect Program Repair? An Extensive Study on 2 Million Patches

APR techniques can be extremely time consuming since (1) a large number ...

Please sign up or login with your details

Forgot password? Click here to reset