Skip to main content
Log in

FTFL: A Fisher’s test-based approach for fault localization

  • Original Paper
  • Published:
Innovations in Systems and Software Engineering Aims and scope Submit manuscript

Abstract

For effective fault localization, we propose a modified Fisher’s test-based statistical method that makes use of test execution results as well as statement coverage information to determine the suspiciousness of each executable statement. Our technique returns a rank list of statements based on their suspiciousness of containing a fault. We also discuss an extension to our proposed approach for localizing programs with multiple faults. This involves partitioning the failed test cases into clusters such that they target different faults. Our experimental studies show that on an average, our proposed fault localization technique requires examination of 37.09% less code than existing techniques for localizing faults.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14
Fig. 15
Fig. 16
Fig. 17
Fig. 18
Fig. 19
Fig. 20

Similar content being viewed by others

References

  1. Wong WE, Debroy V, Gao R, Li Y (2016) The DStar method for effective software fault localization. IEEE Trans Reliab 63(1):290–308

    Article  Google Scholar 

  2. Wong WE, Gao R, Li Y, Abreu R, Wotawa F (2016) A survey on software fault localization. IEEE Trans Softw Eng 42(8):707–740

    Article  Google Scholar 

  3. Mall R (2018) Fundamentals of software engineering. PHI Learning Pvt Ltd., New Delhi

    Google Scholar 

  4. Weiser M (1984) Program slicing. IEEE Trans Softw Eng 10(4):352–357

    Article  Google Scholar 

  5. Korel B, Laski J (1988) Dynamic program slicing. Inf Process Lett 29(3):155–163

    Article  Google Scholar 

  6. Agrawal H, Horgan JR (1990) Dynamic Program Slicing. In: Proceedings of the ACM SIGPLAN’90 conference on programming language design and implementation. White Plains, New York, pp 246–256

  7. Wong WE, Qi Y (2009) BP neural network-based effective fault localization. Int J Softw Eng Knowl Eng 19(4):573–597

    Article  Google Scholar 

  8. Naish L, Hua Jie L, Kotagiri R (2011) A model for spectra-based software diagnosis. ACM Trans Softw Eng Methodol 11(3):20

    Google Scholar 

  9. Tang CM, Chan WK, Yu YT, Zhang Z (2017) Accuracy graphs of spectrum-based fault localization formulas. IEEE Transactions on Reliability 66(2):403–424

    Article  Google Scholar 

  10. Dutta A, Jain R, Gupta S, Mall R (2019) Fault localization using a weighted function dependency graph. In: International conference on quality, reliability, risk, maintenance, and safety engineering, QR2MSE-2019, Zhangjiajie, Hunan, China

  11. Lyle JR, Weiser M (1987) Automatic program bug location by program slicing. In: Proceedings of the 2nd international conference on computer and applications, Beijing, China, pp 877–883

  12. Gupta R, Soffa ML (1995) Hybrid slicing: an approach for refining static slices using dynamic information. In: Symposium on foundations of software engineering, pp 29–40

  13. Agrawal H, Horgan JR, London S, Wong WE (1995) Fault localization using execution slices and dataflow tests. In: Proceedings of the 6th IEEE international symposium on software reliability engineering, Toulouse, France, pp 143–151

  14. Wong E, Wei T, Qi Y, Zhao L (2008) A crosstab-based statistical method for effective fault localization. In: Proceedings of 1st international conference on software testing, verification, and validation, pp 42–51

  15. Wong WE, Debroy V, Xu D (2011) Towards better fault localization: a crosstab-based statistical approach. IEEE Trans Syst Man Cybern Part C 42(3):378–396

    Article  Google Scholar 

  16. Cleve H, Zeller A (2005) Locating causes of program failures. In: Proceedings of the 27th international conference on software engineering, St. Louis, Missouri, USA, pp 342–351

  17. Zeller A, Hildebrandt R (2002) Simplifying and isolating failure-inducing input. IEEE Trans Softw Eng 28(2):183–200

    Article  Google Scholar 

  18. Jones JA, Harrold MJ, Stasko J (2001) Visualization for fault localization. In: Proceedings of ICSE 2001 workshop on software visualization, Canada, pp 71–75

  19. Jones JA, Harrold MJ (2005) Empirical evaluation of the tarantula automatic fault-localization technique. In: Proceedings of the 20th IEEE/ACM conference on automated software engineering, Long Beach, California, USA, pp 273–282

  20. Ascari LC, Araki LY, Pozo AR, Vergilio SR (2009) Exploring machine learning techniques for fault localization. In: 10th Latin American test workshop, IEEE, pp 1–6

  21. Briand LC, Labiche Y, Liu X (2007) Using machine learning to support debugging with Tarantula. In: The 18th IEEE international symposium on software reliability (ISSRE’07), IEEE, pp 137–146

  22. Dutta A, Pant N, Mitra P, Mall R (2019) Effective Fault Localization using an Ensemble Classifier. In: International conference on quality, reliability, risk, maintenance, and safety engineering, QR2MSE-2019, Zhangjiajie, Hunan, China

  23. Everitt BS (1977) The analysis of contingency tables. Chapman and Hall, London

    Book  Google Scholar 

  24. Goodman LA (1984) The analysis of cross-classification data having ordered categories. Harvard University Press, Cambridge

    Google Scholar 

  25. Freeman D (1987) Applied categorical data analysis. Marcel Dekker Inc., New York

    MATH  Google Scholar 

  26. Krinke J (2004) Slicing, chopping, and path conditions with barriers. Software Quality Control 12(4):339–360

    Article  Google Scholar 

  27. Korel B (1988) PELAS - program error-locating assistant system. IEEE Trans Softw Eng 14(9):1253–1260

    Article  Google Scholar 

  28. Renieris M, Reiss SP (2003) Fault localization with nearest neighbor queries. In: Proceedings of the 18th IEEE international conference on automated software engineering, pp 30–39

  29. Li Y, Chao L (2014) Effective fault localization using weighted test cases. J Softw 9(08):8

    Google Scholar 

  30. Wong WE, Debroy V, Choi B (2010) A family of code coverage-based heuristics for effective fault localization. J Syst Softw 83(2):188–208

    Article  Google Scholar 

  31. Debroy V, Wong WE, Xu X, Choi B (2010) A grouping-based strategy to improve the effectiveness of fault localization techniques. In: 2010 10th international conference on quality software. IEEE, pp 13–22

  32. Shu T, Ye T, Ding Z, Xia J (2016) Fault localization based on statement frequency. Inf Sci 360:43–56

    Article  Google Scholar 

  33. Zhang Z, Yan L, Qingping T, Xiaoguang M, Ping Z, Xi C (2017) Deep learning-based fault localization with contextual information. IEICE Trans Inf Syst 100(12):3027–3031

    Article  Google Scholar 

  34. Wong WE, Debroy V, Golden R, Xu X, Thuraisingham B (2012) Effective software fault localization using an RBF neural network. IEEE Trans Reliab 61(1):149–169

    Article  Google Scholar 

  35. Zheng W, Hu D, Wang J (2016) Fault localization analysis based on deep neural network. Math Probl Eng

  36. Dutta A, Manral R, Mitra P, Mall R (2019) Hierarchically localizing software faults using DNN. IEEE Transactions on Reliability

  37. Dutta A, Sahay R, Mitra P, Mall R (2019) Predicate proximity in failure: an mlp based fault localization approach. In: Proceedings of IEEE Region 10 Conference-TENCON2, Kochi, India, pp 936–941

  38. Maru A, Dutta A, Kumar KV, Mohapatra DP (2019) Software fault localization using BP neural network based on function and branch coverage. Evolut Intell, pp 1–18

  39. Duda RO, Hart PE (1973) Pattern recognition and scene analysis. Wiley, Hoboken

    MATH  Google Scholar 

  40. Mitchell TM (1997) Machine Learning. McGraw-Hill, New York

    MATH  Google Scholar 

  41. Wasserman PD (1993) Advanced methods in neural computing. Wiley, Hoboken

    MATH  Google Scholar 

  42. Zakari A, Lee SP, Abreu R, Ahmed BH, Rasheed RA (2020) Multiple fault localization of software programs: a systematic literature review. Inf Softw Technol 124:106312

    Article  Google Scholar 

  43. Jones AJ, Bowring FJ, Harrold MJ (2007) Debugging in parallel. In: Proceedings of the 2007 international symposium on software testing and analysis, ACM, pp 16–26

  44. Gao R, Eric Wong W (2017) MSeer-An advanced technique for locating multiple bugs in parallel. IEEE Trans Softw Eng 45(3):301–318

    Article  Google Scholar 

  45. Knight WR (1966) A computer method for calculating Kendall’s tau with ungrouped data. J Am Stat Assoc 61(314):436–439

    Article  Google Scholar 

  46. Park Hae-Sang, Jun Chi-Hyuck (2009) A simple and fast algorithm for K-medoids clustering. Exp Syst Appl 36(2):3336–3341

    Article  Google Scholar 

  47. Abreu R, Zoeteweij P, Gemund AJ (2009) Localizing software faults simultaneously. In: Proceedings of 9th international conference on quality software (QSIC’09.), IEEE, pp 367–376

  48. Cellier P, Ducassé M, Ferré SS, Ridoux O (2011) Multiple fault localization with data mining. In: Proceedings of software engineering and knowledge engineering (SEKE), pp 238–243

  49. Tan PN, Steinbach M, Kumar V (2013) Data Mining Cluster Analysis: Basic Concepts and Algorithms-Introduction to Data Mining. Pearson Publications, London

    Google Scholar 

  50. https://sir.csc.ncsu.edu/portal/index.php

  51. http://man7.org/linux/man-pages/man1/gcov-tool.1.html

  52. https://github.com/yuejia/Milu

  53. https://github.com/ArpitaDutta/FTFL-Tool

  54. https://github.com/ArpitaDutta/NTS_Repository

  55. https://github.com/rjust/defects4j/

  56. http://www.mrtc.mdh.se/projects/wcet/wcet_bench/adpcm/

  57. https://github.com/jburnim/crest/blob/master/test/cfg_test.c

  58. Burnim J, Sen K (2008) Heuristics for scalable dynamic test generation. In: Proceedings of the 23rd IEEE/ACM international conference on automated software engineering, Italy, pp 443–446

  59. https://www.geeksforgeeks.org/merge-two-bsts-with-limited-extra-space/

  60. https://www.geeksforgeeks.org/date-after-adding-given-number-of-days-to-the-given-date/

  61. http://www.rers-challenge.org/2018/index.php?page=ltlProblems#

  62. https://www.tutorialspoint.com/data_structures_algorithms/quick_sort_ program_in_c.htm

  63. http://fault-localization.cs.washington.edu/

  64. Kehrer T, A systematic analysis of faults in the Defects4J benchmark

  65. Li X, Wei L, Yuqun Z, Lingming Z (2019) Deepfl: integrating multiple fault diagnosis dimensions for deep fault localization. In: Proceedings of the 28th ACM SIGSOFT international symposium on software testing and analysis, pp 169–180

  66. Papadakis M, Yves Le Traon LT (2015) Metallaxis-FL: mutation-based fault localization. Softw Test Verificat Reliab 25(5–7):605–628

    Article  Google Scholar 

  67. Moon S, Kim Y, Kim M, Yoo S (2014) Ask the mutants: Mutating faulty programs for fault localization. In: 2014 IEEE seventh international conference on software testing, verification and validation, IEEE, pp 153–162

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Arpita Dutta.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Dutta, A., Kunal, K., Srivastava, S.S. et al. FTFL: A Fisher’s test-based approach for fault localization. Innovations Syst Softw Eng 17, 381–405 (2021). https://doi.org/10.1007/s11334-021-00403-9

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11334-021-00403-9

Keywords

Navigation