Slice-based statistical fault localization

HighlightsWe propose a novel slice-based statistical fault localization approach to improve fault localization effectiveness.We present an approximate dynamic backward slicing approach to balance the size and accuracy of a slice.An experimental study on a sufficient number of faulty versions and fault localization techniques shows the high applicability and effectiveness of our approach. Recent techniques for fault localization statistically analyze coverage information of a set of test runs to measure the correlations between program entities and program failures. However, coverage information cannot identify those program entities whose execution affects the output and therefore weakens the aforementioned correlations. This paper proposes a slice-based statistical fault localization approach to address this problem. Our approach utilizes program slices of a set of test runs to capture the influence of a program entity's execution on the output, and uses statistical analysis to measure the suspiciousness of each program entity being faulty. In addition, this paper presents a new slicing approach called approximate dynamic backward slice to balance the size and accuracy of a slice, and applies this slice to our statistical approach. We use two standard benchmarks and three real-life UNIX utility programs as our subjects, and compare our approach with a sufficient number of fault localization techniques. The experimental results show that our approach can significantly improve the effectiveness of fault localization.

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

[2]  Yu Qi,et al.  Effective program debugging based on execution slices and inter-block data dependency , 2006, J. Syst. Softw..

[3]  Peter Zoeteweij,et al.  An Evaluation of Similarity Coefficients for Software Fault Localization , 2006, 2006 12th Pacific Rim International Symposium on Dependable Computing (PRDC'06).

[4]  Shinji Kusumoto,et al.  Experimental Evaluation of Program Slicing for Fault Localization , 2002, Empirical Software Engineering.

[5]  Xiaofeng Xu,et al.  A Grouping-Based Strategy to Improve the Effectiveness of Fault Localization Techniques , 2010, 2010 10th International Conference on Quality Software.

[6]  Xiaoguang Mao,et al.  Effective Statistical Fault Localization Using Program Slices , 2012, 2012 IEEE 36th Annual Computer Software and Applications Conference.

[7]  Jie Tian,et al.  Automating Software FMEA via Formal Analysis of Dependence Relations , 2008, 2008 32nd Annual IEEE International Computer Software and Applications Conference.

[8]  Xiangyu Zhang,et al.  Dynamic slicing long running programs through execution fast forwarding , 2006, SIGSOFT '06/FSE-14.

[9]  Xiangyu Zhang,et al.  A study of effectiveness of dynamic slicing in locating real faults , 2006, Empirical Software Engineering.

[10]  Wanzhi Wen,et al.  Software fault localization based on program slicing spectrum , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[11]  Lee Naish,et al.  A model for spectra-based software diagnosis , 2011, TSEM.

[12]  James A. Jones,et al.  On the influence of multiple faults on coverage-based fault localization , 2011, ISSTA '11.

[13]  Shing-Chi Cheung,et al.  Taming coincidental correctness: Coverage refinement with context patterns to improve fault localization , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[14]  Tibor Gyimóthy,et al.  An efficient relevant slicing method for debugging , 1999, ESEC/FSE-7.

[15]  Joseph Robert Horgan,et al.  Dynamic program slicing , 1990, PLDI '90.

[16]  Andreas Zeller,et al.  Locating causes of program failures , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[17]  David Binkley,et al.  Unravel:: a case tool to assist evaluation of high integrity software , 1995 .

[18]  Joseph Robert Horgan,et al.  Fault localization using execution slices and dataflow tests , 1995, Proceedings of Sixth International Symposium on Software Reliability Engineering. ISSRE'95.

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

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

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

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

[23]  Eric A. Brewer,et al.  Pinpoint: problem determination in large, dynamic Internet services , 2002, Proceedings International Conference on Dependable Systems and Networks.

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

[25]  Martin Burger,et al.  Minimizing reproduction of software failures , 2011, ISSTA '11.

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

[27]  Trishul M. Chilimbi,et al.  HOLMES: Effective statistical debugging via efficient path profiling , 2009, 2009 IEEE 31st International Conference on Software Engineering.

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

[29]  A.J.C. van Gemund,et al.  On the Accuracy of Spectrum-based Fault Localization , 2007, Testing: Academic and Industrial Conference Practice and Research Techniques - MUTATION (TAICPART-MUTATION 2007).

[30]  T. H. Tse,et al.  Capturing propagation of infected program states , 2009, ESEC/FSE '09.

[31]  Xiangyu Zhang,et al.  Memory slicing , 2009, ISSTA.

[32]  Alberto Sánchez Automatic Error Detection Techniques Based on Dynamic Invariants THESIS submitted in partial fulfillment of the requirements for the degree of MASTER OF , 2007 .

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

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

[35]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[36]  John T. Stasko,et al.  Visualization of test information to assist fault localization , 2002, ICSE '02.

[37]  Andy Podgurski,et al.  The Probabilistic Program Dependence Graph and Its Application to Fault Diagnosis , 2010, IEEE Trans. Software Eng..