论文部分内容阅读
软件测试是整个软件生命周期中的重要环节,各个企业在对软件测试方面的投入也越来越大,测试用例的自动生成技术对于企业和整个软件测试都十分重要。现在市场上的测试用例生成工具虽然取得了一定的作用,但也存在路径覆盖率不高,冗余测试用例过多,执行效率低的问题。因此本文以符号化执行生成测试用例为课题进行研究,通过研究发现,符号化执行技术生成测试用例大部分为有效用例,有较高的覆盖率,但也存在路径遗漏覆盖和路径增长迅速造成路径膨胀,执行效率不高的问题。针对这些问题本文提出了基于摘要的随机深度遍历策略,该策略结合随机方法和深度遍历方法对符号执行树进行遍历,将执行过的路径保存在摘要函数,避免重复遍历。对于路径膨胀提出相似路径预测剪枝后二次覆盖执行的方法,本方法在进行代码插桩后获取程序函数间调用图,分析计算哪些代码没有被覆盖到,在遍历生成符号执行树后对生成的路径进行相似度预测计算,一些未覆盖路径且相似度较大的路径进行剪枝处理,最终再进行测试用例生成执行。本文还设计了自动化插桩方法,目的是收集路径约束、引导程序进入符号化执行,对变量进行符号赋值。实验证明,本文遍历策略相比改进之前的方法能够提升代码覆盖和执行效率,对相似路径预测剪枝再执行生成测试用例与其他方法进行对比后,通过测试结果分析,得出执行时间缩短,路径数量减少,代码覆盖度提升的同时路径膨胀风险降低。