• DocumentCode
    781827
  • 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
  • Volume
    32
  • Issue
    9
  • fYear
    2006
  • Firstpage
    718
  • Lastpage
    732
  • 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;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/TSE.2006.90
  • Filename
    1707669