[发明专利]基于动态符号执行的Java程序错误检测方法在审

专利信息
申请号: 201810012366.9 申请日: 2018-01-05
公开(公告)号: CN108304320A 公开(公告)日: 2018-07-20
发明(设计)人: 郑炜;蔺军;曹石超 申请(专利权)人: 西北工业大学
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 西北工业大学专利中心 61204 代理人: 金凤
地址: 710072 *** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 错误检测 动态符号 数组变量 约束条件 求解器 字符串 求解 字符串类型 字符串输出 测试 被测程序 代码模块 范围扩大 方式整合 路径利用 软件测试 整数数组 初始化 符号化 数组 下载 探索 创建
【说明书】:

发明提供了一种基于动态符号执行的Java程序错误检测方法,涉及软件测试领域,本发明首先添加整数数组和字符串类型,创建数组值设置函数,并下载Jconstraints‑z3工具,对被测程序代码模块初始化,探索程序中的路径利用z3求解出约束条件对应的解,按照字符串输出方式整合形成Junit测试用例,本发明在GitHub上选取相对较为复杂的程序,Jdart支持数组变量和字符串的符号化,能够对含有数组变量和字符串的程序进行约束条件的探索,求解出相应的解同时生成Junit测试用例,所能支持的求解器的范围扩大,增加了如coral、SMTInterpol等SMT求解器的支持。

技术领域

本发明涉及软件测试领域,尤其是一种程序错误检测方法。

背景技术

文献“基于动态符号执行的C代码缓冲区溢出检测,北京邮电大学学报,2016,Vol39(z1),p50-54”提出了一个基于底层虚拟机的中间代码的缓冲区溢出检测工具PathChecker。在动态分析阶段,首先结合模糊测试,产生随机输入数据,并实际运行待分析程序,在每次执行过程中PathChecker沿着当前的执行路径进行符号化执行,并不断更新符号状态。在此过程中,若遇到一条缓冲区访问操作指令,则使用SMT求解器检验在当前符号状态下该操作是否一定满足安全性质。符号执行引擎在执行的过程中不断收集路径约束,每次执行结束后,使用深度优先搜索算法对路径约束集合末尾的约束进行取反,以得到一组新的约束。若可以求解,则这组新约束对应于一条未探索的程序路径,否则表示探索不到新的路径,系统将重新产生随机数据。迭代整个过程,直到所有路径分析完毕或者提前设置好的运行时间用尽。此方法能够较好地检测出C代码中的缓冲区溢出漏洞。但是PathChecker的框架不具有可扩展的特性,它所支持的求解器只限定为Z3这一种,导致出现部分约束无法被求解的情况。其次,此方法的检测结果包括了覆盖率和时间,但并未生成具体的测试用例。

发明内容

为了克服现有技术的不足,本发明提供一种程序错误检测方法。

本发明解决其技术问题所采用的技术方案包含如下步骤:

步骤1:首先,在Jconstraints中添加整数数组和字符串类型,在Jconstraints的ArrayType类文件中提供构造函数、符合字符串输出标准的结果展示函数以及符号数组,创建标准的数组值设置函数;

步骤2:从github上下载Jconstraints-z3工具,之后将Jconstraints-z3按照工程导入方式导入到开发集成环境eclipse中,该工具为Jdart提供了调用z3求解器的接口;

步骤3:通过调用存在于Jdart中的ClassInfo中的符合初始化标准的初始化函数和方法初始化函数,对被测程序代码模块初始化:创建一个新任务,对被测试代码中需要被测试的方法的参数创建符号类型变量,对于Java语言的基本类型变量,直接生成对应的符号变量;对于数组变量和字符串,首先从堆中取出引用值,根据引用值调用堆中get方法得到整型数组或字符数组对象本身,之后调用PrimitiveArrayHandler和StringHandler类中annotateObject方法并根据参数传入方式将数组或字符串对象传入到此方法中,创建符号化对象;

步骤4:利用深度优先策略探索程序中的路径,首先访问第一个邻接结点,然后再以第一个邻接结点作为初始结点,访问第一个邻接结点的第一个邻接结点,直到遍历完所有结点,在此过程中,收集if语句包括的约束条件,最后,利用z3求解器求解出约束条件对应的解,利用Jdart中的TestSuiteGenerator类将求出的约束条件对应的解,按照字符串输出方式整合,形成Junit测试用例。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北工业大学,未经西北工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201810012366.9/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top