Page 223 - 《软件学报》2020年第9期
P. 223
2844 Journal of Software 软件学报 Vol.31, No.9, September 2020
得到的结果可能会对分析带来误差.因此,为了得到客观公正的结果,需要花费更多的工作来审查数
据集的质量来确保其准确性;
(3) 实验验证不充分.虽然已有较多的数据集,但是从统计信息来看,大多数研究者还是集中于使用个别
数据集(例如 Zhou 等人 [28] 和 Ye 等人 [47] )来验证他们的方法.一方面说明现有的多个数据集还未受到
研究者的重视,其数据集的可靠性有待于进一步被验证;另一方面表明,现有 IRBL 方法仅在个别数据
集上获得好的性能,其泛化能力仍有待更多实验数据的证实.
4.4 小 结
本节从模型比较、评价指标和实验数据这 3 个方面详细介绍了在近年来对 IRBL 方法进行评估的研究进
展.下面简述主要的发现:
(1) 在实际定位中要选择合适的 IRBL 方法,同时应当注意到,参数配置对结果的有效性的影响比较大.因
此在应用具体 IRBL 方法时,应当选择适当的参数;
(2) 现有研究主要是评价 IRBL 方法的排序性能和分类性能,多数研究并没有从工作量感知的角度来评
价他们的方法,导致现有的研究方法很难满足实际应用的需求;
(3) 目前,已有不同研究者提供的规模较大的数据集供后人使用,但是仍存在一些问题,例如数据集偏向
于 Java 编写的项目.此外,目前大多数研究仍只在少数数据集上测试它们的方法,无法确保其具有良
好的泛化性能.
5 缺陷定位的相关研究工作
缺陷定位是一个涉及层面十分广阔的领域,除了可以使用信息检索技术实现软件缺陷定位,还可以通过其
他多种途径定位软件中的缺陷,例如基于程序频谱的缺陷定位、基于程序变异的缺陷定位、基于多模态的缺陷
定位等.本节中,对其他类型缺陷定位的相关工作进行简要介绍.
5.1 基于程序频谱的缺陷定位
基于程序频谱的缺陷定位(spectrum-based fault localization,简称 SFL)是一类重要的动态定位技术,该类方
法在进定位缺陷时需要执行大量的测试用例,然后通过对测试用例的程序频谱应用评估度量来定位错误语句.
与基于信息检索的方法相类似的,该方法根据度量公式计算程序组件的分数,并对它们进行排序.基于程序频谱
的定位效果依赖于程序频谱的构造方式和度量指标.以下是部分相关研究工作.
2009 年,Rui 等人 [116] 对早期的用于分析程序频谱的特定相似系数的性能进行了评估.实验结果表明,用于分
析程序谱的特定相似系数的优越性能在很大程度上与实验的设计无关.此外,对于低质量的缺陷观察和有限数
量的测试用例,基于程序频谱的缺陷定位已经获得了近乎最佳的准确性.实验也证明了基于程序频谱的缺陷定
位可以有效地应用于嵌入式软件开发的环境中.
2010 年,Lee 等人 [117] 提出了一种利用频率加权函数进行缺陷定位的方法.该方法考虑了每个测试用例执行
的程序语句的频率执行计数来进一步提高缺陷定位的性能.
2015 年,Naish 等人 [88] 发现,现有的遗传规划方法由于评估度量的巨大搜索空间变得缓慢而不可靠.因此,他
们提出了一个“hyperbolic”度量的限定类,其中包含少量的数值参数,由此,遗传规划算法可以在大量的程序频谱
上可靠地发现有效度量,从而使程序组件排序更准确.
2019 年,Ribeiro 等人 [118] 使用数据流频谱评估了 10 个基于程序频谱方法的排名指标的有效性和效率.该实
验证明:使用数据流频谱进行分析,比使用控制流频谱分析效果更好,最高有 50%的缺陷位于排序列表的前 15
位.同年,Ma 等人 [119] 提出了一个统一的系统研究框架来评估和比较单缺陷和多缺陷情况下的基于程序频谱的
缺陷定位方法.该框架实现了一个通用向量模型来深入理解各种基于程序频谱的缺陷定位方法.
5.2 基于变异分析的缺陷定位
基于程序变异的缺陷定位(mutation-based fault localization,简称 MFL)是一种使用变异算子模拟人为错误