论文部分内容阅读
单元测试是软件测试的最初阶段,做好充分有效的单元测试可以显著地降低软件测试成本,提高软件质量。代码测试系统(Code Testing System,CTS)是一个针对C语言的自动化测试系统,其核心功能之一是单元测试。CTS在Windows平台上只能测试简单的单个C程序,但是大多C语言工程都包含多个C文件,而且针对的是Linux平台。所以需要将CTS从Windows平台移植到Linux平台。 CTS从Windows平台移植到Linux平台,主要存在的问题有:1)在Linux平台上,由于实际C语言工程中源文件和头文件之间依赖关系复杂,CTS不能正确地对被测文件进行预处理,导致模块划分通过率较低,造成CTS无法测试。2)原有的测试用例执行模块无法在Linux平台上运行。 本文对Linux平台自动化单元测试框架的搭建进行了深入研究,对上述问题,提出了解决方案:1)对Linux平台C语言工程中负责配置依赖关系的Makefile文件进行自动修改,使得CTS在利用Makefile文件编译整个工程时,能够保存编译过程中产生的预处理文件,解决了C语言工程中文件预处理的问题,提高了模块划分通过率;2)利用Linux平台C语言线程调用接口以及setjump和longjump函数完成了测试用例执行模块搭建,实现了在Linux平台对测试用例执行的控制,包括死循环捕获和异常处理。 进一步的,本文改进了CTS的打桩模块:提出函数抽象内存模型和自适应打桩算法。在变量抽象内存模型的基础上,建立了函数抽象内存模型,并利用自适应打桩算法对路径进行分析,将分析结果保存在抽象内存模型中。利用分析结果,能够为路径上的函数自动生成满足路径约束条件的桩函数。 实验结果表明本文提出的方法能够有效提升对实际工程模块划分通过率,保障测试过程顺利进行。实例分析说明面向路径的自适应打桩技术能为路径上的函数自动生成满足路径约束条件的桩函数。