基于信息检索的软件缺陷定位方法是当前软件缺陷定位领域中的一个研究热点.该方法主要分析缺陷报告文本和程序模块代码,通过计算缺陷报告和程序模块间的相似度,选取与缺陷报告相似度最高的若干程序模块,将其推荐给开发人员.本文对近些年国内外研究人员在该综述主题上取得的成果进行了系统的梳理和总结. 首先,给出研究框架并阐述影响方法性能的三个重要因素:数据源、检索模型和场景应用;其次,依次对这三个影响因素的已有研究成果进行总结;然后,总结基于信息检索的软件缺陷定位研究中常用的性能评测指标和评测数据集;最后总结全文并对未来值得关注的研究方向进行展望.
http://www.jos.org.cn/jos/ch/reader/view_abstract.aspx?flag=1&file_no=6130&journal_id=jos
在软件开发过程中,软件缺陷(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 节介绍常用的评测数据集;最后总结全文并对未来可能值得关注的研究问题进行展望.
专知便捷查看
便捷下载,请关注专知公众号(点击上方蓝色专知关注)
后台回复“缺陷定位” 可以获取《基于信息检索的软件缺陷定位方法综述》专知下载链接索引