簡易檢索 / 詳目顯示

研究生: 鍾宇閔
Yu-Min Chung
論文名稱: 以測試為基礎的軟體錯誤定位修正方法及其應用
A Modified Testing-Based Fault Localization Method and Its Application
指導教授: 黃慶育
Chin-Yu Huang
口試委員:
學位類別: 碩士
Master
系所名稱: 電機資訊學院 - 資訊工程學系
Computer Science
論文出版年: 2007
畢業學年度: 96
語文別: 英文
論文頁數: 77
中文關鍵詞: 錯誤定位判斷式
外文關鍵詞: fault localization, predicate
相關次數: 點閱:2下載:0
分享至:
查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報
  • 在軟體的發展與維護方面,錯誤定位通常是複雜而耗費時間的過程.為了有效率的找出錯誤的所在,從以前到現在已經有許多的方法被提出來.Similarity-aware fault localization (SAFL)是其中一種以測試為基礎的錯誤定位方法,它利用測試時所得到的資料去計算每一個敘述式可疑的機率.而dicing是另一個在本篇中被拿來比較的方法.在本篇論文中,相對於傳統SAFL著重在所有敘述式的分析,我們將焦點放在判斷式以及它們對於整個測試過程中資料數值的影響來對傳統方法做修正.在我們所建議的方法中,運用了模糊集合論、矩陣以及機率的運算以分析測試資料,並簡化了測試的程式碼以增進執行除錯的效能.在經過運算後,可以得到各敘述式代表其可疑程度的數值,藉著此數值來幫助測試人員找出真正的錯誤所在.
    在說明所建議的方法之後,我們將其與其它二個同樣以測試為基礎的除錯方法做比較.實驗中包含了數個程式,在不同的條件下如行數、包含的錯誤總數等執行測試.結果則分別以可疑的程式碼比例、平均所需檢查的敘述式行數、以及執行時間三種標準來表示.實驗結果顯示出,我們所建議的方法能有效的降低在發現真正的錯誤之前,所需要檢查的程式碼數量.


    In software development and maintenance, locating faults is generally a complex and time-consuming process. In order to effectively identify the locations of program faults, several approaches have been proposed. Similarity-aware fault localization (SAFL) is a testing based fault localization method that utilizes the testing information to calculate the suspicion probability of each statement. And dicing is another method that we use to compete. In this thesis, our approach method focuses on predicates and their influence instead of statements in traditional SAFL. It uses fuzzy theory, matrix calculating, and some probability computing. Then it detects the importance of each predicate. Thus programs will have more test data for us to analyze the fault locations. Furthermore, programmers will gain important information about the program. They can use this information to maintain their program. In order to speed up the efficiency, we also simplified the program. Then we performed an experimental study for several programs, together with another two testing based fault localization (TBFL) approaches. The discussion of how different conditions such as line of code, suspicious code coverage, and execution time of these three methods are shown. Our experimental results show that the method helps in decreasing the number of codes which have more probability of suspicion than real bugs.

    Abstract (Chinese) ii Abstract (English) iii 誌謝(Acknowledgement) v Contents vi List of Tables viii List of Figures ix Notation x Chapter 1 Introduction 1 Chapter 2 Background knowledge 4 2.1 Fuzzy set theory 4 2.2 Apply fuzzy set theory on SAFL 5 2.3 Motivation 8 2.4 Execution slices and dices 9 Chapter 3 The proposed method 13 3.1 Overview 13 3.2 The modified method 15 3.2.1 Step 1: Collecting the execution information 15 3.2.2 Step 2: Compute membership grade matrix 16 3.2.3 Step 3: Calculate the influence of each predicate 17 3.2.4 Step 4: Compute the importance value of each predicate 20 3.3 Simple examples of using proposed method 21 Chapter 4 Experiment and discussion 28 4.1 Extra procedure of dicing method 32 4.2 Criteria 34 4.2.1 Suspicious code coverage 34 4.2.2 Average number of statements for detecting faults 36 4.2.3 Execution time 37 4.3 Experimental results 37 Chapter 5 Conclusions 52 References 54 Appendix A 57 Appendix B 58 Appendix C 59 Appendix D 60 Appendix E 62 Appendix F 64 Appendix G 68

    [1] E. Y. Shapiro, “Algorithmic Program DeBugging,” MIT Press, 1983.
    [2] J. B. Rosenberg, “How Debuggers Work-Algorithms, Data Structures, and Architecture,” John Wiley and Sons, 1996.
    [3] H. Agrawal, J. Horgan, S. London, and W. Wong, “Fault Location using Execution Slices and Dataflow Tests,” Proceedings of the 6th International Symposium on Software Reliability Engineering (ISSRE 1995), pp. 143-151, 1995.
    [4] D. Hao, Y. Pan, L. Zhang, W. Zhang, H. Mei, and J. Sun, “A Similarity-Aware Approach to Testing Based Fault Localization,” Proceedings of the 20th IEEE International Conference on Automated Software Engineering (ASE 2005), pp. 291-294, 2005.
    [5] Free encyclopedia that anyone can edit – fuzzy set theory. 7/26 2007, http://en.wikipedia.org/wiki/Fuzzy_set .
    [6] Dr A. D. Marshall’s AI2 courseware. Computer Science, Cardiff University , 7/26 2007, http://www.cs.cf.ac.uk/Dave/ .
    [7] J. A. Jones, “Fault Localization Using Visualization of Test Information,” Proceedings of the 26th International Conference on Software Engineering (ICSE 2004), pp. 54-56, 2004.
    [8] J. A. Jones, M. J. Harrold, and J. Stasko, “Visualization of Test Information to Assist Fault Localization,” Proceedings of the 24th International Conference on Software Engineering (ICSE 2002), pp. 467-477, 2002.
    [9] S. Hangal and M. S. Lam, “Tracking down Software Bugs Using Automatic Anomaly Detection,” Proceedings of the 24th international conference on Software engineering (ICSE 2002), pp. 291-301, 2002.
    [10] J. C. Huang, “Detection of Data Flow Anomaly through Program Instrumentation,” IEEE Transactions on Software Engineering, Vol. SE-5, No. 3, pp. 226-236, 1979.
    [11] H. Cleve and A. Zeller, “Locating Causes of Program Failures,” Proceedings of the 27th international conference on Software engineering (ICSE 2005), pp. 342-351, 2005.
    [12] W. Dickinson, D. Leon, and A. Podgruski, “Finding Failures by Cluster Analysis of Execution Profiles,” Proceedings of the 23th international conference on Software engineering (ICSE 2001), pp. 339-348, 2001.
    [13] B. Liblit, M. Naik, A. X. Zheng, A. Aiken, and M. I. Jordan, “Scalable Statistical Bug Isolation,” Proceedings of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation (PLDI 2005), pp. 15-26, 2005.
    [14] M. Renieres and S.P. Reiss, “Fault Localization with Nearest Neighbor Queries,” Proceedings of the 18th IEEE International Conference on Automated Software Engineering (ASE 2003), pp. 30-39, 2003.
    [15] C. Liu, L. Fei, X. Yan, J. Han, and S. Midkiff, “Statistical Debugging: A Hypothesis Testing-based Approach,” IEEE Transaction on Software Engineering, Vol. 32, No. 10, pp. 831-848, 2006.
    [16] C. Liu, X. Yan, L. Fei, J. Han, and S. Midkiff, “SOBER: Statistical Model-based Bug Localization,” Proceedings of the 5th joint meeting of the European Software Engineering Conference and ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE 2005), pp. 286-295, 2005.
    [17] W. Mayer and M. Stumptner, "Extending Diagnosis to Debug Programs with Exceptions,” Proceedings of the 18th IEEE International Conference on Automated Software Engineering (ASE 2003), pp. 240-244, 2003.
    [18] Y. Xie and D. Engler, “Using Redundancies to Find Errors,” IEEE Transactions on Software Engineering, Vol. 29, No. 10, pp. 915-928, 2003.
    [19] D. Hao, “Testing-based Interactive Fault Localization,” Proceedings of the 28th international conference on Software engineering (ICSE 2006), pp. 957-960, 2006.
    [20] J. R. Ruthruff, M. Burnett, and G. Rothermel, “An Empirical Study of Fault Localization for End-user Programmers,” Proceedings of the 27th International Conference on Software Engineering (ICSE 2005), pp. 352-361, 2005.
    [21] M. J. Harrold, R. Gupta, and M. L. Soffa, “A Methodology for Controlling the Size of a Test Suite,” ACM Transactions on Software Engineering and Methodology (TOSEM), pp 270-285, 1993.
    [22] B. Korel and J. Laski, “Algorithmic Software Fault Localization,” Proceedings of the 24th Annual Hawaii International Conference on System Sciences, Vol. 2, pp. 246-252, 1991.
    [23] D. Hao, L. Zhang, H. Mei, and J. Sun, “Towards Interactive Fault Localization Using Test Information,” Proceedings of the 13th Asia-Pacific Software Engineering Conference (APSEC 2006), pp. 277-284, 2006.
    [24] R. A. DeMillo, H. Pan, and E. H. Spafford, “Critical Slicing for Software Fault Localization,” Proceedings of the 1996 ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 1996), Vol. 21, No. 3, 1996.
    [25] K. C. Tai, “Theory of Fault-based Predicate Testing for Computer Programs,” IEEE Transactions on Software Engineering, Vol. 22, No. 8, pp. 552-562, 1996.
    [26] B. Korel and J. Rilling, “Dynamic Program Slicing in Understanding of Program Execution,” Proceedings of the 5th International Workshop on Program Comprehension (IWPC 1997), pp. 80-89, 1997.
    [27] W. E. Wong, and Y. Qi, “An Execution Slice and Inter-block Data Dependency-based Approach for Fault Localization,” Proceedings of the 11th Asia-Pacific Software Engineering Conference (APSEC 2004), pp. 366-373, 2004.
    [28] L. Lian, S. Kusumoto, T. Kikuno, K. Matsumoto, and K. Torii, “A New Fault Localizing Method for the Program Debugging Process,” Information and Software Technology (IST 1997), Vol. 39, pp. 271-284, 1997.
    [29] B. Korel and J. Rilling, “Dynamic Program Slicing Methods,” Information and Software Technology (IST 1998), Vol. 40, pp. 647-659, 1998.
    [30] W. E. Wong, S. S. Gokhale, J. R. Horgan, and K. S. Trivedi, “Locating Program Features Using Execution Slice,” Proceedings of the 1999 IEEE Symposium on Application - Specific Systems and Software Engineering and Technology, pp. 194-203, 1999.

    無法下載圖示 全文公開日期 本全文未授權公開 (校內網路)
    全文公開日期 本全文未授權公開 (校外網路)
    全文公開日期 本全文未授權公開 (國家圖書館:臺灣博碩士論文系統)
    QR CODE