Semi-automatic fault localization
Jones, James Arthur
MetadataShow full item record
One of the most expensive and time-consuming components of the debugging process is locating the errors or faults. To locate faults, developers must identify statements involved in failures and select suspicious statements that might contain faults. In practice, this localization is done by developers in a tedious and manual way, using only a single execution, targeting only one fault, and having a limited perspective into a large search space. The thesis of this research is that fault localization can be partially automated with the use of commonly available dynamic information gathered from test-case executions in a way that is eﬀective, eﬃcient, tolerant of test cases that pass but also execute the fault, and scalable to large programs that potentially contain multiple faults. The overall goal of this research is to develop eﬀective and eﬃcient fault localization techniques that scale to programs of large size and with multiple faults. There are three principle steps performed to reach this goal: (1) Develop practical techniques for locating suspicious regions in a program; (2) Develop techniques to partition test suites into smaller, specialized test suites to target speciﬁc faults; and (3) Evaluate the usefulness and cost of these techniques. In this dissertation, the diﬃculties and limitations of previous work in the area of fault-localization are explored. A technique, called Tarantula, is presented that addresses these diﬃculties. Empirical evaluation of the Tarantula technique shows that it is eﬃcient and eﬀective for many faults. The evaluation also demonstrates that the Tarantula technique can loose eﬀectiveness as the number of faults increases. To address the loss of eﬀectiveness for programs with multiple faults, supporting techniques have been developed and are presented. The empirical evaluation of these supporting techniques demonstrates that they can enable eﬀective fault localization in the presence of multiple faults. A new mode of debugging, called parallel debugging, is developed and empirical evidence demonstrates that it can provide a savings in terms of both total expense and time to delivery. A prototype visualization is provided to display the fault-localization results as well as to provide a method to interact and explore those results. Finally, a study on the eﬀects of the composition of test suites on fault-localization is presented.