[发明专利]基于控制流交集的缺陷自动定位装置及其自动定位方法无效
| 申请号: | 201010254631.8 | 申请日: | 2010-08-17 |
| 公开(公告)号: | CN101894073A | 公开(公告)日: | 2010-11-24 |
| 发明(设计)人: | 叶钢;余丹;李重文;周家杰;马世龙 | 申请(专利权)人: | 北京航空航天大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京永创新实专利事务所 11121 | 代理人: | 周长琪 |
| 地址: | 100191*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 控制 交集 缺陷 自动 定位 装置 及其 方法 | ||
技术领域
本发明涉及软件测试领域,具体涉及一种基于控制流交集的缺陷自动定位装置及其自动定位方法。
背景技术
程序缺陷定位技术是指明一个有缺陷的程序产生异常行为原因的技术。程序缺陷包括程序错误(error)和程序bug。传统的手工缺陷定位技术包括以下几个基本步骤:在程序中设置断点;再次执行程序;检测程序状态以定位产生不正确输出的原因。显然,这样的缺陷定位方式耗费大量的时间、人力和物力。并且针对规模较大的程序,这样的工作手工完成相当困难。因此,如何定位缺陷成为程序开发过程中的瓶颈。
在自动缺陷定位领域,已有许多不同的技术被提出并应用到实践当中。总的来说,这些技术可以被分为两类:静态程序分析和动态缺陷定位。静态程序分析是指在不执行程序的情况下,通过程序分析手段找出程序缺陷的技术。而动态缺陷定位技术是指在程序运行时,通过检测程序行为发现缺陷的技术。
静态程序分析的主要手段有代码走读、模型检测等。代码走读是指程序员逐行的审查程序源码,显然,这仍然是一种耗费大量的时间、人力和物力的低效手段。模型检测是指对被测程序建模,基于模型穷举程序所有可达的状态,并通过检测模型属性发现潜在缺陷的技术。由于穷举程序所有可达的状态会导致程序状态转移成指数增长,随着程序规模的不断扩大,可能的程序状态转移将越来越趋于无穷。因此穷举程序所有可达状态的工作随程序规模扩大而难度不断增大。
由于静态程序分析存在着费时费力和程序状态转移成指数增长等问题。目前动态缺陷定位越来越成为人们关注的焦点。
目前已有的主要动态缺陷定位有几类:包括基于程序数据流的动态不变式发现技术定位程序缺陷,利用最近邻概念定位缺陷,基于程序切片定位缺陷等几种。
这些方法存在以下问题:
第一、许多技术仍停留在理论阶段,没有形成实际应用和已发布的具体装置。如动态不变式发现技术、利用最近邻概念定位技术。
第二、某些已有技术,如最近邻和程序切片等技术,对最终报告的所有可能含有缺陷的缺陷嫌疑点并不排序,使得程序员认为各缺陷嫌疑点等可能地含有缺陷,不利于排错。
第三,已有技术定位缺陷的准确率不高,需要进一步提高准确率,以有效地帮助程序员定位缺陷。
因此目前的缺陷定位技术尚难以满足高效定位的应用需求,对开发效率有不利影响。
发明内容
本发明针对现有缺陷定位技术存在的费时费力以及排错不便、定位缺陷的准确率不高等问题,提供了一种基于控制流交集的缺陷自动定位方法及其自动定位装置。
本发明提供的基于控制流交集的缺陷自动定位装置,主要由类文件改装模块、测试执行模块、成功与失败分类模块、Trace文件解析模块、失败执行交集模块、排序模块以及源代码映射模块组成。类文件改装模块通过在相应的程序点自动加入相应的打印语句,对输入的所有被测Java类文件进行改装,并将改装后的Java类文件和输入的测试用例输出给测试执行模块;测试执行模块对所有测试用例执行改装后的Java类文件,收集每个测试用例输出的trace文件输出给成功与失败分类模块;成功与失败分类模块根据测试执行模块中测试用例执行结果正确与否将所有trace文件分为成功trace文件与失败trace文件,并将这两类trace文件传送给Trace文件解析模块;Trace文件解析模块对所有成功trace文件与所有失败trace文件进行解析处理,将构造的成功执行树形结构集与失败执行树形结构集传递给失败执行交集模块;失败执行交集模块对所有失败执行树形结构求交集,将在每一个失败执行树形结构中都出现的程序点作为缺陷嫌疑点得到失败执行交集,并将失败执行交集与成功执行树形结构集传递给排序模块;排序模块针对失败执行交集中的缺陷嫌疑点,根据每个缺陷嫌疑点在成功执行树形结构集中出现的频率从低到高进行排序,将有序的所有缺陷嫌疑点输出给源代码映射模块;源代码映射模块将有序的所有缺陷嫌疑点映射到Java源代码文件的相应位置,并最终将所有缺陷嫌疑点对应的源代码位置按每个缺陷嫌疑点含有缺陷的可能性从大到小排序后,作为缺陷定位报告显示出来。
本发明还提供一种基于控制流交集的缺陷自动定位方法,其定位处理过程包括如下步骤:
步骤一、类文件改装模块对所有的被测Java类文件改装,在三类程序点:函数入口、函数return语句和分支选择语句,自动加入相应的打印语句;
步骤二、测试执行模块将所有测试用例按照步骤一中改装后的Java类文件执行,并收集每个测试用例输出的trace文件;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010254631.8/2.html,转载请声明来源钻瓜专利网。





