A Survey on Fault Localization Techniques

A considerable body of work on debugging and particularly in fault localization has been published in the past decades. This paper summarizes the underlying ideas behind locating faults and presents the different techniques that are currently available to tackle the challenging task that is diagnosing faulty software systems and groups them into different categories: traditional debugging techniques (such as assertions and breakpoints), program slicing, delta debugging and coverage-based, as well as model-based approaches to debugging are detailed. A comparison between such diagnosis techniques is performed, and the challenges and potential future directions of software fault localization are also discussed. Keywords-Debugging, diagnosis, fault localization, software testing.

[1]  Chao Liu,et al.  Statistical Debugging: A Hypothesis Testing-Based Approach , 2006, IEEE Transactions on Software Engineering.

[2]  Rui Abreu,et al.  A Topology-Based Model for Estimating the Diagnostic Efficiency of Statistics-Based Approaches , 2012, 2012 IEEE 23rd International Symposium on Software Reliability Engineering Workshops.

[3]  Alessandro Orso,et al.  Are automated debugging techniques actually helping programmers? , 2011, ISSTA '11.

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

[5]  A. S. Meyer,et al.  Comparison of similarity coefficients used for cluster analysis with dominant markers in maize (Zea mays L) , 2004 .

[6]  Frank T. Willmore,et al.  Debugging with gdb , 2016 .

[7]  Janusz W. Laski,et al.  Dynamic Program Slicing , 1988, Inf. Process. Lett..

[8]  Andreas Zeller,et al.  Lightweight Defect Localization for Java , 2005, ECOOP.

[9]  Peggy Aldrich Kidwell Stalking the Elusive Computer Bug , 1998, IEEE Ann. Hist. Comput..

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

[11]  Gregg Rothermel,et al.  An empirical investigation of the relationship between spectra differences and regression faults , 2000 .

[12]  Anil K. Jain,et al.  Algorithms for Clustering Data , 1988 .

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

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

[15]  James R. Larus,et al.  The use of program profiling for software maintenance with applications to the year 2000 problem , 1997, ESEC '97/FSE-5.

[16]  Zhendong Su,et al.  HDD: hierarchical delta debugging , 2006, ICSE.

[17]  Alexandre Perez,et al.  Dynamic Code Coverage with Progressive Detail Levels , 2013, ArXiv.

[18]  Dianxiang Xu,et al.  Towards Better Fault Localization: A Crosstab-Based Statistical Approach , 2012, IEEE Transactions on Systems, Man, and Cybernetics, Part C (Applications and Reviews).

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

[20]  Brent Hailpern,et al.  Software debugging, testing, and verification , 2002, IBM Syst. J..

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

[22]  Byoungju Choi,et al.  A family of code coverage-based heuristics for effective fault localization , 2010, J. Syst. Softw..

[23]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[24]  A. Zeller Isolating cause-effect chains from computer programs , 2002, SIGSOFT '02/FSE-10.

[25]  Mark Weiser,et al.  Programmers use slices when debugging , 1982, CACM.

[26]  Markus Stumptner,et al.  Model-Based Debugging - State of the Art And Future Challenges , 2007, V&D@FLoC.

[27]  Brad A. Myers,et al.  Debugging reinvented , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

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

[29]  Amir Roth,et al.  Low-overhead interactive debugging via dynamic instrumentation with DISE , 2005, 11th International Symposium on High-Performance Computer Architecture.

[30]  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).

[31]  Yu Qi,et al.  Bp Neural Network-Based Effective Fault Localization , 2009, Int. J. Softw. Eng. Knowl. Eng..

[32]  W. Eric Wong,et al.  A consensus‐based strategy to improve the quality of fault localization , 2013, Softw. Pract. Exp..

[33]  Baowen Xu,et al.  Metamorphic slice: An application in spectrum-based fault localization , 2013, Inf. Softw. Technol..

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

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

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

[37]  David S. Rosenblum A Practical Approach to Programming With Assertions , 1995, IEEE Trans. Software Eng..

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

[39]  Rui Abreu,et al.  A Kernel Density Estimate-Based Approach to Component Goodness Modeling , 2013, AAAI.

[40]  Peter Zoeteweij,et al.  Automatic software fault localization using generic program invariants , 2008, SAC '08.

[41]  Gregory Tassey,et al.  Prepared for what , 2007 .

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

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

[44]  Bhavani M. Thuraisingham,et al.  Effective Software Fault Localization Using an RBF Neural Network , 2012, IEEE Transactions on Reliability.

[45]  W. Eric Wong,et al.  Software Fault Localization , 2010, Encyclopedia of Software Engineering.

[46]  Rui Abreu,et al.  A Low-Cost Approximate Minimal Hitting Set Algorithm and its Application to Model-Based Diagnosis , 2009, SARA.

[47]  W. Eric Wong,et al.  The DStar Method for Effective Software Fault Localization , 2014, IEEE Transactions on Reliability.

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

[49]  Jeffrey K. Hollingsworth,et al.  Efficient instrumentation for code coverage testing , 2002, ISSTA '02.

[50]  Rui Abreu,et al.  Refining spectrum-based fault localization rankings , 2009, SAC '09.

[51]  Rex Black,et al.  Foundations of Software Testing ISTQB Certification , 2006 .

[52]  Carl E. Landwehr,et al.  Basic concepts and taxonomy of dependable and secure computing , 2004, IEEE Transactions on Dependable and Secure Computing.

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

[54]  Rui Abreu,et al.  GZoltar: an eclipse plug-in for testing and debugging , 2012, 2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering.

[55]  W. Mayer,et al.  Prioritising Model-Based Debugging Diagnostic Reports , 2008 .

[56]  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).

[57]  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.

[58]  Brian C. Williams,et al.  Diagnosing Multiple Faults , 1987, Artif. Intell..

[59]  Friedrich Steimann,et al.  Improving Coverage-Based Localization of Multiple Faults Using Algorithms from Integer Linear Programming , 2012, 2012 IEEE 23rd International Symposium on Software Reliability Engineering.