: Mijung Kim, Saurabh Sinha, Carsten G¨org, Hina Shah, Mary Jean Harrold, and Mangala Gowri NandaVenue
: 2010 Third International Conference on Software Testing, Verification and ValidationDate
This paper examines a system which can automatically detect incomplete bug fixes in a program. Often, a bug fix can expose hidden bugs which weren't able to manifest themselves because of the previous bug. This paper shows how neighborhoods of these hidden bugs can be automatically found. Three open source projects(Ant, Lucene, Tomcat) and three industry projects were evaluated for incomplete bug fixes and results were given.
The type of error being detected in this paper are NPA(null-pointer assignment) errors. NPA errors can cause runtime exceptions in Java programs if the variable is dereferenced. When a variable containing null is dereferenced it is called a null-pointer dereference (NPR). This paper examines what happens when multiple NPR errors exist in a chain within a program. For example, if NPR1 comes before NPR2 then once NPR1 is fixed NPR2 still exists as an error in the program. Fixing NPR1 without fixing NPR2 is considered an incomplete fix.
Analyzing the projects found that bug neighborhoods occur regularly in software. The paper also showed how bug fixes can be incomplete. For Tomcat and Lucene it was found that Tomcat had 4 incomplete fixes per attempted fix while Lucene had 3 incomplete fixes per attempted fix.
Future work includes: better mapping between NPA and NPR pairs, comparing incomplete bug fixes in open source vs industry projects and looking at other types of bugs which cause run time exceptions.