一种细粒度自动化故障定位的混合方法
软件工程
2021-07-21 v1
摘要
故障定位旨在识别有错误的源代码。它可以在不同粒度上完成,例如类、方法和语句。大多数自动化故障定位 (AFL) 方法是粗粒度的,因为准确定位细粒度故障软件元素(例如语句)具有挑战性。SBFL 仅基于测试用例的动态执行,简单、直观且通用(适用于各种粒度)。然而,其准确性仍有显著提升空间。为此,本文中我们提出一种基于动态频谱和静态语句类型的混合细粒度 AFL 方法。该方法的原理是某些类型的语句明显比其他类型更易/更不易出错,因此可利用语句类型进行故障定位。在一批有故障的程序上,我们计算每类语句的出错倾向,并为稳定地更易/更不易出错的特定语句类型分配优先级。对于给定的被测故障程序,我们首先利用传统的基于频谱的故障定位算法识别所有可疑语句并计算其可疑分数。对于得到的每个可疑语句,我们检索其语句类型以及该类型关联的特殊优先级。最终可疑分数为 SBFL 可疑分数与该语句类型所分配优先级的乘积。该方法的一个显著优势是简单直观,使其高效且易于解释/实现。我们在广泛使用的基准 Defects4J 上评估所提方法。评估结果表明,所提方法优于广泛使用的 SBFL,平均绝对浪费代价 (AWE) 降低了 9.3%。
引用
@article{arxiv.2107.09406,
title = {A Hybrid Approach to Fine-grained Automated Fault Localization},
author = {Leping Li and Hui Liu},
journal= {arXiv preprint arXiv:2107.09406},
year = {2021}
}