软件开发|网站建设|网站开发之测试

摘要:软件测试可以从狭义和广义两个方面来理解。狭义软件测试是指执行软件的过程,包括测试计划和控制、测试分析和设计、测试实现和执行、测试评估和报告等。广义软件测试是一种全生命周期的测试,不同的开发阶段有不同的测
软件测试可以从狭义和广义两个方面来理解。狭义软件测试是指执行软件的过程,包括测试计划和控制、测试分析和设计、测试实现和执行、测试评估和报告等。广义软件测试是一种全生命周期的测试,不同的开发阶段有不同的测试活动与之对应,测试对象不应该只局限于程序本身,还应包括需求分析、概要设计、详细设计以及程序编码等各个阶段得到的文档,也都是软件测试的“对象”。 软件测试的根本目标是确保软件的功能符合用户的需求,在发布或交付前尽可能多地发现并改正问题,具体包括: ❑ 确保软件完成了它所承诺或公布的功能; ❑ 确保软件满足性能的要求; ❑ 确保软件是健壮的和适应用户环境的。 软件安全测试是在产品发布之前,验证系统是否满足安全需求,发现系统的安全漏洞,并最终把这些漏洞的数量降到最低的一系列过程。 软件测试的概念有狭义和广义之分,同样软件安全测试也有狭义和广义之分。从测试的阶段来看,狭义的软件安全测试就是系统测试中的软件安全性测试,广义的软件安全测试则是同广义的软件测试一样,应该是贯穿于整个软件开发生命周期的,不同的开发阶段应该采用不同的安全测试策略和方法。从覆盖的范围看,狭义的软件安全测试指的是执行安全测试用例的过程,而广义的安全测试指的是所有关于安全性测试的活动,后面的介绍都是基于广义的角度来讨论软件安全测试。 在不同的开发阶段,软件安全测试的对象也不相同,不仅是代码,还包括各种相关文档。如在需求分析阶段,软件安全测试需要需求文档中的安全需求进行评审;在设计阶段需要对设计文档、受攻击面分析、威胁建模等文档进行评估;在编码阶段需要进行源代码审核等。 软件安全测试的目标也有很多,比如通过找到漏洞并修复来降低成本,提升软件的安全质量,可以为度量软件的安全提供数据等。软件安全测试的根本目标是保证被测软件在面对恶意攻击时仍能按照可接受的方式运行。 在软件安全测试过程中需要用到不同的技术,常见的软件安全测试技术有评审、代码分析、模糊测试和渗透测试。评审主要采用的方法是人工评审,主要审查安全策略、安全需求、威胁建模文档等,需要注意的是人工评审人员需要有前期充分的准备才能发现更多的安全缺陷。代码分析、模糊测试和渗透测试后面会有单独的章节介绍。 安全测试方法可以分为黑盒测试、白盒测试和灰盒测试三种。黑盒测试也称为功能测试、基于需求规格说明书的测试。它把程序看作一个黑盒子,不考虑程序的内部结构和处理过程,只检查程序功能是否按照规格说明书的要求正常运行,判断程序接收输入数据是否产生相应的输出。黑盒测试的优点是测试者无需熟悉软件内部结构,并且在早期就可以根据软件功能制定测试方案,并不依赖于开发者的工作进展,测试简单易行,对测试者的技术要求不高。黑盒测试只能覆盖一部分测试对象,不能保证程序的所有部分都被测试到。 白盒测试也称为结构测试或逻辑驱动测试,它把程序看成一个透明盒子,被测系统的信息已知,分析程序的实现是否正确。白盒测试的优点是可以对代码进行详细审查,能找出隐藏在代码中的错误,确保代码质量。它的缺点是很多时候不能看完所有的代码,不能找出代码缺陷,同时白盒测试和用户如何使用软件无关。白盒测试的主要方法是代码审查,比如查找PHP代码中是否存在文件包含漏洞