A Survey of Test Based Automatic Program Repair

  title={A Survey of Test Based Automatic Program Repair},
  author={Yuzhen Liu and Long Zhang and Zhenyu Zhang},
  journal={J. Softw.},
Testing and debugging have always been the most time-consuming parts of the software development procedure and require large amounts of human resources. When a bug is located, manually fixing it to repair the buggy program is still a difficult and laborious task for developers. Hence automatic program repair techniques, especially the test-based approaches, have drawn great attentions in recent years. Researchers have explored and proposed various novel methods and tools, pushing the idea… 

Figures from this paper

Automatic repair of OWASP Top 10 security vulnerabilities: A survey
It is found that there is a significant gap in the coverage of the OWASP Top 10 vulnerabilities, and that the test suites used to test the analyzed approaches are highly inadequate.
Enabling Automatic Repair of Source Code Vulnerabilities Using Data-Driven Methods
  • Anastasiia Grishina
  • Computer Science
    2022 IEEE/ACM 44th International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)
  • 2022
This work proposes ways to improve code representations for vulnerability repair from three perspectives: input data type, data-driven models, and downstream tasks.
CirFix: automatically repairing defects in hardware design code
Overall, CirFix produces plausible repairs for 21/32 and correct repairs for 16/32 of the defect scenarios, indicating CirFix is effective at bringing over the benefits of automated program repair to the hardware domain for the first time.
Test-Based Least Privilege Discovery on Cloud Infrastructure as Code
  • Ryo Shimizu, Hideyuki Kanuka
  • Computer Science
    2020 IEEE International Conference on Cloud Computing Technology and Science (CloudCom)
  • 2020
The proposed algorithm incrementally finds the least privilege by the iteration of testing on the cloud and (re)configuring permissions on the basis of test results, which directly affects the time and cost on cloud to determine least privilege.


Precise Condition Synthesis for Program Repair
A novel program repair system, ACS, that could generate precise conditions at faulty locations and can perform a repair operation that is previously deemed to be too overfitting: directly returning the test oracle to repair the defect.
Efficient Automated Program Repair through Fault-Recorded Testing Prioritization
This work introduces regression test prioritization insight into the area of automated program repair, and presents a novel prioritization technique called FRTP with the goal of reducing the number of test case executions in the repair process.
DirectFix: Looking for Simple Program Repairs
This paper presents a novel semantics-based repair method that generates the simplest patch such that the program structure of the buggy program is maximally preserved and fuses fault localization and repair generation into one step.
Codeflaws: A Programming Competition Benchmark for Evaluating Automated Program Repair Tools
Codeflaws, a set of 3902 defects from 7436 programs automatically classified across 39 defect classes, is presented, referring to different types of fault as defect classes derived from the syntactic differences between a buggy program and a patched program.
A novel co-evolutionary approach to automatic software bug fixing
  • A. Arcuri, X. Yao
  • Computer Science
    2008 IEEE Congress on Evolutionary Computation (IEEE World Congress on Computational Intelligence)
  • 2008
This paper proposes an evolutionary approach to automate the task of fixing bugs based on co-evolution, in which programs and test cases co- evolve, influencing each other with the aim of fixing the bugs of the programs.
SemFix: Program repair via semantic analysis
This paper presents an automated repair method based on symbolic execution, constraint solving and program synthesis, which reports a higher success-rate than genetic programming based repair, and produces a repair faster.
Automatic Program Repair by Fixing Contracts
A fully automatic technique that fixes bugs by proposing changes to contracts (simple executable specification elements such as pre- and postconditions) that relies on dynamic analysis to understand the source of buggy behavior.
Toward Developer-like Automated Program Repair — Modification Comparisons between GenProg and Developers
GenProg's modifications with developers' ones for the same faults are compared and it is found that developers tend to change more different functions, change control flows in sourcecode, and add/delete more code lines.
Automatically finding patches using genetic programming
A fully automated method for locating and repairing bugs in software that works on off-the-shelf legacy applications and does not require formal specifications, program annotations or special coding practices is introduced.
A human study of patch maintainability
This work presents a human study involving over 150 participants, 32 real-world defects, and 40 distinct patches, and proposes a system wherein machine-generated patches are augmented with synthesized, human-readable documentation that summarizes their effects and context.