基于信息检索的软件缺陷定位方法是当前软件缺陷定位领域中的一个研究热点.该方法主要分析缺陷报告文本和程序模块代码,通过计算缺陷报告和程序模块间的相似度,选取与缺陷报告相似度最高的若干程序模块,将其推荐给开发人员.本文对近些年国内外研究人员在该综述主题上取得的成果进行了系统的梳理和总结. 首先,给出研究框架并阐述影响方法性能的三个重要因素:数据源、检索模型和场景应用;其次,依次对这三个影响因素的已有研究成果进行总结;然后,总结基于信息检索的软件缺陷定位研究中常用的性能评测指标和评测数据集;最后总结全文并对未来值得关注的研究方向进行展望。

在软件开发过程中,软件缺陷(software bug)难以避免.对需求理解的偏差、不合理的软件开发过程,亦或 开发人员的疏忽,均有可能在软件项目内引入软件缺陷.这些含有缺陷的软件产品在部署后,可能会产生无法预 测的行为或结果,甚至会对人们的生产和生活方式产生重大影响.当检测到软件内存在缺陷时,开发人员需要借 助软件调试定位并修复缺陷.传统的软件调试方法主要借助手工调试,在可疑代码处设置程序断点,随后重复执 行失败的测试用例,并观察程序断点处的变量取值,不断缩小可疑代码的搜索范围,直至定位到缺陷代码.这种 方法完全通过人工的方式完成,存在缺陷定位代价高、对缺陷报告信息利用不充分、费时费力等问题.因此,研 究人员针对自动化软件缺陷定位方法展开深入研究,试图减轻开发人员负担的同时,提高缺陷定位的效率与精度.

已有的缺陷定位方法按照是否需要执行测试用例,可分为两类:动态缺陷定位方法和静态缺陷定位方法[1]. 其中,动态缺陷定位方法通过搜集测试用例的执行行为和运行结果,重点对被测程序的内在结构进行分析,以确 定缺陷语句在被测程序内的可能位置;静态缺陷定位方法通过分析缺陷报告和程序模块的文本内容并提取特 征,基于特定模型确定可疑的程序模块,并将其推荐给开发人员以辅助定位.动态缺陷定位方法基于测试用例的 覆盖信息定位缺陷,通常可获得比静态缺陷定位方法更好的性能[2].然而在软件维护阶段,开发人员有时并不能 获得足够的测试用例[3],仅能搜集到缺陷报告的信息.静态缺陷定位方法由于不需要搜集测试用例的执行信息, 不会受到程序规模和编程语言等因素的影响,具有缺陷定位代价低和方法可扩展性强等特点,也颇受关注.其 中,基于信息检索的缺陷定位(Information Retrieval-based Bug Localization,简称 IRBL)是目前静态缺陷定位 研究中的热点,也是本综述重点关注的研究问题. IRBL 可视为概念定位(concern localization)[4]或特征定位(feature localization)5]的一个特例.当需要定 位的概念或特征都为缺陷时,概念定位或特征定位又被称为缺陷定位.

IRBL 输入为一个缺陷报告,输出为所有 与该缺陷报告所述缺陷相关的程序模块.该问题在研究时面临缺陷报告和程序模块词汇不匹配和表示方式差 异较大等问题,大部分研究人员从文本挖掘角度设计解决方案.为了对该研究问题进行系统的分析、总结和比 较,我们首先在 IEEE Explore、ACM Digital Library、Elsevier、Springer、CNKI 等学术论文数据库中进行检 索,检索时采用的英文关键词包括 bug localization、fault localization、information retrieval、bug localisation 等; 然后,通过人工审查的方式移除掉与综述主题无关的论文,并通过查阅相关论文的参考文献和相关研究人员发 表的论文列表来进一步识别出遗漏的论文;最终,我们筛选出与该研究问题直接相关的高质量论文共 87 篇(截 止到 2019 年 12 月).

我们首先对每年发表的相关论文的累计总数进行统计,结果如图 1 所示.不难看出,每年发表的论文数整体 上呈上升趋势.在 2013 年之前,每年发表的论文数较少(介于 0 至 4 篇).但在 2013 年之后,随着公开的数据集 和共享的实验代码的不断增多,针对 IRBL 方法的研究逐渐成为静态软件缺陷定位领域内的一个主流研究方 向.在最近 3 年,每年发表的论文总数平均可以达到 13 篇以上.随后我们基于论文发表源对相关论文进行分类, 并按照论文数从大到小进行排序,最终结果如表 1 所示(该表仅列出 CCF 推荐列表中论文数大于 1 的会议和 期刊),其中在软件工程领域权威期刊或会议上发表的论文数总结如下:ICSE 会议(5 篇)、ESEC/FSE 会议(4 篇)、ISSTA 会议(3 篇)、ISSRE 会议(2 篇)、TSE 期刊(5 篇)等.基于已搜索到的相关论文,我们对 IRBL 方法的已有研究工作进行了系统总结,并提出一个研究框架,从 3 个影响因素出发,对不同类型的方法进行系统 的分析和比较,同时对常用的性能评测指标和评测数据集进行归纳.

论文剩余内容安排如下:第 2 节总结 IRBL 方法的研究框架,并识别出三个重要的影响因素(数据源、检索 模型和场景应用);第 3 节到第 5 节分别对这三个影响因素进行详细的分析与总结;第 6 节介绍常用的性能评 测指标;第 7 节介绍常用的评测数据集;最后总结全文并对未来可能值得关注的研究问题进行展望.

成为VIP会员查看完整内容
9

相关内容

专知会员服务
45+阅读 · 2021年3月24日
专知会员服务
31+阅读 · 2021年2月17日
专知会员服务
187+阅读 · 2021年2月4日
专知会员服务
15+阅读 · 2021年1月23日
专知会员服务
30+阅读 · 2021年1月9日
专知会员服务
21+阅读 · 2021年1月5日
专知会员服务
71+阅读 · 2020年12月12日
专知会员服务
108+阅读 · 2020年10月27日
基于知识图谱的推荐系统研究综述
专知会员服务
328+阅读 · 2020年8月10日
[综述]基于深度学习的开放领域对话系统研究综述
专知会员服务
79+阅读 · 2019年10月12日
【综述】基于知识图谱的推荐系统综述
AINLP
14+阅读 · 2020年7月7日
【中科院】命名实体识别技术综述
专知
16+阅读 · 2020年4月21日
基于知识图谱的文本挖掘 - 超越文本挖掘
专知
38+阅读 · 2019年8月18日
综述 | 机器视觉表面缺陷检测
计算机视觉life
8+阅读 · 2019年8月2日
最全综述 | 图像目标检测
计算机视觉life
31+阅读 · 2019年6月24日
综述 | 近5年基于深度学习的目标检测算法
计算机视觉life
38+阅读 · 2019年4月18日
【机器视觉】表面缺陷检测:机器视觉检测技术
产业智能官
25+阅读 · 2018年5月30日
综述 | 知识图谱发展概述
PaperWeekly
75+阅读 · 2017年11月3日
论文动态 | 基于知识图谱的问答系统关键技术研究 #04
开放知识图谱
10+阅读 · 2017年7月9日
Arxiv
6+阅读 · 2018年6月18日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关VIP内容
专知会员服务
45+阅读 · 2021年3月24日
专知会员服务
31+阅读 · 2021年2月17日
专知会员服务
187+阅读 · 2021年2月4日
专知会员服务
15+阅读 · 2021年1月23日
专知会员服务
30+阅读 · 2021年1月9日
专知会员服务
21+阅读 · 2021年1月5日
专知会员服务
71+阅读 · 2020年12月12日
专知会员服务
108+阅读 · 2020年10月27日
基于知识图谱的推荐系统研究综述
专知会员服务
328+阅读 · 2020年8月10日
[综述]基于深度学习的开放领域对话系统研究综述
专知会员服务
79+阅读 · 2019年10月12日
相关资讯
【综述】基于知识图谱的推荐系统综述
AINLP
14+阅读 · 2020年7月7日
【中科院】命名实体识别技术综述
专知
16+阅读 · 2020年4月21日
基于知识图谱的文本挖掘 - 超越文本挖掘
专知
38+阅读 · 2019年8月18日
综述 | 机器视觉表面缺陷检测
计算机视觉life
8+阅读 · 2019年8月2日
最全综述 | 图像目标检测
计算机视觉life
31+阅读 · 2019年6月24日
综述 | 近5年基于深度学习的目标检测算法
计算机视觉life
38+阅读 · 2019年4月18日
【机器视觉】表面缺陷检测:机器视觉检测技术
产业智能官
25+阅读 · 2018年5月30日
综述 | 知识图谱发展概述
PaperWeekly
75+阅读 · 2017年11月3日
论文动态 | 基于知识图谱的问答系统关键技术研究 #04
开放知识图谱
10+阅读 · 2017年7月9日
微信扫码咨询专知VIP会员