Page 136 - 《软件学报》2020年第11期
P. 136
3452 Journal of Software 软件学报 Vol.31, No.11, November 2020
件调试带来更大干扰.因此,融入丰富的有效信息对覆盖信息矩阵进行优化,获得更为精准的定位有效信息,有
利于提高错误定位精度.
2 基于词频-逆文档频率的错误定位方法
(1) 方法原理
基于词频-逆文档频率的错误定位方法的基本思想是,利用 TF-IDF 技术构建覆盖信息矩阵.这个矩阵中的
每一个元素的值不再是代表执行或未执行的二进制信息,而是表示语句对测试用例的影响程度.TF(s,t)对应的
是语句 s 在测试用例 t 中的 TF 值.一个测试用例中执行的语句数越多,按照公式(1)中 TF 值的计算,测试用例 t
中每个语句出现一次,分子为 1,分母为语句数的总和,因此 TF(s,t)值越小.IDF(s)是语句 s 在所有测试用例的执行
频度:如果 s 在许多测试用例中执行,则 IDF(s)值较小;如果 s 在少数测试用例中执行,则 IDF(s)值较大.
假设程序 P 包括 N 个语句,分别为{s 1 ,s 2 ,…,s N },这些语句被 M 个测试用例 T 执行.测试用例 T 为{t 1 ,t 2 ,..,t M },T
中至少包含一个失败的测试用例.图 3 左侧的 M×(N+1)矩阵为测试用例运行后的语句覆盖信息矩阵以及测试用
例的运行结果.如果语句 s i 被测试用例 t k 执行,则 x ik 为 1,否则为 0.errors 表示测试用例执行结果,它是由 M 个测
试用例的结果{e 1 ,e 2 ,..,e M }组成. e i 的值为为 0 表明 t i 是成功的测试用例,值为 1 表明 t i 是失败的测试用例.可以发
现,二进制矩阵仅表示语句在测试用例中是否被执行,并不能得出语句对测试用例的影响程度.因此,本文方法
采用 TF-IDF 对矩阵进行重新计算.在左侧 M×(N+1)的二进制矩阵的基础上,对矩阵中的元素 x ij 计算出
TFIDF(x ij ),具体计算方法为公式(4)~公式(6).
TF ()x ij = x × ij 1 (4)
+
N t
1 log( ( ))
i
IDF(x ij )=log 10 (M/DF(s j )) (5)
TFIDF(x ij )=TF(x ij )×IDF(x ij ) (6)
公式(4)计算 x ij 的 TF 值.在公式(4)中,x ij 为图 3 左侧二进制矩阵中的一个元素,值为 1 或 0.N(t i )为测试用例
t i 中被执行的语句的个数,即图 3 左侧二进制矩阵 M×N 中第 i 行值为 1 的个数.公式(5)计算 x ij 的 IDF 值.M 为测
试用例的总数,DF(s j )为所有测试用例中执行语句 s j 的测试用例数(如果 DF(s j )为 0 时,取 IDF(x ij )为 0).参照实验
数据,公式(4)和公式(5)选取常用的 log 和 log 10 .最后,基于公式(4)和公式(5),公式(6)计算 x ij 的 TF-IDF 值.
N statements errors N dimensional errors
x ⎡ 11 x 12 ... x 1N ⎤ ⎡ 1 e ⎤ ⎡ TFIDF (x 11 ) TFIDF (x 12 ) ... TFIDF (x 1 ) ⎤ N ⎡ 1 e ⎤
⎢ ⎥ ⎢ ⎥ → ⎢ ⎥ ⎢ ⎥
⎢ x 21 x 22 ... x 2N ⎥ ⎢ 2 e ⎥ ⎢ TFIDF (x 21 ) TFIDF (x 22 ) ... TFIDF (x 2 ) ⎢ 2 e ⎥
N ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎣ M x 1 M x 2 ... x MN ⎦ M e ⎣ ⎦ ⎣ TFIDF ( M x 1 ) TFIDF x 2 ) ... TFIDF x ) M e ⎣ ⎦
( MN ⎦
( M
Fig.3 Binary matrix and the TF-IDF matrix of M executions
图 3 M 个测试用例的二进制矩阵和 TF-IDF 矩阵
本文基于构建的 TF-IDF 矩阵重新定义语句 s j 的 4 个参数 a np ,a nf ,a ep ,a ef .公式(7)~公式(10)分别为语句 s j 的 4
个参数 a np ,a nf ,a ep ,a ef 的计算公式.
a np ()s = ∑ M 1 (1 TFIDF− ( )) (1x ij × − e i ) (7)
i=
j
a nf ()s = ∑ M 1 (1 TFIDF− ( ))x ij × e i (8)
i=
j
a ep ()s = ∑ i= M 1 TFIDF ( ) (1x × ij − e i ) (9)
j
a ef ()s = ∑ M 1 TFIDF ( )x × e i (10)
ij
j
i=
最后,本文方法根据 4 个重新定义的参数,采用表 1 的可疑值计算公式计算出每个语句的可疑值.
(2) 例子演示
如图 4 所示,本小节通过包含错误语句 s 6 的程序 P 展示基于 TF-IDF 的错误定位方法工作原理.这个例子选