Font Size: a A A

Software Fault Localization Research Based On Program Semantics

Posted on:2012-06-23Degree:MasterType:Thesis
Country:ChinaCandidate:G Q HeFull Text:PDF
GTID:2248330395985740Subject:Computer Science and Technology
Abstract/Summary:PDF Full Text Request
With the development of computer technology and the expansion of software application, the scale and complexity of software systems rises and the rate of system failure caused by software faults continues to increase, and software reliability cannot be assured much more. It is a significant study to make the debugging automated and locate the fault in case of software failure.Spectra-based fault localization technology analyzes program runtime information, which is known as program spectra, from passing runs and failing runs, to compute the likelihood of each program entity being faulty. This lightweight fault localization takes as its only input dynamic information collected at run-time, due to its low computational complexity and no modeling cost, has been widely studied and applied.On the basis of analyzing several common program spectra, the thesis proposes a novel program spectrum-dynamic method call graph, which conveys program semantics information-call relationship between methods while program executing. Traditional way to collect program spectra is instrumentation, but it introduces too much overhead. This thesis introduces a new way, that is using aspect-oriented programming to collect program spectra. It can monitor program execution by adding a new module-aspect to the tested program. As aspect can trace the translation of method call stack while program executing, the program spectra collected can record call hierarchy between methods.With the program spectra collected, the thesis proposes a fault localization approach based on program semantics. We define a new program model-program dynamic behavior graph. In the behavior graph, edge weight represents call frequency, and the differences in successful behavior graph and failing behavior graph pinpoint suspicious fault places. Because of the big difference in the number of passing and failing test cases, it isn’t reasonable to represent behavior graph difference as call frequency difference. So we assume that the greater the edge call probability difference in the two behavior graphs is, the higher it’s suspiciousness is, compute edge’s suspiciousness as the call probability difference in the successful behavior graph and failing behavior graph, and rank method call edges according to their suspiciousness.In the end, we design and implement a prototype system, named fault localization based on program semantics. Experimental results show that, compared with traditional instrumenting way to collect program spectra, aspect-oriented programming way can reduce more than tens of times of overhead. Empirical studies prove that the fault localization technology based on program semantics can improve the accuracy of pointing bugs, and relax programmers from the burden of debugging.
Keywords/Search Tags:Fault localization, Aspect-oriented programming, Program spectrum, Program dynamic behavior graph
PDF Full Text Request
Related items