一种基于符号执行的测试用例生成方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

∗ 收稿日期:2019 年 3 月 11 日,修回日期:2019 年 4 月 1 日 作者简介:郑华利,女,硕士研究生,研究方向:软件测试、Linux 操作系统。刘钊远,男,教授,硕士生导师,研究方向: 嵌入式系统研究与开发。田野,男,硕士研究生,研究方向:Linux 操作系统、大数据处理。
2328
Abstract Aiming at the problem of path explosion existing in the execution of symbols,a redundant path deletion method is proposed,which uses the postconditions in the Hoare logic to guide symbol execution to generate effective test cases. The weakened preconditions are first used to calculate the explored paths and then the postconditions are used to guide the execution of the symbols to identify multiple shared path suffixes in the program and eliminate them as test cases are generated. Finally,by testing a number of benchmark programs,the results show that this method can reduce the number of program exploration and execution time to a cer⁃ tain extent,and weaken the path explosion in symbol execution.
总第 359 期 2019 年第 9 期
计算机与数字工程 Cຫໍສະໝຸດ mpu计te算r &机D与ig数ita字l E工ng程ineering
Vol. 47 No. 9 2327
一种基于符号执行的测试用例生成方法
郑华利 刘钊远 田 野
(西安邮电大学计算机学院 西安 710061)
摘 要 针对符号执行中存在的路径爆炸问题,提出一种冗余路径删除方法,该方法利用 Hoare 逻辑中的后置条件引 导符号执行以生成有效的测试用例。首先利用最弱前置条件来计算已探索的路径,然后通过后置条件引导符号执行以识别 程序中多个共享的路径后缀,并在测试用例生成时进行消除。最后通过对多个基准程序进行实验,结果表明论文方法在一 定程度上能够减少程序的路径探索数目和执行时间,削弱了符号执行中的路径爆炸问题。
郑华利等:一种基于符号执行的测试用例生成方法
第 47 卷
程序行为,修剪那些已经探索过能够产生同样效果 的执行状态的路径,此方法针对大型应用程序面临 着巨大的可扩展性挑战。
因此,为了克服现有的路径爆炸解决方案中存 储空间消耗大、只适用于小型程序的缺陷,本文提 出一种利用 Hoare 逻辑中的后置条件引导符号执 行的冗余路径删除方法。利用前置条件计算已探 索路径的路径条件,在测试用例生成时针对程序共 享的路径后缀使用后置条件进行识别,若当前的路 径条件合并到后置条件,则此执行路径的其余部分 将跳过,在保证覆盖有效的测试用例的情况下,通 过冗余路径的删除,减少程序的执行时间,从而达 到减轻符号执行的路径爆炸问题的目的。
目前为止,对于符号执行中的路径爆炸 问 [3~4] 题解决方案有很多,主要包括智能搜索策略[5~6]、摘 要、路径合并[7]、修剪冗余路径等。这些解决方案
的共同点是只访问或者先访问能够达到测试标准 的路径。Chen[8]等提出了几种针对符号执行中的 路径爆炸问题进行分析的智能搜索策略,不同的搜 索策略存在不同程度的缺陷,例如深度优先搜索算 法存在覆盖率低,必须指定最大深度的问题。罗荣 森[9]等提出基于符号摘要的动态执行方法,借助函 数摘要[10]和符号摘要的思想,对动态符号执行过程 中的符号和约束信息进行保存,避免后续对相同的 路径进行重复地符号执行,此方法存在存储空间的 消耗问题。Kuznetsov[11]等提出的状态合并技术是 将不同路径上的路径前缀进行合并,使得搜索路径 的数量由指数级增长降低为多项式的增长。RW⁃ set[12]等提出的路径修剪技术通过跟踪程序的读取 和写入的内存位置,判断路径是否能够探索到新的
Key Words symbolic execution,path explosion,postconditions,weakest preconditions Class Number TP311.5
1 引言
软件测试是保证软件正确性、完整性、安全性 和质量的主要程序分析方法。相比于覆盖率低的 模糊测试[1],符号执行[2]覆盖率高且应用广泛,然而 其本身存在一定的瓶颈,即路径爆炸、约束求解、符 号执行精确性三大问题,使得符号执行很难应用到 实际的测试环境当中。所谓的路径爆炸问题指的 是假如一个实际程序有 X 个分支语句,那么该程序 的路径数是 2x个,即程序的路径数量随程序的分支 语句数呈指数增长。
关键词 符号执行;路径爆炸;后置条件;最弱前置条件 中图分类号 TP311.5 DOI:10. 3969/j. issn. 1672-9722. 2019. 09. 043
A Test Case Generation Method Based on Symbolic Execution
ZHENG Huali LIU Zhaoyuan TIAN Ye (School of Computer,Xi'an University of Posts and Telecommunications,Xi'an 710061)
2 相关理论依据
2.1 符号执行 符号执行的核心思想是将程序输入符号化,利
相关文档
最新文档