在软件开发的周期模型中
- 需求规格说明定义了为什么要开发程序
- 目标定义了程序要做什么,以及应做得怎么样
- 外部规格说明定义了程序对用户的准确表现
- 与后续阶段相关的文档越来越详细地规定了程序是如何建立起来的。
软件开发周期的七个阶段包括了信息的沟通、理解和转换,以及大多数的软件错误都来源于信息处理中的故障。那么有三个补充的方法来预防或识别这些错误
- 使软件开发过程更加精密,以防其中出现很多错误。
- 在每个阶段结束时可以引入一个独立的验证过程,在进入下一个阶段之前尽可能多的发现问题。如对外部规格说明的验证可以通过与前一个阶段的输出进行比较,然后将任何发现的错误反馈到外部规格说明定义过程中去。
- 对不同的开发阶段采用不同的测试方法。即每个测试过程都重点针对一个特定的转换步骤,从而也针对一类具体的错误。将测试过程和开发过程一一对应。如:
模块测试的目的是发现程序模块与其接口规格说明之间的不一致;
功能测试的目的是为了证明程序未能符合其外部规格说明
系统测试的目的是为了证明软件产品与其初始目标不一致
开发过程和测试过程如下:
1. 功能测试
功能测试是一个试图发现程序与其外部规格说明之间存在不一致的过程,外部规格说明将产品视为一个黑盒,仅考虑其接口以及与最终用户的交互。
功能测试时,要对规格说明进行分析以提炼测试用例。其中常见的黑盒测试方法均使用与功能测试。
2. 系统测试
系统测试的目的是将系统或程序与其初始目标进行比较,在这个过程中,应重点关注那些在设计外部规格说明的过程中所犯的转换错误。
系统测试用例的15个分类如下:
1)能力测试:检查目标文档,当某条语句定义了一个“要做什么”时,判断程序是否满足;
2)容量测试:检验程序经受大容量数据的检验。其目的是为了证明程序不能处理目标文档中规定的数据容量。
3)强度测试:检测系统在很短的时间间隔内达到的数据或操作的数量峰值。基于Web和移动设备的应用程序是最常接收强度测试的软件之一。
4)可用性测试(用户体验测试):发动最终用户在真实环境下对应用程序进行测试。
5)安全性测试
6)性能测试:在特定负载和配置环境下程序的响应时间和吞吐率。
7)存储测试:测试软件的存储目标是否满足。
8)配置测试:如果软件本身的配置可忽略掉某些程序组件,或可运行在不同的计算机上,那么该软件所有可能的配置都应测试到。
9)兼容性/转换测试
10)安装测试:用户体验的第一步,非常重要。
11)可靠性测试:通常对系统的具体指标进行测试,如平均故障间隔时间(MTBF)等。
12)可恢复性测试:说明系统如何从程序错误、硬件失效和数据错误中恢复过来,如平均恢复时间(MTTR),需要验证其是否正确发挥作用。
13)服务/可维护性测试
14)文档测试:检查用户文档的正确性
15)过程测试:对软件系统操作或维护所涉及的流程进行评估和确定。
注意,系统测试不能由程序员来进行。
3. 验收测试:一般有程序的客户或者最终用户来执行。
4. 安装测试:应由生产软件系统的机构来涉及,作为软件的一部分来发布,在系统安装完成之后进行。除此之外,测试用例需要检查以确认已选的选项集合互不冲突,系统的所有部件全部存在,所有的文件已经创建并包含必须内容,硬件配置妥当等。