论文部分内容阅读
作为软件质量保证的重要手段,软件测试发挥着其他方法不可替代的作用,设计和生成有效的测试数据是影响软件测试质量的关键因素之一。软件安全缺陷检测,是信息安全领域的核心问题。以软件安全缺陷的分析检测问题为主线,研究了需求驱动的自动测试生成方法,主要内容如下:1.软件安全缺陷的手工分析自动测试生成方法的研究,离不开对安全缺陷的手工分析时积累的大量宝贵经验。在手工分析安全缺陷的基础上,研究了缺陷模式的表示方法,并以一个例子详细介绍了安全缺陷的手工分析方法。2.需求驱动的软件安全缺陷自动测试生成方法目标是自动产生能够触发安全缺陷的测试输入。与普通的测试策略相比,这里并不一味地追求覆盖率,其测试行为是需求驱动的。通过分析补丁信息和缺陷模式,确定需要覆盖的缺陷语句或路径,然后再通过正向的符号执行或者是逆向的回溯的方法,排除误报,生成触发安全缺陷的输入。需求驱动体现在两个方面,一方面,测试策略是需求驱动的,即只覆盖存疑的安全缺陷语句或路径;另一方面,测试生成是需求驱动的,即在测试生成时执行尽量少的路径,采用的方法主要有按需调度、按需回溯、按需展开等。安全缺陷的自动测试生成,是跨过程的,需求驱动方法的引入,大大减轻了路径爆炸问题的影响。3.需求驱动的安全缺陷自动检测系统设计与原型实现系统基于Phoenix编译器框架、Gcc编译器和Z3约束求解器,可同时支持Windows平台和Linux平台源代码的安全检测,具有良好的扩展性。原型系统已被用于对若干开源软件的缺陷检测,验证了一批已公开安全缺陷。在补丁信息的指引下,找到了未公开的绕过补丁修补位置再次触发缺陷的可执行路径及输入。验证了需求驱动的自动测试生成方法的可行性和有效性。