Page 224 - 《软件学报》2020年第9期
P. 224

郭肇强  等:基于信息检索的缺陷定位:问题、进展与挑战                                                      2845


         来检测未知错误的定位方法           [12,120−124] ,根据变异体与被测程序的执行结果,利用公式来推算代码语句的出错可
         能性.通常来说,这类方法在语句级别生成变异体,从而能够比较准确地定位出程序中有缺陷的语句.同时,由于
         需对大量程序变异体执行测试用例集,其执行开销较大.以下是部分相关研究工作.
             2015 年,Papadakis 等人 [125] 首次提出了基于变异分析的缺陷定位的概念.他们提出的方法利用各个变异体
         间的相似性来检测缺陷:首先,使用变异算子为待测程序生成变异体;然后,对原程序和变异体执行测试用例并
         获取执行结果;接着,对执行结果构建特征计算变异体包含缺陷的风险分数;最后,根据相同位置的变异体与原
         程序语句风险分数来预测可能包含缺陷语句的位置.
             同年,为了能够很好地处理真实世界中多语言程序的缺陷定位问题,Hong 等人                         [120] 提出了一种基于变异的
         缺陷定位技术.该技术以目标程序的多语言源代码和一组测试用例作为输入,生成一个按照包含缺陷风险值排
         序的语句列表.为了计算每个语句的风险值,该技术首先通过系统地改变每个语句来生成原程序的不同变体;接
         着,根据语句发生特定变异后,测试结果变化情况来计算风险值.值得注意的是:为了提高对多语言程序缺陷定
         位的准确性,他们提出了适用于多语言程序的变异算子.
             由于 MFL 技术的计算开销较大,Liu 等人         [121,122] 在 2017 年提出了两种变异约简策略来降低 MFL 技术的计
         算成本.
             •   一种是面向语句的变异约简策略            [121] ,该策略首先用全套变异算子在失败测试用例覆盖的每个语句上
                产生变异,以确保能够使用完整类别的变异算子;然后利用每个语句上的变异体抽样策略,选择使用特
                定百分比的变异体;
             •   另一种是动态变异执行策略          [122] ,该策略会确定优先执行的变异体和测试用例首先执行,避免进行无用
                的执行来降低计算开销.
             2018 年,Oliveira 等人 [123] 提出一种面向失败测试的变异运行策略 FTMES 来提高基于变异的缺陷定位的有
         效性,并且降低其所需的计算开销.FTMES 只使用一组失败的测试用例来执行变异,并且通过使用覆盖率数据
         替换终止信息来避免执行已通过的测试用例.
         5.3   基于多种模态的缺陷定位

             很多方法只考虑了某一种类型的缺陷定位技术,比如:基于信息检索的方法只考虑了缺陷报告中的文本信
         息及静态特征;基于程序频谱的方法只考虑动态的程序频谱特征.很多研究者发现:同时结合两种或以上类型的
         缺陷定位技术能够发挥出各自的优势,从而能够获得更好的缺陷定位效果.以下是部分相关研究工作.
             2015 年,Le 等人 [45] 将多模态信息检索与程序频谱组合进行缺陷定位,并且自适应地创建了一个特定于某个
         缺陷的模型,以将特定的缺陷映射到它可能的位置.该方法同时考虑了缺陷报告中的文本描述和程序的频谱信
         息,最后结合两者的分析结果获得可疑的术语或单词,并且以此来判断程序组件包含缺陷的可疑程度.
             2017 年,Dao 等人 [54] 研究了代码运行信息对基于信息检索的缺陷定位的帮助.作者在文中比较了 3 种目前
         流行的基于信息检索的缺陷定位方法(BugLocator            [28] ,BLUiR [24] ,AmaLgam [31] )和 3 种代码运行信息(程序覆盖、
         程序切片和程序频谱).实验证明,代码的运行信息会很大改进基于信息检索的缺陷定位方法.
             2019 年,Hoang 等人 [67] 也发现了只考虑缺陷报告和只考虑执行跟踪的方法的限制.他们提出了一种多模态
         缺陷定位方法,通过联合使用缺陷报告和执行跟踪来解决现有方法存在的问题.
         5.4   基于新型应用的缺陷定位
             目前,大多的 IRBL 方法在进行缺陷定位时并没有细致考虑到缺陷的类型,他们的研究是针对所有类型的
         缺陷而言.在现实应用中,进行缺陷定位要面临不同的应用场景,此时,直接使用这些方法可能无法得到预期效
         果.因此,有部分研究开始在更加细分类别的缺陷上研究定位方法.
             •   对软件崩溃的定位.软件崩溃开始研究一种特殊缺陷,这种缺陷经常发生在用户使用软件的过程中,它
                导致软件无法正常工作而出现崩溃界面,因而严重影响用户体验.这类缺陷通常会由软件后台自动收
                集相应的崩溃信息提交给后台服务器.Wu 等人通过挖掘这些崩溃信息,提出了 CrashLocator                           [126] 和
   219   220   221   222   223   224   225   226   227   228   229