更高级别的测试
当程序无法实现其最终用户要求的合理功能上,就发生了一个软件错误。软件开发过程在很大程度上是沟通有关最终程序的信息、井将信息从一种形式转换到另一种形式。由于这个原因,绝大部分软件错误都可以归因为信息拘通和转换时发生的故障、差错和干扰。
软件产品开发周期模型,过程:
- 将软件最终用户的要求转换为一系列书面的需求。这些需求就是该软件产品要实现的目标
- 通过评估可行性与成本、消除相抵触的用户需求、建立优先级和平衡关系,将用户需求转换为具体的目标
- 将上述目标转换为一个准确的产品规格说明,将产品视为一个黑盒,仅考虑其接口以及与最终用户的交互。该规格说明被称为“外部规格说明”
- 如果该产品是一个系统,如操作系统、飞行控制系统、数据库管理系统或雇员人事系统等,而不仅是一个程序(编译器、工资程序、字处理程序等),那么下一步骤就是系统设计。该步骤将系统分割为单独的程序、部件或子系统,并定义它们的接口
- 通过定义每个模块的功能、模块的层次结构以及模块间的接口,来设计程序或程序集合的结构
- 设计一份准确的规格说明,定义每个模块的接口与功能
- 经过一个或更多的子步骤,将模块接口规格说明转换为毎个模块的源代码算法
- 功能测试是一个试图发现程序与其外部规格说明之间存在不一致的过程。外部规格说明是一份从最终用户的角度对程序行为的精确描述。功能测试通常是一项黑盒测试
- 系统测试的目的是为了证明软件产品与其初始目标不一致(将系统或程序与其初始目标进行比较)。重点注意那些在设计外部规格说明的过程中所犯的转换错误。系统测试是一项 随心所欲,百无禁忌 的活动,而软件开发会受到心理束缚,有悖于此项活动
-
- 系统测试并不局限于系统。如果产品是一个程序,那么系统测试就是一个试图说明程序作为一个整体是如何不满足其目标的过程。
- 根据定义,如果产品没有一组书面的、可度量的目标,系统测试也就无法进行
- 验收测试是将程序与其最初的需求及最终用户当前的需要进行比较的过程。该测试通常是由程序的客户或最终用户来进行
- 安装测试,于其目的不是为了发现软件中的错误,而是为了发现在安装过程中出现的错误
系统测试用例的 15 个分类
分类 | 说明 |
能力测试 | 确保程序的目标功能实现 |
容量测试 | 发现处理大容量数据时的程序异常 |
强度测试 | 发现在大规模负载、高强度不间断持续的数据处理中的异常 |
可用性测试 | 评估最终用户在使用软件并与软件交互时的可用性问题 |
安全性测试 | 试图攻破程序的安全防线 |
性能测试 | 评估程序的响应时间以及吞吐量瓶颈 |
存储测试 | 确保程序可以正确处理其对存储的需求,包括系统的存储和物理上的存储 |
配置测试 | 检查程序是否能在推荐配置上流畅运行 |
兼容性/转换测试 | 评估新版本是否能兼容老的版本 |
安装测试 | 确保能够在所有支持的平台上安装软件 |
可靠性测试 | 评估程序是否能达到规格说明中的运行时常和MTBF(平均故障间隔时间)要求 |
可恢复性测试 | 测试系统恢复相关的功能是否按设计要求实现 |
服务/可维护性测试 | 评估系统是否拥有良好的数据处理和日志机制,以备技术支持和调试之需 |
文档测试 | 校验所有的用户文档是否准确 |
过程测试 | 对软件系统操作或维护所需涉及的流程进行评估和确定 |