面向C语言的符号执行引擎设计与实现
发布时间:2022-10-21 19:14
随着我国航天、轨道交通与芯片等产业的不断发展,高安全领域软件系统的数量和规模不断扩大。出于高稳定性、强实时性和兼容性等需求,这些系统通常使用具有足够灵活性的C语言进行开发。由于对系统安全性的高要求,此类软件系统代码需要进行充分单元测试,并要求达到接近100%的测试覆盖率。因此,企业通常需要专业测试人员针对C代码函数进行手工编写单元测试用例,但仍然存在测试用例编写效率低下、质量参差不齐等问题。针对上述问题,本文提出了将符号执行技术应用于C语言单元测试用例自动生成的方法,实现了以高覆盖率为导向的单元测试用例自动生成工具,本文主要的贡献如下:构建C语言符号执行引擎:本文设计实现的符号执行引擎使用静态分析和控制流分析来解析处理待测C源码,生成待测程序的抽象语法树,构建控制流图模型。基于控制流图,使用状态搜索器和执行器对程序路径进行符号执行,并在此过程中获取路径对应的测试输入,得到单元测试用例数据,实现单元测试用例自动生成工具的核心功能。满足MC/DC覆盖的高效搜索算法:在符号执行引擎中,实现了满足MC/DC覆盖准则的单元测试用例生成的方法,同时优化程序路径搜索效率,提出并实现了洪水搜索算法,支...
【文章页数】:99 页
【学位级别】:硕士
【文章目录】:
摘要
abstract
第1章 绪论
1.1 选题背景及意义
1.2 国内外研究现状分析
1.3 本文的主要工作
1.4 本文组织结构
第2章 相关技术介绍
2.1 单元测试简介
2.1.1 覆盖准则
2.1.2 常见单元测试工具
2.1.3 单元测试的挑战
2.2 LLVM编译器基础架构
2.3 符号执行技术简介
2.3.1 符号执行示例
2.3.2 符号执行与测试用例自动生成
2.3.3 符号执行的限制
2.3.4 动态符号执行框架KLEE
2.4 Z3定理证明器
2.5 本章小结
第3章 符号执行引擎框架设计
3.1 需求简述
3.2 技术难点
3.2.1 C代码解析处理问题
3.2.2 类型系统构建问题
3.2.3 开发测试平台的差异性问题
3.3 符号执行引擎整体架构
3.3.1 整体架构设计
3.3.2 符号类型系统
3.3.3 C代码预处理与解析
3.3.4 符号执行内核
3.4 测试用例生成与统计
3.5 符号执行引擎算法设计
3.5.1 设计原则
3.5.2 类型内存系统构建算法
3.5.3 洪水搜索算法
3.5.4 MC/DC覆盖率统计算法
3.6 单元测试自动化工具框架设计
3.7 私有云测试平台架构设计
3.8 本章小结
第4章 符号执行引擎具体实现
4.1 开发环境
4.1.1 环境搭建
4.2 预处理与解析模块实现
4.3 符号执行内核模块实现
4.4 约束求解与用例统计模块实现
4.5 本章小结
第5章 单元测试自动化工具的实验与评估
5.1 实验环境与评估基准
5.2 实验结果与分析
5.3 本章小结
第6章 总结与展望
6.1 本文的总结
6.2 未来可研究方向
参考文献
攻读硕士学位期间科研成果
致谢
【参考文献】:
期刊论文
[1]SMT求解技术简述[J]. 金继伟,马菲菲,张健. 计算机科学与探索. 2015(07)
[2]软件回归测试研究[J]. 马军勇,杨胜建. 电子测试. 2009(06)
本文编号:3696221
【文章页数】:99 页
【学位级别】:硕士
【文章目录】:
摘要
abstract
第1章 绪论
1.1 选题背景及意义
1.2 国内外研究现状分析
1.3 本文的主要工作
1.4 本文组织结构
第2章 相关技术介绍
2.1 单元测试简介
2.1.1 覆盖准则
2.1.2 常见单元测试工具
2.1.3 单元测试的挑战
2.2 LLVM编译器基础架构
2.3 符号执行技术简介
2.3.1 符号执行示例
2.3.2 符号执行与测试用例自动生成
2.3.3 符号执行的限制
2.3.4 动态符号执行框架KLEE
2.4 Z3定理证明器
2.5 本章小结
第3章 符号执行引擎框架设计
3.1 需求简述
3.2 技术难点
3.2.1 C代码解析处理问题
3.2.2 类型系统构建问题
3.2.3 开发测试平台的差异性问题
3.3 符号执行引擎整体架构
3.3.1 整体架构设计
3.3.2 符号类型系统
3.3.3 C代码预处理与解析
3.3.4 符号执行内核
3.4 测试用例生成与统计
3.5 符号执行引擎算法设计
3.5.1 设计原则
3.5.2 类型内存系统构建算法
3.5.3 洪水搜索算法
3.5.4 MC/DC覆盖率统计算法
3.6 单元测试自动化工具框架设计
3.7 私有云测试平台架构设计
3.8 本章小结
第4章 符号执行引擎具体实现
4.1 开发环境
4.1.1 环境搭建
4.2 预处理与解析模块实现
4.3 符号执行内核模块实现
4.4 约束求解与用例统计模块实现
4.5 本章小结
第5章 单元测试自动化工具的实验与评估
5.1 实验环境与评估基准
5.2 实验结果与分析
5.3 本章小结
第6章 总结与展望
6.1 本文的总结
6.2 未来可研究方向
参考文献
攻读硕士学位期间科研成果
致谢
【参考文献】:
期刊论文
[1]SMT求解技术简述[J]. 金继伟,马菲菲,张健. 计算机科学与探索. 2015(07)
[2]软件回归测试研究[J]. 马军勇,杨胜建. 电子测试. 2009(06)
本文编号:3696221
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3696221.html