kirancodes.me
To Proof Maintenance & Beyond!

Has the bug really been fixed?

Zhongxian Gu, Earl T. Barr, David J. Hamilton, Zhendong Su

Abstract

Software has bugs, and fixing those bugs pervades the software engineering process. It is folklore that bug fixes are often buggy themselves, resulting in bad fixes, either failing to fix a bug or creating new bugs. To confirm this folklore, we explored bug databases of the Ant, AspectJ, and Rhino projects, and found that bad fixes comprise as much as 9% of all bugs. Thus, detecting and correcting bad fixes is important for improving the quality and reliability of software. However, no prior work has systematically considered this bad fix problem, which this paper introduces and formalizes. In particular, the paper formalizes two criteria to determine whether a fix resolves a bug: coverage and disruption. The coverage of a fix measures the extent to which the fix correctly handles all inputs that may trigger a bug, while disruption measures the deviations from the program's intended behavior after the application of a fix. This paper also introduces a novel notion of distance-bounded weakest precondition as the basis for the developed practical techniques to compute the coverage and disruption of a fix.

BibTeX
@inproceedings{Gu-al:ICSE10,
  author    = {Zhongxian Gu and
               Earl T. Barr and
               David J. Hamilton and
               Zhendong Su},
  title     = {Has the bug really been fixed?},
  booktitle = {ICSE (Part I)},
  pages     = {55--64},
  publisher = {{ACM}},
  year      = {2010},
}

Related papers