软件安全测试(software safety testing),理学-计算机科学技术-信息安全-信息系统安全-软件安全-软件安全防御,在软件产品的生命周期中,发现软件缺陷和漏洞的方法。目的是通过静态分析和动态测试相结合的方法发现软件产品可能的缺陷,并进一步确认缺陷原因。软件安全缺陷包括堆栈溢出、指针越界、指针未初始化、指针释放后引用、多次内存释放、整数溢出、浮点数溢出、格式化输出泄露、格式化输出写、竞争条件和接口误用等。另外,软件安全缺陷还有与软件业务相关的逻辑缺陷和设计缺陷,该类缺陷的发现依赖于专家知识和经验,且其测试的自动化程度低,难以发现。软件安全测试分为白盒测试、黑盒测试和灰盒测试。代码审计是典型的白盒测试技术,根据安全编程规范和软件业务逻辑,审查关注的代码区域和代码交叉引用,发现其中可能的缺陷。这种审查可以由编译器自动完成,或者审查工具自动实现,或者人工检视。代码审计的好处是覆盖率高,但存在误报,无法对闭源软件进行审查。黑盒测试把软件当作一个黑盒子,选择不同的输入,观察软件的执行和输出。如果测试结果符合预期,其测试用例引发软件崩溃,则发现了软件的缺陷。