Page 141 - 《软件学报》2020年第11期
P. 141
张卓 等:基于词频-逆文件频率的错误定位方法 3457
词频(TF)获取语句在单个测试用例执行情况和利用逆文本频率指数(IDF)获取语句在整个测试用例集执行情
况,最后综合局部和全局两个维度的信息,形成更丰富的语句和测试用例的关系信息,能识别更多二进制状态信
息无法发现的差异性影响,从而提升定位效能.以 gzip 程序中错误版本 v3 为例.其中,第 405 行为非缺陷语句.该
语句被所有的测试用例覆盖,基于二进制状态信息的矩阵无法体现出第 405 行语句对测试用例结果的差异性
影响.而基于 TF-IDF 的方法能将第 405 行对测试用例结果的影响降为 0,有效防止了第 405 行对缺陷定位结果
的干扰.因此,基于 TF-IDF 的方法融合了更丰富的有效信息到信息覆盖矩阵中,更准确地反映出语句和测试用
例之间的关系,从而解决了信息表达能力弱对定位精度上限的限制问题,提升了缺陷定位效能.
(3) 有效性威胁
本文实验有如下有效性威胁.
• 本实验的前提是失败的测试用例运行的时候含有缺陷的语句是被执行的,但是当程序存在多个缺陷
并且这些缺陷是在一个传播链上进行传播的时候,这个假设并不成立,比如多个缺陷中有的缺陷是在
其他缺陷激活时才会发生的情况.但是本实验进行的单错误的研究是多错误研究的基础,因此这也是
当前的研究大都基于单错误的原因.
• 其次,本实验选用的实验对象只是广泛应用于缺陷定位研究的典型程序,现实世界中的程序多种多样,
这些实验程序并不能覆盖现实中的各种类型的错误,也不能预测到现实程序调试中的许多未知因素.
但是本实验选用的程序是错误定位领域具有代表性的实验程序,具有说服力.同时,在将来的工作中,我
们将关注更多的现实工程中的程序,并在其基础上进行实验.
4 相关工作
基于覆盖信息的错误定位技术研究是当前研究的热点,本节将对这些工作进行简要的介绍,更多的关于各
类错误定位的工作可以参考综述文献[1].
基于程序覆盖信息的错误定位技术的基本思想是:首先,对大批量的测试用例在目标程序上的运行信息进
行收集;然后,根据这些信息试图寻找与程序错误输出相关联的位置信息,即程序实体为缺陷的可疑值.SFL [16] 是
最典型的基于程序覆盖信息的错误定位技术.使用 SFL 技术的时候不需要分析程序内部纷繁复杂的依赖关系
和逻辑结构,只需根据外部测试用例的运行情况就能成功定位程序的错误所在.SFL 技术中有许多代表性的工
作,比如 Jaccard 技术和 Tarantula 技术,它们分别是由 Chen 等人 [17] 和 Jones 等人 [18] 提出的,其中,Tarantula 是在后
续研究中被广泛使用和对比的技术.之后,Abreu 等人 [19] 提出了 Ochiai 技术,在与 Tarantula 进行的实验对比
中,EXAM 值平均提高了 5%.后来,他们又对 Tarantula 等技术进行了有效性的评估,并应用 Ochiai 评估了测试用
例 [20] .Wong 等人 [21,22] 在研究了程序的数据和控制流程的基础上,提出了 Wong1-3、Wong3′和一些缩减搜索域的
*
方法.Wong 等人 [23,24] 还提出当前最优的 SFL 技术 Dstar(D ),它是一种基于交叉表的方法,本文实验和 Dstar 进行
[7]
了对比.Lee 提出了根据语句执行次数来判断其可疑值的错误定位技术.Xie 等人 [10] 理论上研究了 GP 进化公
式.Tan 等人 [25] 提出通过增大边际权重提高基于频谱的错误定位方法.Dean 等人 [26] 为提升多错误定位效能提出
了基于 linear 的方法.Jones 等人 [27] 运用聚类技术将由同一个缺陷引发的程序错误的失败测试用例归为一类,之
后对每一个类别中的单缺陷再进行缺陷定位,但是此种方法对互相影响和传播的错误没有办法实现很好的定
位.Abreu 等人 [28,29] 通过将 SFL 技术与基于模型的诊断技术进行集成,以此提出基于频谱的多错误定位方法
Zoltar-M,实现了多错误的有效定位.Abreu 等人 [30] 为缓解“预言家难题”提出了使用程序状态的错误定位方法.
Xie 等人 [31,32] 提出使用蜕变测试的方法来缓解“预言家难题”.本文方法在上述 SFL 方法的基础上,采用 TF-IDF
优化覆盖信息矩阵,提高了错误定位效能.
偶然正确性(coincidental correctness)问题是指出现执行了错误语句的成功测试用例的情况.偶然正确性问
题会对错误定位性能产生不利的影响,如何识别出这种执行力错误语句的成功测试用例,是解决偶然正确性问
题的关键所在.Wang 等人 [33] 提出使用匹配上下文模型(context pattern)的方法来识别偶然正确性问题.Gopinath
等人 [34] 在 SFL 方法中融入了规约分析,并提升了错误定位的性能.Masri 等人 [35,36] 定义了描述具有偶然正确性