Title :
Identifying Failure Causes in Java Programs: An Application of Change Impact Analysis
Author :
Ren, Xiaoxia ; Chesley, Ophelia C. ; Ryder, Barbara G.
Author_Institution :
Div. of Comput. & Inf. Sci., Rutgers Univ., Piscataway, NJ
Abstract :
During program maintenance, a programmer may make changes that enhance program functionality or fix bugs in code. Then, the programmer usually will run unit/regression tests to prevent invalidation of previously tested functionality. If a test fails unexpectedly, the programmer needs to explore the edit to find the failure-inducing changes for that test. Crisp uses results from Chianti, a tool that performs semantic change impact analysis, to allow the programmer to examine those parts of the edit that affect the failing test. Crisp then builds a compilable intermediate version of the program by adding a programmer-selected partial edit to the original code, augmenting the selection as necessary to ensure compilation. The programmer can reexecute the test on the intermediate version in order to locate the exact reasons for the failure by concentrating on the specific changes that were applied. In nine initial case studies on pairs of versions from two real Java programs, Daikon and Eclipse jdt compiler, we were able to use Crisp to identify the failure-inducing changes for all but 1 of 68 failing tests. On average, 33 changes were found to affect each failing test (of the 67), but only 1-4 of these changes were found to be actually failure-inducing
Keywords :
Java; program compilers; program debugging; program diagnostics; program testing; software maintenance; Java program; bug fixing; compilable intermediate program version; edit change dependence; failure-inducing change; fault localization; program compiler; program maintenance; regression testing; semantic change impact analysis; unit testing; Application software; Computer Society; Computer bugs; Failure analysis; Java; Performance analysis; Performance evaluation; Programming profession; Prototypes; Testing; Fault localization; edit change dependence; intermediate versions of programs.; regression testing; semantic change impact analysis;
Journal_Title :
Software Engineering, IEEE Transactions on
DOI :
10.1109/TSE.2006.90