基于符号化执行的测试用例自动生成方法研究
| 摘要 | 第3-4页 |
| Abstract | 第4-5页 |
| 1 绪论 | 第8-16页 |
| 1.1 研究的背景与意义 | 第8页 |
| 1.2 国内外研究现状综述 | 第8-14页 |
| 1.2.1 形式化测试用例生成 | 第8-10页 |
| 1.2.2 随机测试用例生成 | 第10-11页 |
| 1.2.3 基于搜索方法的测试用例生成 | 第11页 |
| 1.2.4 约束求解技术 | 第11-14页 |
| 1.3 本研究的内容及难点 | 第14-15页 |
| 1.4 本文的组织结构 | 第15-16页 |
| 2 符号化执行生成测试用例框架与分析 | 第16-20页 |
| 2.1 符号执行技术 | 第16-17页 |
| 2.1.1 符号执行技术原理 | 第16页 |
| 2.1.2 动态符号执行技术 | 第16-17页 |
| 2.2 符号化执行生成测试用例的思路与框架 | 第17-18页 |
| 2.3 框架任务分析及说明 | 第18-19页 |
| 2.3.1 程序插桩 | 第19页 |
| 2.3.2 符号化执行生成测试用例 | 第19页 |
| 2.3.3 未覆盖及路径预测剪枝二次执行 | 第19页 |
| 2.4 本章小结 | 第19-20页 |
| 3 基于LLVM的代码插桩方法 | 第20-30页 |
| 3.1 符号化执行中的插桩策略分析与实现 | 第20-27页 |
| 3.1.1 基于LLVM的插桩 | 第20页 |
| 3.1.2 代码块插桩策略实现 | 第20-24页 |
| 3.1.3 插桩中变量的符号化 | 第24-26页 |
| 3.1.4 插桩中符号表达式 | 第26-27页 |
| 3.2 插桩实验与分析 | 第27-29页 |
| 3.2.1 实验效果 | 第27-29页 |
| 3.2.2 结果分析 | 第29页 |
| 3.3 本章小结 | 第29-30页 |
| 4 符号化执行生成测试用例方法 | 第30-42页 |
| 4.1 基于符号执行树的遍历算法设计与实现 | 第30-37页 |
| 4.1.1 软件度量及遍历方法背景 | 第30-31页 |
| 4.1.2 遍历算法设计 | 第31页 |
| 4.1.3 遍历算法实现 | 第31-33页 |
| 4.1.4 核心代码及分析 | 第33-37页 |
| 4.2 约束求解过程 | 第37-41页 |
| 4.2.1 Z3求解器概述 | 第37-38页 |
| 4.2.2 程序路径求解生成测试用例过程 | 第38-41页 |
| 4.3 本章小结 | 第41-42页 |
| 5 未覆盖及相似路径剪枝方法 | 第42-52页 |
| 5.1 程序静态分析 | 第42-44页 |
| 5.1.1 函数过程间控制流分析 | 第42-43页 |
| 5.1.2 函数调用关系 | 第43-44页 |
| 5.2 相似度路径计算 | 第44-49页 |
| 5.2.1 未覆盖度 | 第44-46页 |
| 5.2.2 矩阵向量、相似系数 | 第46-49页 |
| 5.3 未覆盖相似路径预测及路径剪枝方法设计 | 第49-51页 |
| 5.4 本章小结 | 第51-52页 |
| 6 实验与分析 | 第52-60页 |
| 6.1 实现环境与界面 | 第52-53页 |
| 6.2 对比实验与验证 | 第53-56页 |
| 6.2.1 摘要随机深度与随机遍历算法对比 | 第54页 |
| 6.2.2 其他生成测试用例与本文方法对比实验 | 第54-56页 |
| 6.3 改进方法生成测试用例对比结果及分析 | 第56-58页 |
| 6.4 本章小结 | 第58-60页 |
| 7 结论与展望 | 第60-62页 |
| 7.1 本文工作总结 | 第60页 |
| 7.2 研究展望 | 第60-62页 |
| 致谢 | 第62-64页 |
| 参考文献 | 第64-66页 |