Page 140 - 《软件学报》2020年第11期
P. 140
3456 Journal of Software 软件学报 Vol.31, No.11, November 2020
Rank Test 结果为 Better 表明定位效果较好,Similar 表明定位效果相似,Worse 表明定位效果较差.
具体来说,给定一个程序,错误定位方法 FL1 在该程序所有错误版本的 Exam 值为 G(y);FL1(TF-IDF)在该程
序所有错误版本的 Exam 值为 F(x).在给定的显著性水平ϕ下(本文设定ϕ值为 0.05),可以使用 2-tailed 的 p 值和
1-tailed 的 p 值来得出结论.在 2-tailed 检验中,如果 p≥ϕ,那么接受原假设 H0:FL1(TF-IDF)在所有错误版本的
Exam 值与 FL1 不存在显著差异,从而 FL1(TF-IDF)和 FL1 具有相似的定位效能(用 Similar 表示);否则,备择假设
H1:FL1(TF-IDF)和 FL1 存在显著差异会被接受.对于 1-tailed 的 p 值,有两种情况:1-tailed(right)和 1-tailed(left).
在 1-tailed(right)检验中,如果 p≥ϕ,那么接受原假设 H0:FL1(TF-IDF)在所有错误版本的 Exam 值不趋于显著地
大于 FL1;否则接受假设 H1:FL1(TF-IDF)在所有错误版本的 Exam 值趋于显著地大于 FL1,从而 FL1(TF-IDF)的
定位效能低于 FL1(用 Worse 表示).在 1-tailed(left)检验中,如果 p≥ϕ,那么假设 H0:FL1(TF-IDF)在所有错误版本
的 Exam 值不趋于显著地小于 FL1 会被接受;否则,备择假设 H1:FL1(TF-IDF)在所有错误版本的 Exam 值趋于显
著地小于 FL1,即 FL1(TF-IDF)的定位效能高于 FL1(用 Better 表示).
表 4 展示了在真实错误(real fault)、植入错误(seeded fault)和所有错误(total)这 3 种情况下的 Wilcoxon-
signed-rank Test 统计结果,给出具体的 p 值和对比结果.以 ER1′(TF-IDF)和 ER1′在真实错误上的对比为例,其
2-tailed、1-tailed(right)和 1-tailed(left)的 p 值分别为 6.55e−03,8.14e−01 和 4.32e−02.这表明在真实错误上,运用
TF-IDF 方法后,ER1′的 Exam 值减小了.因此在真实错误上,基于 TF-IDF 的定位方法改进了 ER1′的定位效果,结
果为 Better.如表 4 所示,与 8 种定位方法(即 ER1′、GP02、GP03、GP19、ER5、Dstar、Ochiai 和 Tarantula)的
对比结果可以看出,在真实错误、植入错误和所有错误这 3 种情况上,基于 TF-IDF 的方法均取得了 7 个 Better
和 1 个 Similar 的结果.同时可以看出,基于 TF-IDF 方法在不同的 SFL 公式中有不同的效能.究其原因是,不同的
SFL 公式对 4 个参数 a np 、a nf 、a ep 、a ef 计算时的侧重不同,导致基于 TF-IDF 方法在对这 4 个参数重新计算后
的侧重也存在不同,从而在不同的 SFL 公式上得到了不同的效能提升结果.
Table 4 Wilcoxon-signed-rank Test of the effectiveness comparison
表 4 基于 Wilcoxon-signed-rank Test 的有效性对比
Comparison 2-tailed 1-tailed(right) 1-tailed(left) Conclusion
ER1′(TF-IDF) Real faults 6.55e−03 8.14e−01 4.32e−02 Better
vs. Seeded faults 1.09e−02 9.69e−01 9.07e−04 Better
ER1′ Total 1.66e−02 9.18e−01 8.37e−03 Better
GP02(TF-IDF) Real faults 9.44e−01 4.86e−01 5.42e−01 Similar
vs. Seeded faults 5.00e−03 7.91e−01 2.95e−02 Better
GP02 Total 9.90e−03 5.07e−01 4.97e−02 Better
GP03(TF-IDF) Real faults 3.17e−02 9.77e−01 4.03e−02 Better
vs. Seeded faults 2.47e−02 9.85e−01 4.16e−03 Better
GP03 Total 2.88e−02 8.57e−01 1.45e−02 Better
GP19(TF-IDF) Real faults 5.11e−03 7.91e−01 2.34e−02 Better
vs. Seeded faults 7.47e−03 9.70e−01 4.67e−03 Better
GP19 Total 1.40e−02 9.32e−01 7.14e−03 Better
ER5(TF-IDF) Real faults 2.47e−02 9.85e−01 4.16e−03 Better
vs. Seeded faults 1.80e−02 9.63e−01 1.86e−02 Better
ER5 Total 1.95e−02 9.90e−01 9.87e−03 Better
Dstar(TF-IDF) Real faults 3.45e−02 8.60e−01 2.09e−02 Better
vs. Seeded faults 1.09e−02 9.69e−01 9.07e−02 Better
Dstar Total 1.88e−02 9.91e−01 9.54e−03 Better
Ochiai(TF-IDF) Real faults 6.55e−03 8.14e−01 5.00e−03 Better
vs. Seeded faults 9.44e−01 4.86e−01 5.42e−01 Similar
Ochiai Total 9.75e−01 5.00e−01 5.25e−01 Similar
Tarantula(TF-IDF) Real faults 6.55e−03 8.14e−01 5.00e−03 Better
vs. Seeded faults 2.47e−02 9.85e−01 4.16e−03 Better
Tarantula Total 4.68e−03 9.98e−01 2.45e−03 Better
由以上实验结果可以看出,基于 TF-IDF 的定位方法提升了程序缺陷的定位效能.基于二进制状态信息仅能
表示执行和未执行两种状态,无法提供更多的语义信息.与二进制状态信息相比,基于 TF-IDF 的定位方法利用