基于互信息的缺陷定位方法
2021-07-21李倩倩牟永敏崔展齐
计算机工程与设计 2021年7期
李倩倩,牟永敏,崔展齐
(北京信息科技大学 网络文化与数字传播北京市重点实验室,北京 100101)
0 引 言
软件缺陷定位[1](software fault location)是指当软件发生失效时,程序人员通过分析源码找到引发该失效的缺陷代码的行为。传统的缺陷定位技术采用手动设置断点的方式进行调试,但这类方法借助于手工的方法,定位缺陷语句的代价高,同时未能充分利用测试用例的执行行为和执行结果的信息。
目前,缺陷定位方法根据是否需要执行测试用例可以分为:静态定位方法和动态定位方法[2,3];静态定位方法主要采用代码审查的方式,通过对被测程序的内部结构(控制流与数据流等)进行分析从而定位出缺陷的具体位置,动态定位方法则依赖于执行信息进行检测。动态错误定位方法主要包括:基于谓词[4,5]、基于程序切片[6,7]、基于模型[8]、基于数据挖掘[9-12]以及基于频谱的方法等。然而前4种方法由于对测试用例需求量大、时间或空间复杂度高、模型构建复杂等缺点在实际应用中不及基于频谱的缺陷定位方法(spectrum-based fault localization,SFL)。SFL对于测试用例的规模与测试用例覆盖程度十分敏感,同时易受可疑度公式的影响,由此充分挖掘程序频谱和执行结果之间存在的潜在关系,构造合适的可疑度计算公式十分重要。基于此提出了一种基于互信息的缺陷定位方法——MIStar,同时使用西门子数据集进行验证,探究缺陷定位效率,与已有的经典可疑度公式进行对比,实验结果表明,该方法具有良好的定位效果。……
登录APP查看全文
