开发过程与测试过程的对应关系
功能测试
功能测试是一个试图发现程序与其外部规格说明之间存在不一致的过程。外部规格说明是一份从最终用户的角度对程序行为的精确描述。
系统测试
系统测试并非是测试整个系统或程序功能的过程,因为有了功能测试,这样会显得多余。
系统测试和功能测试的不同
外部规格说明不能作为获得系统测试用例的基础,否则就破坏了系统测试的目标。
通过分析目标文档来设计系统测试,分析用户文档来阐明测试用例。
能力测试
最明显的系统测试类型是判断目标文档提及的每一项能力(或功能,为了避免与功能测试发生混淆而不使用“功能”一词)是否都确实已经实现。
能力测试的过程:
能力测试的过程是逐条语句地检查目标文档,当某条语句定义了一个“要做什么”(例如,“语法应该一致……”、“用户应当可以指定一个空间范围……”等),就判断程序是否满足。
容量测试
使程序经受大容量数据的检验。
强度测试
所谓高强度是指在很短的时间间隔内达到的数据或操作的数量峰值。
易用性测试
判断程序对于用户来说是否易用?是否有难以理解的地方。
安全性测试
安全性测试是设计测试用例来突破程序安全检查的过程。举例来说,我们可以设计测试用例来规避操作系统的内存保护机制,破坏数据库管理系统的数据安全机制。
性能测试
在特定负载和配置环境下程序的响应时间和吞吐率。
存储测试
类似地,软件偶尔会有存储目标,举例来说,可能描述了程序使用的内存和辅存的容量,以及临时文件或溢出文件的大小。应设计测试用例来证明这些存储目标没有得到满足。
配置测试
诸如操作系统,数据库管理系统和信息交换系统等软件都支持多种硬件配置,包括不同类型和数量的 I/O 设备和通信线路,或不同的存储容量。通常可能的配置数量非常之大,以至于测试无法面面俱到,但是至少应该使用每一种类型的设备,以最大和最小的配置来测试程序。
兼容性 / 配置 / 转换测试
再次强调,在针对这些目标测试程序时、测试用例的目的是证明兼容性目标未被满足,转换过程并未生效。
安装测试
安装程序如果出现故障,会影响用户对软件的成功体验。用户的第一次体验来自于安装软件的过程。
可靠性测试
一般规定了每年必须达到的运行小时数。
可恢复性测试
系统测试的一个目标是证明这些恢复机制不能够正确发挥作用。我们可以故意将程序错误置入某个系统中,判断系统是否可以从中恢复。
适用性测试
可能定义了系统提供的服务辅助功能,包括存储转存程序或诊断程序、调试明显问题的平均时间、维护过程以及内部业务文档的质量等。
文档测试
过程测试
验收测试
到验收测试是将程序与其最初的需求及最终用户当前的需要进行比较的过程。该测试通常是由程序的客户或最终用户来进行。
安装测试
安装测试的不寻常是由于其目的不是为了发现软件中的错误,而是为了发现在安装过程中出现的错误。
测试结束准则
根据的是特定的测试用例设计技术
问题:
对于那些没有特定方法的测试阶段,如系统测试阶段,这类准则不起作用。
它要依赖于主观的度量,因为没有办法保证测试人员适当而又严格地使用特定的方法,如边界值分析方法。
不同于设置一个目标再让测试人员选择最佳的实现方法,它的做法正好相反,指定了测试用例设计的方法,却并不设定目标。
以确切的数量来描述结束测试的条件
这个准则需要估计软件可能出现的错误数量
在测试过程中记录每单位时间内发现的错误
通过检查统计曲线的形状,常常可以决定究竟是继续该阶段的测试,还是结束它并开始下一测试阶段。当某一测试进行到某个阶段时,发现的错误数量还是很大,则该测试不能停止,需要再测试一段时间,直到错误数量下降才能考虑停止测试