[发明专利]一种缓解路径爆炸的动态符号执行方法有效
申请号: | 201210106958.X | 申请日: | 2012-04-13 |
公开(公告)号: | CN102708045A | 公开(公告)日: | 2012-10-03 |
发明(设计)人: | 张小松;陈厅;吉小丽;朱聪;侯浩俊 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 成都华典专利事务所(普通合伙) 51223 | 代理人: | 徐丰;杨保刚 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 缓解 路径 爆炸 动态 符号 执行 方法 | ||
技术领域
本发明属于计算机软件安全测试领域,提供了一种缓解路径爆炸的动态符号执行方法。
背景技术
软件测试是验证软件质量最通用的技术。高质量的软件产品需求,促使软件测试在软件开发周期中占据越来越重要的地位。近几年发展起来的动态软件测试避免了静态软件测试人工开销大、效率低、误报率高等缺点,成为当前软件测试的主要方式。动态符号执行是动态软件测试的重要技术之一,其通过自动生成测试用例以获取高代码覆盖率,被用于当前许多主流动态软件测试工具中。例如NASA的PathFinder,斯坦福大学的KLEE,伯克利大学的CREST,微软的SAGE、Pex、Prefix等测试软件采用的都是动态符号执行技术。利用动态符号执行自动生成测试用例,在理论上能够实现对被测程序全路径的覆盖,从而全面、精确的检测程序中潜在的漏洞。
动态符号执行通过对被测程序插装,跟踪抽象符号而非实际输入值来分析程序。在首次执行时,由用户提供输入测试用例,将输入数据符号化,符号执行伴随程序的实际执行,跟踪输入数据的流通,同时更新相应的符号,在路径分支处搜集与输入符号相关的分支转移条件表达式。一次执行过程中搜集到的条件表达式的“与”组成路径约束条件。该路径约束条件的解集与该路径有一一对应的关系。对路径约束条件的某条路径取反并用求解器求解,求解得到的数据作为新测试用例输入,能够驱动下次测试执行不同的路径,如此,直到所有的可执行路径都被测试完,最终达到对被测程序的全路径覆盖测试。
动态符号执行的实际执行过程可用示例1简单说明,首先解释一次符号执行的过程。假设x,y是输入值,符号执行分别将其对应为符号 ,。如果初次执行对(x,y)提供的输入值为(1000,503),则执行路径为:1→2→3→4→5→6→10,第3行if条件语句得到的条件表达式为=1000,第4行的为<2*。该次执行的路径约束条件将为:(=1000)ù(<2*),解集为:=1000,={501,502…}。任意解集的集合(如(1000,501),(1000,502),(1000,504)等)作为输入都可使程序沿该路径执行,但用SMT求解器求解只能得到能满足该表达式的一组数据。
1. void f(int x, int y) {
2. int z = 2*y;
3. if (x == 1000) {
4. if (x < z) {
5. assert(0); /* error */
6. }
7. }else{
8. ……
9. }
10. }
示例 简单程序符号执行示例
对路径约束条件中的每个条件表达式进行取操作,可以求得可执行其它分支路径的输入数据。如对第3行的约束条件取反,并保留它之前的条件表达式(该示例没有),将其后的表达式去掉,得到的条件表达式为!=1000。该预测路径约束条件的解可使程序沿第一个if语句的else分支执行。这里的解集为 !=1000,为任意值,求得的解可能是(x=0,y=503)。利用以上方式,可以得到程序任何可执行路径对应的输入数据,即测试用例,测试程序的所有可达路径。
如果采用一般的动态随机测试,给x,y赋予随机值,则要检测出第5行的错误,需要大量的无关测试,因为要保证随机取值x的值为1000,并且x<2*y这个概率还是很小的。而采用动态符号执行最多需要3次,如图1所示。从图中可以看出,如果第一次的输入值为(x=0,y=0),第一次实际执行完后搜集到的路径约束条件为!=1000,对表达式取反得=1000,用求解器求解后得x=1000,用该值更新测试用例作为第二次的输入(x=1000,y=0)。第二次实际执行完后搜集到的路径约束条件为 =1000)ù( >=2*,对表达式取反得Sx=1000)ù(Sx<2*Sy(第一条表达式不需要反复取反),求解后得到一组满足该表达式的解(x=1000,y=501)作为下一次的输入。第三次实际执行即可触发第5行的assert(0)错误。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210106958.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种镁橄榄石陶瓷材料、制备方法及其应用
- 下一篇:全自动高效电脑绕线机