Probabilistic reasoning in diagnosing causes of program failures. (19th August 2015) - Xu, Junjie; Chen, Rong; Du, Zhenjun
Summary: Fault localization is sensitive to program runs, and the pattern of fault propagation and manifestation in real software is extremely complex and uncertain. To accommodate the complexity and uncertainty, this paper presents a novel probabilistic graph model – the probabilistic cause–effect graph (PCEG) is built upon dynamic dependencies generated from running the faulty program against failed test cases and performs probabilistic inference with coverage information from the whole test suite. PCEG is an extension of the traditional probabilistic graph both in structural and inferential terms and is different from earlier probabilistic approaches to software diagnosis by introducing two forms of evidences (i.e. apparent faults and real faults). The proposed probabilistic reasoning algorithm works on the PCEG converted from a dynamic program dependency graph and diagnoses the causes with both top‐down and bottom‐up inference. The experimental results have shown the improvements on diagnostic effectiveness and accuracy in both single‐fault and multiple‐fault context, even when a program yields similar program runs through loop statements. Copyright © 2015 John Wiley & Sons, Ltd. Abstract : To accommodate the complexity and uncertainty of fault propagation in real software, this paper presents a novel probabilistic graph model probabilistic cause–effect graph that features bidirectional causality inference from dynamic program dependencies. The experimental results have shown the probabilistic cause–effect graph's outperformance in both single‐fault and multiple‐fault context, even with similar program runs through loops.