一句话:提出三种基于代码与覆盖率变更的故障定位技术,在CI场景下优于传统SBFL,并可增强Ochiai。
持续集成中代码频繁合入并测试,能提供细粒度变更信息,但传统基于频谱的故障定位(SBFL)未利用这些信息。论文提出将代码变更与覆盖率变更信息融入故障定位:代码变更揭示故障引入点,覆盖率变更限制搜索空间。基于此提出三种基于变更的故障定位技术,并在7个软件系统的192个真实故障上与Ochiai比较。结果表明三种技术均优于Ochiai,平均MAP提升7%–23%,MRR提升17%–24%;与Ochiai结合后,平均MAP和MRR最高可提升53%和52%。
Continuous integration (CI) is the process in which code changes are automatically integrated, built, and tested in a shared repository. In CI, developers frequently merge and test code under development, which helps isolate faults with finer-grained change information. To identify faulty code, prior research has widely studied and evaluated the performance of spectrum-based fault localization (SBFL) techniques. While the continuous nature of CI requires the code changes to be atomic and presents fine-grained information on what part of the system is being changed, traditional SBFL techniques do not benefit from it. To overcome the limitation, we propose to integrate the code and coverage change information in fault localization under CI settings. First, code changes show how faults are introduced into the system, and provide developers with better understanding on the root cause. Second, coverage changes show how the code coverage is impacted when faults are introduced. This change information can help limit the search space of code coverage, which offers more opportunities for improving fault localization techniques. Based on the above observations, we propose three new change-based fault localization techniques, and compare them with Ochiai, a commonly used SBFL technique. We evaluate these techniques on 192 real faults from seven software systems. Our results show that all three change-based techniques outperform Ochiai on the Defects4J dataset. In particular, the improvement varies from 7% to 23% and 17% to 24% for average MAP and MRR, respectively. Moreover, we find that our change-based fault localization techniques can be integrated with Ochiai, and boost its performance by up to 53% and 52% for average MAP and MRR, respectively.