scispace - formally typeset
Proceedings ArticleDOI

Automatically finding patches using genetic programming

TLDR
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.
Abstract
Automatic program repair has been a longstanding goal in software engineering, yet debugging remains a largely manual process. We introduce a fully automated method for locating and repairing bugs in software. The approach works on off-the-shelf legacy applications and does not require formal specifications, program annotations or special coding practices. Once a program fault is discovered, an extended form of genetic programming is used to evolve program variants until one is found that both retains required functionality and also avoids the defect in question. Standard test cases are used to exercise the fault and to encode program requirements. After a successful repair has been discovered, it is minimized using structural differencing algorithms and delta debugging. We describe the proposed method and report experimental results demonstrating that it can successfully repair ten different C programs totaling 63,000 lines in under 200 seconds, on average.

read more

Content maybe subject to copyright    Report

Citations
More filters
Journal ArticleDOI

GenProg: A Generic Method for Automatic Software Repair

TL;DR: This paper describes GenProg, an automated method for repairing defects in off-the-shelf, legacy programs without formal specifications, program annotations, or special coding practices, and analyzes the generated repairs qualitatively and quantitatively to demonstrate the process efficiently produces evolved programs that repair the defect.
Proceedings ArticleDOI

A practical guide for using statistical tests to assess randomized algorithms in software engineering

TL;DR: It is shown that randomized algorithms are used in a significant percentage of papers but that, in most cases, randomness is not properly accounted for, which casts doubts on the validity of most empirical results assessing randomized algorithms.
Proceedings ArticleDOI

SemFix: program repair via semantic analysis

TL;DR: 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.
Proceedings ArticleDOI

A systematic study of automated program repair: fixing 55 out of 105 bugs for $8 each

TL;DR: This paper evaluates GenProg, which uses genetic programming to repair defects in off-the-shelf C programs, and proposes novel algorithmic improvements that allow it to scale to large programs and find repairs 68% more often.
Proceedings ArticleDOI

Automatic patch generation learned from human-written patches

TL;DR: A novel patch generation approach, Pattern-based Automatic program Repair (Par), using fix patterns learned from existing human-written patches to generate program patches automatically, which is more acceptable than GenProg.
References
More filters
Book

Genetic Programming: On the Programming of Computers by Means of Natural Selection

TL;DR: This book discusses the evolution of architecture, primitive functions, terminals, sufficiency, and closure, and the role of representation and the lens effect in genetic programming.

Introduction to Evolutionary Computing

TL;DR: In the second edition, the authors have reorganized the material to focus on problems, how to represent them, and then how to choose and design algorithms for different representations as discussed by the authors.
Book

Introduction to evolutionary computing

TL;DR: The authors have reorganized the material to focus on problems, how to represent them, and then how to choose and design algorithms for different representations, and added a chapter on evolutionary robotics with an outlook on possible exciting developments in this field.
Journal ArticleDOI

Prioritizing test cases for regression testing

TL;DR: Test case prioritization techniques schedule test cases for execution in an order that attempts to increase their effectiveness at meeting some performance goal as discussed by the authors, such as rate of fault detection, a measure of how quickly faults are detected within the testing process.
Journal ArticleDOI

An empirical study of the reliability of UNIX utilities

TL;DR: The following section describes the tools built to test the utilities, including the fuzz (random character) generator, ptyjig (to test interactive utilities), and scripts to automate the testing process.
Related Papers (5)