Page 256 - 《软件学报》2021年第7期
P. 256
2174 Journal of Software 软件学报 Vol.32, No.7, July 2021
Number of statements examined
Expense= ×100% (6)
Total number of statements in the program
EXAM(检查得分) [22] .EXAM 得分可以直观地反映不同错误定位方法的效率,该指标表示在相同程序语
句检查范围内定位到程序错误的数量,其值越高,则定位效果越好,公式具体如下:
Number of fault examined
EXAM= ×100% (7)
Number of statements examined
时间开销.定位错误需要的时间代价,它反映了不同错误定位方法的性能及时间效率.
3.3 实验设计
为了验证本文提出的基于路径分析和信息熵的上下文错误定位方法,设计对比实验评估其有效性.用于对
比实验的错误定位方法主要有 3 组共 7 种类型,其中第 1 组为经典的错误定位技术,即 Tarantula、Ochiai 和
Naish1;第 2 组为较优的 Dstar(Tarantula、Ochiai、Nsish1、Dstar 公式参见表 1)、Naish2(公式(8))和 Russel & Rao(公
[5]
式(9)),其中,Dstar 公式中的*通常取 2 ,后两个是经理论证明的最优公式 [23] ;第 3 组为基于信息量的错误定位方
法 SIQ [18] .
Naish 2 N N CS (8)
CF
N CS N US 1
Russel & Rao N CF (9)
N CF N UF N CS N US
同时实验设计了如下两个问题.
(1) 本文提出的 FLPI 方法能否提高错误定位的准确度?若能,具体提高了多少?
(2) 本文提出的 FLPI 方法能否提高错误定位的效率?若能,提高了多少?
3.4 实验结果与分析
在 17 个开源程序上开展对比实验,错误定位方法在每个程序不同版本上定位到错误时累积检查语句数的
对比结果见表 5,而不同方法定位代价的对比结果见表 6.
Table 5 Comparison of cumulative check statements between FLPI and other methods
表 5 FLPI 与其他方法累积检查语句数的比较
程序 Tarantula Ochiai Naish1 Dstar Naish2 R&R SIQ FLPI
print_tokens 769 739 905 744 840 846 723 687
print_tokens2 271 213 284 219 177 202 197 165
replace 1 448 1 417 1 460 1 503 1 611 1 684 1 411 1 348
schedule 390 396 634 446 486 596 377 346
schedule2 1 182 1 133 1 017 1 097 1 034 950 1 010 939
tcas 2 709 2 682 2 527 2 518 2 527 2 511 2 414 2 335
totinfo 922 799 622 730 643 859 615 594
NanoXML v 1 1 853 1 772 1 884 1 826 1 892 2 068 1 720 1 694
NanoXML v 2 1 592 1 501 1 703 1 491 1 736 1 569 1 501 1 489
NanoXML v 3 2 396 2 177 1 752 1 815 1 807 1 793 1 748 1 690
NanoXML v 5 2 847 2 693 2 516 2 573 2 684 2 904 2 510 2 486
XML-sec v 1 4 369 4 184 4 010 4 022 4 107 4 236 3 852 3 692
XML-sec v 2 3 072 2 979 2 968 2 896 3 061 3 308 2 809 2 611
XML-sec v 3 5 384 5 306 5 247 5 390 5 413 5 610 4 767 4 494
JFreeChart 45 632 44 826 44 192 43 771 44 667 45 075 41 037 37 833
Joda-Time 29 156 28 365 28 053 28 126 27 892 28 904 26 195 24 231
Mockito 13 934 13 700 12 973 13 084 12 905 14 098 11 965 10 586
累积检查语句数 117 926 114 882 112 647 112 251 113 482 117 113 104 851 97 220
注:将 Russel & Rao 简称为 R&R
使用累积检查语句数指标分析可知:在 17 个程序上,FLPI 方法累积检查语句总数均少于其他对比方法,其
占 Tarantula、Ochiai、Naish1、Naish2、Dstar、Russel & Rao 和 SIQ 方法累积检查语句总数的比例分别为 82.44%、
84.63%、86.31%、86.61%、85.67%、83.01%和 92.72%.针对 3 组对比对象,累积检查语句数平均减少了 14.09%.