Statistical Debugging Effectiveness as a Fault Localization Approach: Comparative Study
- 1 Department of Computer Information Systems, The University of Jordan, Amman, Jordan
- 2 Department of Computer Information Systems, The University of Jordan, Amman, Jordan
- 3 Department of Computer Information Systems, The University of Jordan, Amman, Jordan
- 4 Department of Computer Information Systems, The University of Jordan, Amman, Jordan
- 5 Department of Computer Information Systems, The University of Jordan, Amman, Jordan
- 6 Department of Computer Information System, Yarmouk University, Irbid, Jordan
Abstract
Fault localization is an important topic in software testing, as it enables the developer to specify fault location in their code. One of the dynamic fault localization techniques is statistical debugging. In this study, two statistical debugging algorithms are implemented, SOBER and Cause Isolation, and then the experimental works are conducted on five programs coded using Python as an example of well-known dynamic programming language. Results showed that in programs that contain only single bug, the two studied statistical debugging algorithms are very effective to localize a bug. In programs that have more than one bug, SOBER algorithm has limitations related to nested predicates, rarely observed predicates and complement predicates. The Cause Isolation has limitations related to sorting predicates based on importance and detecting bugs in predicate condition. The accuracy of both SOBER and Cause Isolation is affected by the program size. Quality comparison showed that SOBER algorithm requires more code examination than Cause Isolation to discover the bugs.
- Sebesta, R.W. and Mukherjee, S. (2002) Concepts of Programming Languages. Vol. 281, Addison-Wesley, Reading.
- Scott, M.L. (2000) Programming Language Pragmatics. Morgan Kaufmann.
- Saeed, F.S.M. (2008) Systematic Review of Verification & Validation in Dynamic Languages. MS. Thesis, Blekinge Institute of Technology, Sweden.
- Ousterhout, J.K. (1998) Scripting: Higher Level Programming for the 21st Century. Computer, 31, 23-30. http://dx.doi.org/10.1109/2.660187
- Tratt, L. and Wuyts, R. (2007) Guest Editors’ Introduction: Dynamically Typed Languages. IEEE Software, 24, 28-30. http://dblp.uni-trier.de/db/journals/software/software24.html#TrattW07 http://dx.doi.org/10.1109/MS.2007.140
- Yu, Y., Jones, J.A. and Harrold, M.J. (2008) An Empirical Study of the Effects of Test-Suite Reduction on Fault Localization. Proceedings of the 30th International Conference on Software Engineering, 201-210. http://doi.acm.org/10.1145/1368088.1368116
- Jiang, L. and Su, Z. (2007) Context-Aware Statistical Debugging: From Bug Predictors to Faulty Control Flow Paths. Proceedings of the Twenty-Second IEEE/ACM International Conference on Automated Software Engineering, 184-193. http://dx.doi.org/10.1145/1321631.1321660
- Liu, C., Yan, X., Fei, L., Han, J. and Midkiff, S.P. (2005) SOBER: Statistical Model-Based Bug Localization. ACM SIGSOFT Software Engineering Notes, 30, 286-295. http://dx.doi.org/10.1145/1081706.1081753
- Andrzejewski, D., Mulhern, A., Liblit, B. and Zhu, X. (2007) Statistical Debugging Using Latent Topic Models. European Conference on Machine Learning, 6-17. http://dx.doi.org/10.1007/978-3-540-74958-5_5
- Jones, J.A., Harrold, M.J. and Stasko, J. (2002) Visualization of Test Information to Assist Fault Localization. Proceedings of the 24th International Conference on Software Engineering, 467-477. http://dx.doi.org/10.1145/581396.581397
- Cleve, H. and Zeller, A. (2005) Locating Causes of Program Failures. Proceedings of the 27th International Conference on Software Engineering, Saint Louis, 15-21 May 2005, 342-351. http://dx.doi.org/10.1109/icse.2005.1553577
- Liblit, B., Naik, M., Zheng, A.X., Aiken, A. and Jordan, M.I. (2005) Scalable Statistical Bug Isoltion. ACM SIGPLAN Notices, 40, 15-26. http://dx.doi.org/10.1145/1064978.1065014
- Liblit, B. (2007) Cooperative Bug Isolation: Winning Thesis of the 2005 ACM Doctoral Dissertation Competition (Vol. 4440). Springer.