Practical Program Repair via Bytecode Mutation

07/10/2018
by   Ali Ghanbari, et al.
0

Software debugging is tedious, time-consuming, and even error-prone by itself. So, various automated debugging techniques have been proposed in the literature to facilitate the debugging process. Automated Program Repair (APR) is one of the most recent advances in automated debugging, and can directly produce patches for buggy programs with minimal human intervention. Although various advanced APR techniques (including those that are either search-based or semantic-based) have been proposed, the simplistic mutation-based APR technique, which simply uses pre-defined mutation operators (e.g., changing a>=b into a>b) to mutate programs for finding patches, has not yet been thoroughly studied. In this paper, we implement the first practical bytecode-level APR technique, PraPR, and present the first extensive study on fixing real-world bugs (e.g., Defects4J bugs) using bytecode mutation. The experimental results show that surprisingly even PraPR with only the basic traditional mutators can produce genuine patches for 18 bugs. Furthermore, with our augmented mutators, PraPR is able to produce genuine patches for 43 bugs, significantly outperforming state-of-the-art APR. It is also an order of magnitude faster, indicating a promising future for bytecode-mutation-based APR.

READ FULL TEXT
research
06/09/2023

Reinforcement Learning for Mutation Operator Selection in Automated Program Repair

Automated program repair techniques aim to aid software developers with ...
research
03/01/2023

The Inversive Relationship Between Bugs and Patches: An Empirical Study

Software bugs pose an ever-present concern for developers, and patching ...
research
10/21/2022

DARWIN: Survival of the Fittest Fuzzing Mutators

Fuzzing is an automated software testing technique broadly adopted by th...
research
03/20/2019

TBar: Revisiting Template-based Automated Program Repair

Fix patterns (a.k.a fix templates) are the main ingredients that drive a...
research
02/07/2023

Impact of Combining Syntactic and Semantic Similarities on Patch Prioritization while using the Insertion Mutation Operators

Patch prioritization ranks candidate patches based on their likelihood o...
research
11/07/2022

SLOPT: Bandit Optimization Framework for Mutation-Based Fuzzing

Mutation-based fuzzing has become one of the most common vulnerability d...
research
12/06/2019

FlakiMe: Laboratory-Controlled Test Flakiness Impact Assessment. A Case Study on Mutation Testing and Program Repair

Much research on software testing makes an implicit assumption that test...

Please sign up or login with your details

Forgot password? Click here to reset