论文部分内容阅读
随着我国航天、轨道交通与芯片等产业的不断发展,高安全领域软件系统的数量和规模不断扩大。出于高稳定性、强实时性和兼容性等需求,这些系统通常使用具有足够灵活性的C语言进行开发。由于对系统安全性的高要求,此类软件系统代码需要进行充分单元测试,并要求达到接近100%的测试覆盖率。因此,企业通常需要专业测试人员针对C代码函数进行手工编写单元测试用例,但仍然存在测试用例编写效率低下、质量参差不齐等问题。针对上述问题,本文提出了将符号执行技术应用于C语言单元测试用例自动生成的方法,实现了以高覆盖率为导向的单元测试用例自动生成工具,本文主要的贡献如下:构建C语言符号执行引擎:本文设计实现的符号执行引擎使用静态分析和控制流分析来解析处理待测C源码,生成待测程序的抽象语法树,构建控制流图模型。基于控制流图,使用状态搜索器和执行器对程序路径进行符号执行,并在此过程中获取路径对应的测试输入,得到单元测试用例数据,实现单元测试用例自动生成工具的核心功能。满足MC/DC覆盖的高效搜索算法:在符号执行引擎中,实现了满足MC/DC覆盖准则的单元测试用例生成的方法,同时优化程序路径搜索效率,提出并实现了洪水搜索算法,支持快速自动生成语句、分支和MC/DC覆盖准则的高覆盖率单元测试用例。实现单元测试用例自动生成工具:以符号执行引擎为内核,构建云服务平台,将本文的符号执行引擎从研究级别提升至可用的工业产品,并可直接导出支持Testbed等第三方测试用例管理平台的用例格式,实现了基本无需手工修改的全自动化单元测试,大幅提高测试人员的工作效率和测试质量。本文提出的以面向C语言的符号执行引擎为内核的单元测试自动化工具,目前已投入航空航天和地铁信号等领域的工业界代码的单元测试应用中。