Identifying Failure Causes in Java Programs: An Application of Change Impact Analysis


Enter Abstract Here


Enter Notes Here

BibTeX Reference

title={Identifying Failure Causes in Java Programs: An Application of Change Impact Analysis}, 
author={Ren, X. and Chesley, O.C. and Ryder, B.G.}, 
journal={Software Engineering, IEEE Transactions on}, 
month={Sept. }, 
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 maintenanceJava 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}, 
ISSN={0098-5589}, }
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License