知网查重样例论文--错误定位方法分类概述
错误定位方法发展至今,大致可以分为3类:
第一类,是基于覆盖分析(covered-based analysis)的错误定位方法[37]。这类方法是通过比较在失败的测试用例下执行的语句和在成功测试用例下执行的语句的覆盖信息,然后来定位可疑代码。这种方法有两种比较策略:通过程序频谱的距离度量来衡量语句与语句之间的偏移距离,这个距离类似于向量的距离,运用到错误定位上,就是在不同的测试用例下,错误测试用例执行的程序轨迹和正确的测试用例执行的轨迹之间的距离;通过统计分析的方法,对所有可疑度语句进行排序,例如,语句s在失败的测试用例中执行了2次,在成功的测试用例中执行了4次,一共失败了4次,成功5次那么根据可疑度Tara计算公式,这条语句的可疑度为(2/4)/(2/4+4/5)=0.38,根据这种计算方式,算出每条语句的可疑度,最后根据可疑度从大到小排序,开发人员再根据排序后的语句查找出错语句。
第二类,是基于程序切片的错误定位方法。其中又分为静态切片和动态切片两大类。利用切片进行错误定位的主要思想是,尽可能去掉与错误代码不相关的部分,留下与错误代码相关的语句,尽量缩小要检查的代码行数。其中,静态切片方法是不执行源程序,根据程序间的依赖关系,识别可能影响某个变量的语句的集合。动态切片是在程序执行过程中,记录程序的数据依赖和控制依赖关系,再结合执行路径,动态的构造出语句间的依赖图,最后根据依赖图得到语句的切片。由于切片要构造数据依赖图和控制依赖图,切片方法的时间复杂度和空间复杂度本身就要比频谱的方法高,但是切片后的语句块却比基于频谱的少很多。在现代计算机的计算速度下,切片方法所需要的计算时间相比频谱方法所需要的计算时间往往不是错误定位技术所要考虑的问题。
第三类,是基于模型的软件错误定位方法(MFL)。这类方法是通过程序推导,建立期望的结果行为模型,然后通过模型检查来检测失效执行对期望代码的违背情况。根据结果与期望值的偏离程度,识别错误行为的偏离度,从而定位错误位置。
以上三类为常见的错误定位类别,除此之外,还有一些别的软件错误定位方法,比如基于机器学习的方法,基于程序变异的方法,基于图挖掘的方法等。