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 仅代表语句是否被测试用例执行.其信息表达能力有限,无法显示语句执行对
测试用例的影响程度,限制了其错误定位精度.尤其在程序规模大的情况下,不相关的语句将迅速增加,这对软