Page 135 - 《软件学报》2020年第11期
P. 135

张卓  等:基于词频-逆文件频率的错误定位方法                                                         3451


                    •   T:程序 P 的测试用例集,共包含 M 个测试用例.
                    •   s i :程序 P 中第 i 个可执行语句.
                    •   t i :测试用例集 T 中第 i 个测试用例.
                    •   a np (s i ):未执行语句 s i 的通过测试用例数.
                    •   a nf (s i ):未执行语句 s i 的失败测试用例数.
                    •   a ep (s i ):执行语句 s i 的通过测试用例数.
                    •   a ef (s i ):执行语句 s i 的失败测试用例数.
                    根据以上定义,图 2 为程序 P 执行完测试用例集 T 后的语句覆盖信息.P={s 1 ,s 2 ,...,s N },T={t 1 ,t 2 ,...,t M }.t 1 到 t M
                 中至少包含一个错误的测试用例.x ij 表示程序 P 中的语句 s j 在测试用例 t i 执行下的覆盖情况:1 表示被覆盖,即
                 测试用例 t i 执行了语句 s j ;0 表示未被覆盖,即测试用例 t i 没有执行语句 s j .左侧的 M×N 矩阵即为语句的覆盖情
                 况,右侧为结果向量 e.如果 t i 是成功的测试用例,则 e i 为 0;否则为 1.
                                                      N  statements  errors
                                                   x ⎡  11  x 12  ...  x 1N ⎤  ⎡  1 e ⎤
                                                   ⎢            ⎥  ⎢  ⎥
                                                   ⎢  x 21  x 22  ...  x 2N ⎥  ⎢  2 e  ⎥
                                                   ⎢             ⎥   ⎢    ⎥
                                                   ⎢            ⎥  ⎢  ⎥
                                                   ⎣  M x  1  M x  2  ...  x MN ⎦  M e ⎣  ⎦
                                       Fig.2    Coverage information of M test cases’ executions
                                             图 2   M 个测试用例执行后的覆盖信息

                    根据 SFL 定义中的 4 个参数 a np ,a nf ,a ep ,a ef ,可以由可疑值计算公式计算出程序 P 中 N 个语句的可疑值.如果
                                                                               [1]
                 一个语句具有相对较高的 a ef 值、较低的 a ep 值,则这个语句具有较高的可疑值 .表 1 列举了 SFL 最优的典型
                 可疑值计算公式.Xie 等人      [2,10] 在理论分析的基础上总结了几种典型的最优 SFL 公式,即 ER1′、ER5、GP02、
                                                                [4]
                                                      *
                 GP03 和 GP19.除了这 5 种理论最优公式以外,D 是实证调查 中错误定位效力最优的定位方法.
                                               Table 1  Optimal formulas of SFL
                                                    表 1   最优 SFL 公式
                                  Name          Formulas          Name          Formulas
                                               ⎧ ⎪ −  1,  if  ne >  a  0
                                     Naish1    ⎨                    Wong1         a ef
                                                   a
                                               ⎪ ⎩ a np , if  ne ≤ 0
                                                    a ep                           ef a
                               ER1′   Naish2   ef a −  a ep + a np + 1  ER5  Russel&Rao  ef a +  a nf +  a ep +  a np
                                               ⎛    a   ⎞                      ⎧ 0, if  ne > 0
                                                                                   a
                                     GP13     ef a ⎜  ⎜  1+  ep  ⎟     Binary   ⎨
                                                                                   a
                                                   a
                                               ⎝  2 ep +  ef a ⎟  ⎠            ⎩ 1,  if  ne ≤ 0
                                              (                                  2
                                  GP02         ef  a np  ) 2 a +  +  a    GP03   | a −  a ep  |
                                                         ep
                                                                                 ef
                                                                                   * ef a
                                                                      *
                                  GP19      ef a  | a −  ep  ef a +  a nf −  a np  |  Dstar(D )
                                                                                 a nf +  a ep
                                                                                   ef a
                                                   ef a                          ef a +  a
                                  Ochiai                         Tarantula           nf
                                              ( ef a +  a nf  )( ef a +  a ep )  ef a  +  a ep
                                                                              ef a +  a nf  a ep +  a np
                                         *
                                                              [4]
                                                 *
                    需要特别进行说明的是,D 公式中的 通常被赋值为 2 .
                    SFL 以其较为简单的工作原理和较好的定位效果得到了广泛研究和应用.然而,它使用的信息覆盖矩阵只
                 是简单的二进制信息矩阵,0 和 1 仅代表语句是否被测试用例执行.其信息表达能力有限,无法显示语句执行对
                 测试用例的影响程度,限制了其错误定位精度.尤其在程序规模大的情况下,不相关的语句将迅速增加,这对软
   130   131   132   133   134   135   136   137   138   139   140