As software becomes more complex due to a number of complex software requirements, debugging program becomes very challenging. One of the most expensive task of debugging process is to locate the root cause of program failures (i.e., fault). This process, called fault localization, requires developers to understand complex internal logic of Program Under Test (PUT) to identify the location of fault while inspecting enormous program states.
To reduce the human efforts for fault localization, therefore, we propose two fault localization techniques that utilize dynamic program behaviors. Each of the proposed techniques automatically ranks statements of PUT according to their predicted risk of containing faults, which is essentially computed based on the dynamic information (e.g., a set statements executed by a test case) gathered from test case executions of PUT. Developers can effectively locate the fault by inspecting PUT while following the order of statements in the ranking generated by the proposed techniques. The key ideas of proposed techniques can be summarized as follows.
One of the proposed techniques, called FIESTA, utilizes correlation between failing executions and
each of executed program statements to identify the location of faults. The degree of the correlation indicates the degree of possibility that a statement contains faults, which is used to rank program statements. FIESTA strengthens the correlation between failing executions and faulty statements, by eliminating program structures that can weaken the correlation through the program transformation. It also assigns fault weight on a test case that indicates likelihood of the test case to execute a faulty statement. Thanks to the strengthened correlation, FIESTA can localize faulty statements more effectively than the previous fault localization techniques do.
The other one, called MUSE, utilizes mutation analysis to uniquely capture the relation between individual program statements and obse...