李政亮 ,陈 翔,2 ,蒋智威 ,顾 庆
1(计算机软件新技术国家重点实验室(南京大学),江苏 南京 210023)
2(南通大学 信息科学技术学院,江苏 南通 226019)
在软件开发过程中,软件缺陷(software bug)难以避免.对需求理解的偏差、不合理的软件开发过程、抑或开发人员的疏忽,均有可能在软件项目内引入软件缺陷.这些含有缺陷的软件产品在部署后,可能会产生无法预测的行为或结果,甚至会对人们的生产和生活方式产生重大影响.当检测到软件内存在缺陷时,开发人员需要借助软件调试定位并修复缺陷.传统的软件调试方法主要借助手工调试,在可疑代码处设置程序断点,随后重复执行失败的测试用例,并观察程序断点处的变量取值.不断缩小可疑代码的搜索范围,直至定位到缺陷代码.这种方法完全通过人工的方式完成,存在缺陷定位代价高、对缺陷报告信息利用不充分、费时费力等问题.因此,研究人员针对自动化软件缺陷定位方法展开了深入研究,试图在减轻开发人员负担的同时,提高缺陷定位的效率与精度.
已有的缺陷定位方法按照是否需要执行测试用例,可分为两类:动态缺陷定位方法和静态缺陷定位方法[1].其中:动态缺陷定位方法通过搜集测试用例的执行行为和运行结果,重点对被测程序的内在结构进行分析,以确定缺陷语句在被测程序内的可能位置;静态缺陷定位方法通过分析缺陷报告和程序模块的文本内容并提取特征,基于特……