[发明专利]用于符号执行的复杂类型输入变量懒符号化方法及系统在审
申请号: | 202210453325.X | 申请日: | 2022-04-27 |
公开(公告)号: | CN114896145A | 公开(公告)日: | 2022-08-12 |
发明(设计)人: | 陈睿;杨帆;江云松;刘亚威;贾春鹏;施兰兰;车小鹏 | 申请(专利权)人: | 北京轩宇信息技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 马全亮 |
地址: | 100190 北京市海淀区科学院*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 符号 执行 复杂 类型 输入 变量 符号化 方法 系统 | ||
一种用于符号执行的复杂类型输入变量懒符号化方法及系统,包括生成输入驱动文件,通过入口函数指定输入变量和驱动被测函数;分配符号内存;当执行到一条语句时,解释执行和符号执行分别对同一地址上的实际值和符号值进行操作;在执行过程中对内存地址访问时,解释执行直接读写实际值映射表内容;符号执行先检查符号值映射表中该地址上是否存在符号值,存在则直接读写;不存在则创建一个新符号值,符号值映射表中新增一条地址与符号值的映射,再进行正常读写;一次符号执行结束后对收集的约束取反以及求解,最终得到表达式与值的映射关系,生成用例数据文件。本发明针对复杂类型的输入变量,采用懒符号化策略,提升用例的生成速度和降低内存开销。
技术领域
本发明涉及用于符号执行的复杂类型输入变量懒符号化方法及系统,属于程序测试技术领域。
背景技术
目前,符号执行技术由于其自动化、精确的特点已经被广泛应用在各类测试用例生成方法和工具中。其基本原理是,对一个被测软件或模块的输入变量符号化,并根据被测代码的逻辑结构符号化地对代码进行执行,执行过程中的程序状态都采用有关输入变量的符号表达式来刻画,收集当前执行路径的约束条件,并按照一定策略选择该路径上的一个分支点,将路径约束条件中对应的约束取反,再对新产生的路径约束条件进行求解,即可以产生一组关于输入变量的解,也就是一个能够覆盖到指定路径的用例;通过不断迭代搜索,就可以生成覆盖率很高的测试用例。
在此过程中,输入变量的符号化决定了后续符号执行中约束条件符号表达式的准确性和复杂程度。特别是,当输入变量为结构体、指针等复杂类型时,输入变量的符号化涉及到根据具体的实际内存形态展开。例如,一个输入变量为结构体指针,可能指向的是一个长度为N的链表,则对其最准确的符号化是对N个链表结点的具体数据和next成员进行符号化。
现有技术存在主要的问题是,在进行符号执行之前无法知道这个输入变量的具体形态,因此一般的方法会要求用户指定具体的符号化输入,或提前按照给定展开深度来对变量进行符号化。通过用户指定的方法自动化程度低,使用繁琐。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提供了用于符号执行的复杂类型输入变量懒符号化方法及系统,针对复杂类型的输入变量,采用懒符号化策略,有针对性地对输入变量进行符号化,从而提升用例的生成速度和降低内存开销。
本发明的技术解决方案是:
一种用于符号执行的复杂类型输入变量懒符号化方法,包括:
(1)生成输入驱动文件,通过入口函数指定输入变量和驱动被测函数;
(2)分配符号内存:通过解释执行驱动符号执行的方式从入口函数开始执行,先进行内存分配,记录如下3个映射关系:变量分配地址映射表var_addr_map、实际值映射表value_map和符号值映射表sym_map;
(3)当执行到一条语句时,解释执行和符号执行分别对同一地址上的实际值和符号值进行操作;一个变量或表达式在实际值映射表value_map和符号值映射表sym_map中的地址完全一致;
(4)在执行过程中对内存地址访问时,解释执行直接读写实际值映射表value_map中的内容;符号执行需先检查符号值映射表sym_map中该地址上是否存在符号值,若存在则直接读写;若不存在则创建一个新符号值,符号值映射表sym_map中新增一条地址与符号值的映射,然后进行正常读写操作;当执行到分支节点时由解释执行决定下一个待执行语句,符号执行把该分支节点判定语句的符号值添加到约束中;
(5)一次符号执行结束后对收集的约束取反以及求解,得到符号值对应的值,进一步得到内存地址与值的对应关系,然后转换为输入表达式与值的映射关系,生成用例数据文件;
(6)执行过程结束。
进一步的,生成输入驱动文件时,直接把变量整体指定为输入,复杂类型变量不展开为子表达式。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京轩宇信息技术有限公司,未经北京轩宇信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210453325.X/2.html,转载请声明来源钻瓜专利网。