非功能测试
⚡ 智能摘要
非功能性测试旨在验证软件应用程序在可靠性、可用性、安全性、可扩展性以及其他质量属性方面的性能。本指南将介绍非功能性测试的目标、参数、特性、常见测试类型以及质量保证团队常用的实用测试用例示例。

什么是非功能测试?
非功能测试 是一种软件测试类别,它验证应用程序的非功能性方面,例如性能、可用性、可靠性以及类似的质量属性。它评估系统是否符合功能测试无法涵盖的标准,从而确保应用程序在实际应用环境中满足企业预期。
非功能性测试的一个经典例子是测量应用程序在不降低性能的情况下能够支持多少并发用户登录。非功能性测试与功能性测试同样重要,因为它直接影响客户满意度和整体产品认知度。
非功能性测试的目标
非功能性测试旨在提高产品的整体质量和使用寿命。其主要目标包括:
- 提高产品的易用性、效率、可维护性和便携性。
- 降低生产风险和非功能性缺陷相关的成本。
- 优化产品的安装、设置、执行、管理和监控方式。
- 收集用于内部研发的测量数据和指标。
- 加深对产品行为和所用技术的理解。
非功能性测试的特点
以下特征定义了非功能性测试的计划和执行方式:
- 它必须是可衡量的,不留任何主观描述的空间,例如好、更好或最好。
- 在需求分析过程开始时,确切的数字通常是未知的。
- 必须对需求进行优先排序,以便首先解决风险最高的领域。
- 在软件工程阶段准确识别质量属性。
非功能性测试参数
通常使用 11 个参数来界定非功能性测试工作的范围:
- 安全性: 衡量系统抵御来自内部或外部的蓄意或意外攻击的能力。通过安全测试验证。
- 可靠性: 系统持续无故障地执行其既定功能的程度。通过可靠性测试进行验证。
- 生存能力: 确认系统在发生故障后仍能继续运行并自行恢复。已通过恢复测试验证。
- 库存: 决定用户在系统运行过程中对其依赖程度。已通过稳定性测试验证。
- 可用性: 用户能够轻松学习、操作系统、准备输入数据以及使用系统输出结果。已通过可用性测试验证。
- 可扩展性: 软件应用程序扩展其处理能力以满足不断增长的需求的程度。通过可扩展性测试验证。
- 互操作性: 检查软件系统如何与其他软件系统交互。通过互操作性测试进行验证。
- 高效: 系统在负载下处理容量、数量和响应时间的程度。
- 灵活性: 该应用程序能够轻松地在不同的硬件和软件配置上运行,例如不同的 RAM 或 CPU 规格。
- 可移植性: 软件能够灵活地从当前的硬件或软件环境迁移到另一个环境。
- 可重用性: 指软件系统中可以进行调整以用于其他应用程序的部分。
软件测试的类型
软件测试大致可分为三类:
- 功能测试
- 非功能测试
- 维护测试
每个类别都包含多个测试级别,团队通常称之为测试类型。不同的书籍和参考资料可能对它们进行略微不同的分类,因此可能会存在一些细微差别。
测试类型列表并不完整——目前已知的测试类型超过100种,而且新的测试类型还在不断涌现。并非每种测试类型都适用于每个项目;其适用范围取决于被测应用程序的性质、风险状况和复杂性。
非功能测试的类型
质量保证团队执行的最常见非功能性测试类型包括:
- 性能测试
- 负载测试
- 故障转移测试
- 兼容性测试
- 可用性测试
- 压力测试
- 可维护性测试
- 可扩展性测试
- 容量测试
- 安全测试
- 灾难恢复测试
- 一致性测试
- 便携性测试
- 效率测试
- 可靠性测试
- 基线测试
- 耐力测试
- 文档测试
- 恢复测试
- 国际化测试
非功能性测试的示例测试用例
以下示例说明了如何在实际项目中编写非功能性测试用例:
| 测试用例 # | 测试用例 | 域名 |
|---|---|---|
| 1 | 当最多 1000 个用户同时访问时,应用程序加载时间不应超过 5 秒。 | 性能测试 |
| 2 | 软件应能安装在所有受支持的版本上 Windows 金益辉 macOS. | 兼容性测试 |
| 3 | 所有网页图片都应包含描述性的alt标签。 | 无障碍测试 |


