Fault localization is one of the most expensive and time consuming jobs in program debugging. Many approaches were proposed in order to locate faults effectively and efficiently. In this paper, we proposed a novel statistical approach by exploiting the statistical behavior of two sequentially connected predicates in the execution. If the predicates are regarded as the vertices of a graph, then the edges of the graph represent the transition of two sequential predicates in the execution trace of the program. The label of each edge is the frequency of each transition. For each edge, we apply hypothesis testing to evaluate the difference between edge evaluation bias in the passed runs and that in the failed runs. The edges are ranked according to the fault relevance score obtained from the hypothesis testing. The experimental results on Siemens suite show that the our proposed predicate-based fault localization method outperforms other well-used statistical fault localization techniques.
展开▼