APP下载

基于互信息的缺陷定位方法

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查看全文

猜你喜欢

程序实验方法
记一次有趣的实验
做个怪怪长实验
试论我国未决羁押程序的立法完善
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
NO与NO2相互转化实验的改进
实践十号上的19项实验
用对方法才能瘦
创卫暗访程序有待改进
四大方法 教你不再“坐以待病”!