[发明专利]一种基于动态切片的轻量级错误定位技术实现方法有效
申请号: | 201510050259.1 | 申请日: | 2015-01-30 |
公开(公告)号: | CN104572474B | 公开(公告)日: | 2017-09-29 |
发明(设计)人: | 张迎周;滕庆亚;马凤娇;居友道;徐曼青;高海燕;徐晨晨;闫丽 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京知识律师事务所32207 | 代理人: | 汪旭东 |
地址: | 210046 江苏省*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明是一种基于动态切片的轻量级错误定位方法,最顶层是测试用例生成模块,主要负责测试用例的自动化生成。第二层是程序状态修改模块,主要负责动态地改变谓词的结果,以产生值得进行切片的关键谓词。其余模块分别是断点分析模块、切片分析模块和可疑度统计模块;其中,断点分析模块主要负责分析程序崩溃的情况,对内存泄漏和堆栈溢出情况下无法正常执行结束的程序进行分析;切片分析模块主要是对依赖图进行动态切片,切片之后的结果以执行了程序哪几行的形式反馈给用户,用户根据切片结果,对其进行初步分析;可疑度统计模块主要负责计算每条可疑语句块的可疑度。大大减少了切片的工作量。精确的计算出程序崩溃时候的切片语句。 | ||
搜索关键词: | 一种 基于 动态 切片 轻量级 错误 定位 技术 实现 方法 | ||
【主权项】:
一种基于动态切片的轻量级错误定位技术实现方法,其特征在于该方法由5个模块组成,其中,最顶层是测试用例生成模块,负责测试用例的自动化生成;第二层是程序状态修改模块,负责动态地改变谓词的结果,以产生值得进行切片的关键谓词;其余模块分别是断点分析模块、切片分析模块和可疑度统计模块;其中,断点分析模块负责分析程序崩溃的情况,对内存泄漏和堆栈溢出情况下无法正常执行结束的程序进行分析;切片分析模块是对依赖图进行动态切片,切片之后的结果以执行了程序哪几行的形式反馈给用户,用户根据切片结果,对其进行初步分析;可疑度统计模块负责计算每条可疑语句块的可疑度;在对源程序进行切片时,并非漫无目的的寻找切片兴趣点,而是,通过先寻找程序中存在的谓词,对其结果进行强制改变,从而使程序的执行结果发生变化,产生关键谓词,再对关键谓词进行切片,其次,针对程序不包含谓词的情况提出了一种二分断点算法,精确的计算出程序崩溃的时候的切片语句,该方法的具体步骤如下:1.程序状态修改1.1、有谓词情况1)读取源程序,每次读取一行,用正则表达式进行谓词匹配,并记录匹配到的谓词,若程序无谓词,则跳转到步骤1.2;2)修改谓词的取值,修改后有两种情况:第一种,修改谓词后程序的执行状态没发生改变,此时继续查找下一个谓词;第二种,程序的执行状态发生改变,这时记录下使得程序状态发生改变的谓词,取得所有谓词后,执行步骤2;1.2、无谓词情况:对于错误的测试用例,程序的结果有两种,第一种是产生错误的输出结果,第二种是程序无法正常执行结束,中途程序报错并崩溃直接退出执行,报告异常;1)对于第一种,直接从错误的输出结果的变量开始进行后向切片,得到影响该变量的语句块;2)对于第二种,使用二分法设置断点;3)在得到程序执行结束后的最后记录的断点和此断点的前一个记录的断点之后,取两者之间的最小值,在最小的断点之后插入一条程序强制停止执行的语句,然后再对其进行切片;4)得到程序的切片结果之后,将其加上上一步骤所述的两个断点之间的所有语句,并记录为新的切片结果,送入下一个模块分析;2、切片分析:1)运行源程序产生源程序的src.bc文件;2)产生每个基本块的追踪代码;3)链接动态库产生可执行exe文件;4)运行后缀名为.trace.exe的可执行文件,产生切片结果;5)对错误的测试用例的切片结果取交集Uf;6)对成功的测试用例的切片结果取交集Us;7)取Uf和Us的交集Uf+s;再计算UFn=Uf‑Uf+s;8)将Uf+s中的语句设其可疑度为0;将(UF1)U(UF2)…U(UFn)=UF中的语句设其可疑度为最高100%,可疑度最高的语句将被优先检查,剩下的未被检查的语句Uf’=Uf‑UF将被送到可疑度分析模块进行下一步分析;3、可疑度分析:1)可疑度分析矩阵第一列为Uf’的所有语句,这些语句都是切片处理后的语句,相比较和直接使用统计分析的方法有很大的简化度;2)可疑度分析矩阵第一行为所有执行的测试用例;3)可疑度分析矩阵的每个元素为执行这个测试用例的时候是否执行过这条语句,1为执行,0为未执行;4)对于每个测试用例的每条语句,计算执行了这个语句的失败和成功的测试用例的个数,f和s;5)计算f和s占总失败测试用例的个数的比值fail%和占总成功测试用例的比值success%;6)最后计算每条语句的可疑度,公式如下:T(s)=fail%fail%+success%]]>4、错误定位根据每条语句的可疑度,由高到低,分别检查每条语句,检查到错误语句后记录下出错语句。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510050259.1/,转载请声明来源钻瓜专利网。