[发明专利]基于路径片段频谱的符号执行搜索方法有效
申请号: | 201410055286.3 | 申请日: | 2014-02-18 |
公开(公告)号: | CN103870391A | 公开(公告)日: | 2014-06-18 |
发明(设计)人: | 李游;王林章;李宣东;陈志 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京瑞弘专利商标事务所(普通合伙) 32249 | 代理人: | 杨晓玲 |
地址: | 210023 江苏省南京市栖霞*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 路径 片段 频谱 符号 执行 搜索 方法 | ||
技术领域
本发明涉及对符号执行过程进行指导以提高其效率的方法,属于软件测试技术领域。
背景技术
软件测试是一种重要的软件可靠性保证方法,在实践中被广泛运用。传统的软件测试方法(例如随机测试或人工测试)尽管有效,但在某些情况下效率较低,无法满足日益增长的软件开发需求。
符号执行也是一种经典的程序测试和分析技术。使用符号执行方法,人们可以自动的,系统化的探索程序的执行空间,同时产生拥有高覆盖度的测试用例集。
符号执行的过程中,用符号值替代了输入参数的实际值。在程序执行的过程中,当执行遇到分支时,执行会复制相关的执行状态,使得符号执行可以走向分支的两个方向,并且记录下相应方向中与输入的符号参数相关的约束条件。之后符号执行选择合适的分支方向,继续对应的执行。当某个执行达到程序出口或者发现错误时,符号执行利用约束求解器求解该执行对应的路径上记录的约束条件,以得出符合该执行的输入的实际值,并输出相关的测试用例。这样,重放该测试用例,可以得到和符号执行相同的执行效果。由于符号执行是根据路径计算相应的测试用例输入,因此一个用例可以对应相应的一组测试用例集合,有效的避免冗余用例,提高了测试的效率。
在实际应用中,由于大量的分支组合以及循环,递归的存在,使得程序中的路径数目极大甚至无穷。因此,在实际运用中,符号执行的一个关键问题在于如何指导执行的过程使其能够探索程序中更加有用的部分。关于这一问题,各种方法被提出以指导或优化符号化探索程序的过程,但是这些方法或者针对特殊情况或者效率不高。
发明内容
技术问题:本发明的目的指导符号执行的过程,将其导向程序中探索较少的部分,使其能够更好的覆盖程序并且尽可能的发现程序中的错误,有效地解决符号执行效率问题。
技术方案:本发明引入路径片段频谱的概念,不同的路径片段频谱从各个角度分析程序执行的行为,以获得不同层次的程序行为分析,构成程序行为的框架。本发明还根据已探索部分的路径片段频谱分析当前符号执行的行为,用以指导符号执行探索程序中探索较少的部分。
本发明所述的基于路径片段频谱的符号执行搜索方法具体流程如下:
步骤1、测试人员设定待测试的源代码程序的路径片段的长度,所述源代码程序的路径片段是指源代码程序对应的程序控制流图中一组连续的选择分支节点和执行方向所构成的路径,所述路径片段的长度是指其中选择分支节点的个数;
步骤2、利用路径片段频谱信息指导符号执行的过程
对待测试的源代码程序进行符号执行过程,在此过程中,记录或更新已执行的指定长度的路径片段频谱,选择已执行次数较少的路径片段继续符号执行;
所述路径片段频谱是由指定长度的所有不同路径片段在符号执行过程中已执行的次数所组成列表;
所述符号执行是指使用符号变量代替具体变量,不执行程序的前提下模拟程序执行来进行相关测试分析的技术,一般与约束满足问题求解方法一同使用;
步骤2的具体过程如下:
步骤2.1、逐条模拟执行程序语句,若执行过程遇到选择分支语句,则进入步骤2.2;若执行过程发现错误或到达程序出口,进入步骤2.5;
步骤2.2、产生一个新的程序执行,复制当前执行的状态,将两个执行分别指向选择分支语句的两个方向,并将这两个执行挂起,进入步骤2.3;
步骤2.3、获取步骤2.2产生的两个执行的对应的路径片段,若路径片段未被执行,则在路径频谱中加入该路径片段,记录其已执行次数为0,结束后进入步骤2.4;
步骤2.4、从所有挂起的执行中选择对应的路径片段已执行次数最少的一个,若执行次数最少的挂起执行不唯一,则在其中随机选择一个,将其对应的路径片段已执行次数加1,回到步骤2.1;若没有挂起的执行,则结束步骤2;
步骤2.5、根据当前的发现错误或到达程序出口的执行,计算其对应的程序输入,并结束该执行,进入步骤2.4。
有益效果:本发明所述的基于路径片段频谱的符号执行策略,可以有效的指导符号执行探索当前状态下程序中探索较少的部分。具体说来,本发明所述的方法具有如下有益效果:
(1)本发明所述的基于路径片段频谱的符号执行搜索策略,可以调整路径片段的长度以获得不同的测试精度,能够根据不同的程序系统或用户的需求调整。
(2)本发明所述的基于路径片段频谱的符号执行搜索策略,有效的利用了符号执行过程中的已执行部分,能够根据已经执行的上下文信息指导符号执行的过程,使其能够产生覆盖度更高的测试用例。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410055286.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种硬雪铲扫装置及其应用
- 下一篇:一种太阳能道钉