一句话:提出 FLITSR,通过迭代缩减测试套件重排 SBFL 结果,显著提升多故障定位效果。
频谱故障定位(SBFL)在单故障程序中有效,但故障数增加时精度下降。本文提出 FLITSR,一种 SBFL 扩展:迭代选择能更好区分单个故障的测试子集,用缩减测试套件重新计算并重排基础度量的可疑度,从而找回被其他元素掩盖而排名过低的多故障。作者在大型合成数据集(15 个开源项目、最多 32 个注入故障)和 Defects4J 真实多故障数据集(326 个版本、最多 14 个真实故障)的方法级与语句级频谱上评估。结果显示,平均浪费工作量较最佳基础度量降低 30%-90%,精确率和召回率也普遍提升;方法级真实故障上还显著优于 GRACE。
Spectrum-based fault localization (SBFL) works well for single-fault programs but its accuracy decays for increasing fault numbers. We present FLITSR (Fault Localization by Iterative Test Suite Reduction), a novel SBFL extension that improves the localization of a given base metric specifically in the presence of multiple faults. FLITSR iteratively selects reduced versions of the test suite that better localize the individual faults in the system. This allows it to identify and re-rank faults ranked too low by the base metric because they were masked by other program elements. We evaluated FLITSR over method-level spectra from an existing large synthetic dataset comprising 75000 variants of 15 open-source projects with up to 32 injected faults, as well as method- and statement-level spectra from a new dataset with 326 true multi-fault versions from the Defects4J benchmark set containing up to 14 real faults. For all three spectrum types we consistently see substantial reductions of the average wasted efforts at different fault levels, of 30%-90% over the best base metric, and generally similarly large increases in precision and recall, albeit with larger variance across the underlying projects. For the method-level real faults, FLITSR also substantially outperforms GRACE, a state-of-the-art learning-based fault localizer.