EAFL: an effective combination of features for fault localization in evolving programs
摘要
Automatic fault localization techniques reduce the time and effort required to identify program faults; however, challenges remain, particularly in terms of low accuracy. Most research, including Spectrum-Based Fault Localization (SBFL) techniques, as the most studied technique, focuses on a single version of a program, neglecting the fact that software evolution and changes are an inherent part of development. Therefore, EAFL (Evolution-Aware Fault Localization) proposes a new combination of features, including changes in program versions, the weight of test cases determined by the result of each test case for every statement, coverage, data dependency, and control dependency, to locate faults more accurately. It is worth mentioning that the test case weight is a new feature inspired by software testing, and was defined and utilized in this research for the first time. In this study, programs from the Code4Bench benchmark were utilized to extract the aforementioned features. For the evaluation phase, projects were selected from both Code4Bench and Defects4J to ensure the diversity and reliability of the assessment. The results indicate that over 76% of the faults were detected within the Top-3 ranks, while more than 86% of the programs achieved an EXAM score of 15 or lower. To demonstrate the enhancement, four SBFL formulae (Tarantula, Ochiai, Barinel, and Jaccard) were also used, and EAFL outperformed them by locating 40% more faults in the Top-3 rank and 33.3% more faults with EXAM scores of 15 or less. Hence, the study highlights the importance of program history, dependencies, and test case weight in improving fault localization efficiency, and results clearly demonstrate the superiority of the proposed method over the compared spectrum-based techniques.