Probabilistic reasoning in diagnosing causes of program failures

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.

[1]  Roderick Bloem,et al.  Fault localization using a model checker , 2010, Softw. Test. Verification Reliab..

[2]  Nir Friedman,et al.  Probabilistic Graphical Models - Principles and Techniques , 2009 .

[3]  Franz Wotawa,et al.  Fault Localization Based on Dynamic Slicing and Hitting-Set Computation , 2010, 2010 10th International Conference on Quality Software.

[4]  Alessandro Orso,et al.  Rapid: Identifying Bug Signatures to Support Debugging Activities , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[5]  Rui Abreu,et al.  Zoltar: A Toolset for Automatic Fault Localization , 2009, 2009 IEEE/ACM International Conference on Automated Software Engineering.

[6]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

[7]  Mary Jean Harrold,et al.  Debugging in Parallel , 2007, ISSTA '07.

[8]  Wes Masri,et al.  Fault localization based on information flow coverage , 2010, Softw. Test. Verification Reliab..

[9]  Markus Stumptner,et al.  Model-Based Diagnosis of Hardware Designs , 1999, Artif. Intell..

[10]  Peter Zoeteweij,et al.  Simultaneous debugging of software faults , 2011, J. Syst. Softw..

[11]  Andy Podgurski,et al.  The Probabilistic Program Dependence Graph and Its Application to Fault Diagnosis , 2008, IEEE Transactions on Software Engineering.

[12]  Michael I. Jordan,et al.  Scalable statistical bug isolation , 2005, PLDI '05.

[13]  Rongxin Wu,et al.  CrashLocator: locating crashing faults based on crash stacks , 2014, ISSTA 2014.

[14]  Eugene H. Spafford,et al.  Debugging with dynamic slicing and backtracking , 1993, Softw. Pract. Exp..

[15]  Hong Cheng,et al.  Identifying bug signatures using discriminative graph mining , 2009, ISSTA.

[16]  Andreas Zeller,et al.  Yesterday, my program worked. Today, it does not. Why? , 1999, ESEC/FSE-7.

[17]  Xiangyu Zhang,et al.  Pruning dynamic slices with confidence , 2006, PLDI '06.

[18]  Zhi-Hua Zhou,et al.  Sample-based software defect prediction with active and semi-supervised learning , 2012, Automated Software Engineering.

[19]  Hongyu Zhang,et al.  Detecting infeasible branches based on code patterns , 2014, 2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE).

[20]  Judea Pearl,et al.  Probabilistic reasoning in intelligent systems - networks of plausible inference , 1991, Morgan Kaufmann series in representation and reasoning.

[21]  Liang Guo,et al.  Accurately Choosing Execution Runs for Software Fault Localization , 2006, CC.

[22]  Raúl A. Santelices,et al.  Lightweight fault-localization using multiple coverage types , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[23]  Xiangyu Zhang,et al.  Locating faults through automated predicate switching , 2006, ICSE.

[24]  Peter Zoeteweij,et al.  A practical evaluation of spectrum-based fault localization , 2009, J. Syst. Softw..

[25]  Steven P. Reiss,et al.  Fault localization with nearest neighbor queries , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[26]  Kai-Yuan Cai,et al.  Effective Fault Localization using Code Coverage , 2007, 31st Annual International Computer Software and Applications Conference (COMPSAC 2007).

[27]  T. H. Tse,et al.  Fault localization through evaluation sequences , 2010, J. Syst. Softw..

[28]  Markus Stumptner,et al.  Extending diagnosis to debug programs with exceptions , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[29]  Andy Podgurski,et al.  Mitigating the confounding effects of program dependences for effective fault localization , 2011, ESEC/FSE '11.

[30]  Xiangyu Zhang,et al.  Towards locating execution omission errors , 2007, PLDI '07.

[31]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[32]  Fang Deng,et al.  Weighted System Dependence Graph , 2012, 2012 IEEE Fifth International Conference on Software Testing, Verification and Validation.

[33]  Siau-Cheng Khoo,et al.  Mining succinct predicated bug signatures , 2013, ESEC/FSE 2013.

[34]  Peter Zoeteweij,et al.  Spectrum-Based Multiple Fault Localization , 2009, 2009 IEEE/ACM International Conference on Automated Software Engineering.

[35]  Rajiv Gupta,et al.  Learning universal probabilistic models for fault localization , 2010, PASTE '10.

[36]  Markus Stumptner,et al.  Evaluating Models for Model-Based Debugging , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[37]  Rui Abreu,et al.  Threats to the validity and value of empirical assessments of the accuracy of coverage-based fault locators , 2013, ISSTA.

[38]  Lu Zhang,et al.  On similarity-awareness in testing-based fault localization , 2008, Automated Software Engineering.

[39]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[40]  Constantin F. Aliferis,et al.  Local Causal and Markov Blanket Induction for Causal Discovery and Feature Selection for Classification Part II: Analysis and Extensions , 2010, J. Mach. Learn. Res..

[41]  H. Cleve,et al.  Locating causes of program failures , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[42]  Lei Zhao,et al.  A Crosstab-based Statistical Method for Effective Fault Localization , 2008, 2008 1st International Conference on Software Testing, Verification, and Validation.

[43]  Markus Stumptner,et al.  Model-Based Debugging using Multiple Abstract Models , 2003, ArXiv.

[44]  Andreas Zeller,et al.  Simplifying and Isolating Failure-Inducing Input , 2002, IEEE Trans. Software Eng..

[45]  Daniele Theseider Dupré,et al.  Model-Based Diagnosis Meets Error Diagnosis in Logic Programs (Extended Abstract) , 1993, AADEBUG.

[46]  Rajiv Gupta,et al.  Fault localization using value replacement , 2008, ISSTA '08.

[47]  Mary Jean Harrold,et al.  Empirical evaluation of the tarantula automatic fault-localization technique , 2005, ASE.

[48]  Raymond Reiter,et al.  A Theory of Diagnosis from First Principles , 1986, Artif. Intell..

[49]  Xiangyu Zhang,et al.  Locating faulty code using failure-inducing chops , 2005, ASE.

[50]  Rong Chen,et al.  Isolating and Understanding Program Errors Using Probabilistic Dispute Model , 2013, 2013 IEEE 37th Annual Computer Software and Applications Conference.

[51]  Xiangyu Zhang,et al.  Locating faults using multiple spectra-specific models , 2011, SAC.

[52]  Chao Liu,et al.  SOBER: statistical model-based bug localization , 2005, ESEC/FSE-13.

[53]  Xiangyu Zhang,et al.  Experimental evaluation of using dynamic slices for fault location , 2005, AADEBUG'05.