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%.
   251   252   253   254   255   256   257   258   259   260   261