[发明专利]一种基于面向对象程序切片谱的错误定位方法有效
申请号: | 201210184233.2 | 申请日: | 2012-06-06 |
公开(公告)号: | CN102750223A | 公开(公告)日: | 2012-10-24 |
发明(设计)人: | 李必信;文万志 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京天翼专利代理有限责任公司 32112 | 代理人: | 王鹏翔;朱戈胜 |
地址: | 210096*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 面向 对象 程序 切片 错误 定位 方法 | ||
技术领域
本发明提出了一种基于面向对象程序切片谱的错误定位方法,主要是利用面向对象程序切片谱来解决面向对象程序的错误定位问题,属于软件调试的技术领域。
背景技术
在软件开发和维护过程中,程序员需要不断的调试程序,而错误定位是调试活动中最困难、最耗时的任务之一。错误定位即定位引起软件失效的错误,传统的方法有两种:一是在程序中插入输出语句,根据输出结果去分析可能导致异常的错误;二是在程序中可能产生错误的地方设置断点,然后单步执行分析错误产生的位置。这两种方法主要通过手动完成,效率不高。近些年来,软件正变得越来越复杂多样,这给软件调试者带来了巨大的挑战。自动化,半自动化的软件错误定位技术因而也变成最热门的研究方向之一,主要技术有二分查找计算树模型法、Delta调试法、谓词交换法、构造辨别子图法、程序切片法和测试覆盖分析法等等。
程序切片技术通过分析数据依赖和控制依赖提取与错误相关的部分,删除与错误无关的部分,从而可缩小错误定位的搜索域。早期的程序切片技术主要有动态切片技术、静态切片技术、执行切片技术、相关切片技术和关键切片技术等。通常,通过这些技术所取得的切片相对保守,规模很大,单一的切片不太适合实际应用中的软件程序的错误定位。基于程序谱的错误定位技术通过对程序谱的分析,计算程序中各个元素可能产生错误的概率,然后根据各个元素的概率从大到小依次检查以找到错误所在位置。这种技术通常是基于程序击谱,不考虑语句覆盖的频度,而且缺乏了依赖分析,谱的规模一般很大。所以,需要一种新型的结合切片和谱的优点的技术来支持错误定位的实现。
另外,传统的切片一般通过系统依赖图提取,但在面向对象程序中,由于存在着诸多特征(如类、对象;继承性、多态性等),传统的方法很难提取面向对象程序的切片。需要一种新的依赖图构造方法来提取面向对象程序切片,以支持面向对象程序的错误定位。
发明内容
本发明的目的在于使用面向对象程序切片谱来支持面向对象程序的错误定位问题,该错误定位方法效率更高。
为实现上述目的,采用如下技术方案:一种基于面向对象程序切片谱的错误定位方法,包括如下步骤:
1).根据失效测试TF和切片准则,并结合面向对象程序系统依赖图,使用图可达性遍历算法,提取错误相关切片集合Slice;
其中,TF={T1,…,Ts}表示测试运行结果错误的测试集合;
GetSlice(Ti)为根据测试执行Ti提取的切片,则错误相关切片集合:Slice=GetSlice(T1)∪GetSlice(T2)∪…∪GetSlice(Ts);其中Ti是TF中的一个元素;
2).结合测试覆盖信息T,构建错误相关切片集合Slice的面向对象程序切片谱矩阵M[ei,Tj],矩阵M[ei,Tj]记录了测试Tj覆盖ei的次数;
其中ei是错误相关切片Slice中的一个元素;Tj表示测试覆盖信息集合T中的一个元素;错误相关切片Slice中元素个数为n;
T=TF∪TP,TP={Ts+1,…,Tm}表示测试执行结果正确的测试集合;
面向对象程序切片谱的矩阵元素M[ei,Tj]为:
3).基于矩阵M[ei,Tj],度量Slice中每个元素ei的可疑度suspiciousness(ei),根据suspiciousness(ei)的大小顺序定位出错误位置;
其中suspiciousness(ei)的计算方法为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210184233.2/2.html,转载请声明来源钻瓜专利网。