面向程序固定位置的测试用例自动生成研究
摘要 | 第6-7页 |
ABSTRACT | 第7页 |
第一章 引言 | 第11-17页 |
1.1 本文主要研究问题 | 第14页 |
1.2 贡献 | 第14页 |
1.3 本文结构 | 第14-17页 |
第二章 背景和相关工作 | 第17-27页 |
2.1 符号执行基础 | 第17-20页 |
2.1.1 符号执行的基本概念和理论 | 第17-19页 |
2.1.2 程序路径和前缀 | 第19-20页 |
2.2 符号执行的历史与发展 | 第20页 |
2.3 动态符号执行框架 | 第20-21页 |
2.4 现有工具介绍 | 第21-23页 |
2.5 固定点的程序路径搜索 | 第23-25页 |
2.5.1 固定点到达的路径搜索算法 | 第24-25页 |
2.6 本章小结 | 第25-27页 |
第三章 程序固定点路径搜索算法设计 | 第27-39页 |
3.1 前端执行流程 | 第27-28页 |
3.2 关键边搜索算法 | 第28-31页 |
3.2.1 关键边的定义 | 第29页 |
3.2.2 关键边搜索算法 | 第29-31页 |
3.2.3 关键边搜索算法实例 | 第31页 |
3.3 固定点路径搜索算法 | 第31-38页 |
3.3.1 程序前缀优先级计算 | 第33-38页 |
3.4 本章小结 | 第38-39页 |
第四章 测试框架设计与实现 | 第39-57页 |
4.1 模块结构设计 | 第39-40页 |
4.2 前端处理模块介绍 | 第40-42页 |
4.2.1 LLVM简介 | 第40-41页 |
4.2.2 LLVM内部数据结构 | 第41-42页 |
4.3 LLVM上关键边搜索算法实现 | 第42-45页 |
4.3.1 数据结构设计 | 第42-43页 |
4.3.2 关键边搜索类函数设计 | 第43-45页 |
4.4 动态符号执行引擎核心模块介绍 | 第45-50页 |
4.4.1 KLEE内部基本类型 | 第45-46页 |
4.4.2 内存模型模块 | 第46-47页 |
4.4.3 执行器模块 | 第47-49页 |
4.4.4 路径搜索器模块 | 第49-50页 |
4.5 KLEE上的路径搜索模块实现 | 第50-52页 |
4.5.1 搜索器类设计 | 第50-52页 |
4.6 算法实现的问题与解决方案 | 第52-55页 |
4.6.1 关键边变量的传值 | 第52-53页 |
4.6.2 关键边统计与权值传递 | 第53-54页 |
4.6.3 排除不必要的外部库搜索 | 第54页 |
4.6.4 目标点的输入 | 第54-55页 |
4.7 本章小结 | 第55-57页 |
第五章 工具实现及实验评估 | 第57-63页 |
5.1 工具实现环境 | 第57页 |
5.2 实验设计及评估标准 | 第57-59页 |
5.3 实验评估 | 第59-61页 |
5.3.1 评估方法介绍 | 第59-60页 |
5.3.2 实验结果 | 第60-61页 |
5.4 本章小结 | 第61-63页 |
第六章 总结与展望 | 第63-65页 |
参考文献 | 第65-71页 |
致谢 | 第71-73页 |
攻读硕士学位期间发表论文 | 第73页 |