非功能测试

⚡ 智能摘要

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

  • 🎯 质量重点: 非功能性测试衡量的是系统的性能,而不是系统的功能。
  • 📏 可衡量的标准: 每一项要求都进行了量化,消除了诸如好、更好、最好等主观措辞。
  • 🔐 关键参数: 安全性、可靠性、可扩展性、可用性和可移植性是非功能性验证的主要考量因素。
  • 🧪 多种测试类型: 性能测试、负载测试、压力测试、恢复测试和兼容性测试分别针对特定的质量风险。
  • 📊 商业冲击: 强有力的非功能性测试可以降低生产成本、停机时间和客户在产品发布过程中的不满情绪。

非功能测试

什么是非功能测试?

非功能测试 是一种软件测试类别,它验证应用程序的非功能性方面,例如性能、可用​​性、可靠性以及类似的质量属性。它评估系统是否符合功能测试无法涵盖的标准,从而确保应用程序在实际应用环境中满足企业预期。

非功能性测试的一个经典例子是测量应用程序在不降低性能的情况下能够支持多少并发用户登录。非功能性测试与功能性测试同样重要,因为它直接影响客户满意度和整体产品认知度。

什么是非功能性测试概述图

非功能性测试的目标

非功能性测试旨在提高产品的整体质量和使用寿命。其主要目标包括:

  • 提高产品的易用性、效率、可维护性和便携性。
  • 降低生产风险和非功能性缺陷相关的成本。
  • 优化产品的安装、设置、执行、管理和监控方式。
  • 收集用于内部研发的测量数据和指标。
  • 加深对产品行为和所用技术的理解。

非功能性测试的特点

以下特征定义了非功能性测试的计划和执行方式:

  • 它必须是可衡量的,不留任何主观描述的空间,例如好、更好或最好。
  • 在需求分析过程开始时,确切的数字通常是未知的。
  • 必须对需求进行优先排序,以便首先解决风险最高的领域。
  • 在软件工程阶段准确识别质量属性。

非功能性测试参数

通常使用 11 个参数来界定非功能性测试工作的范围:

  1. 安全性: 衡量系统抵御来自内部或外部的蓄意或意外攻击的能力。通过安全测试验证。
  2. 可靠性: 系统持续无故障地执行其既定功能的程度。通过可靠性测试进行验证。
  3. 生存能力: 确认系统在发生故障后仍能继续运行并自行恢复。已通过恢复测试验证。
  4. 库存: 决定用户在系统运行过程中对其依赖程度。已通过稳定性测试验证。
  5. 可用性: 用户能够轻松学习、操作系统、准备输入数据以及使用系统输出结果。已通过可用性测试验证。
  6. 可扩展性: 软件应用程序扩展其处理能力以满足不断增长的需求的程度。通过可扩展性测试验证。
  7. 互操作性: 检查软件系统如何与其他软件系统交互。通过互操作性测试进行验证。
  8. 高效: 系统在负载下处理容量、数量和响应时间的程度。
  9. 灵活性: 该应用程序能够轻松地在不同的硬件和软件配置上运行,例如不同的 RAM 或 CPU 规格。
  10. 可移植性: 软件能够灵活地从当前的硬件或软件环境迁移到另一个环境。
  11. 可重用性: 指软件系统中可以进行调整以用于其他应用程序的部分。

非功能性测试参数图

软件测试的类型

软件测试大致可分为三类:

  • 功能测试
  • 非功能测试
  • 维护测试

每个类别都包含多个测试级别,团队通常称之为测试类型。不同的书籍和参考资料可能对它们进行略微不同的分类,因此可能会存在一些细微差别。

测试类型列表并不完整——目前已知的测试类型超过100种,而且新的测试类型还在不断涌现。并非每种测试类型都适用于每个项目;其适用范围取决于被测应用程序的性质、风险状况和复杂性。

非功能测试的类型

质量保证团队执行的最常见非功能性测试类型包括:

  • 性能测试
  • 负载测试
  • 故障转移测试
  • 兼容性测试
  • 可用性测试
  • 压力测试
  • 可维护性测试
  • 可扩展性测试
  • 容量测试
  • 安全测试
  • 灾难恢复测试
  • 一致性测试
  • 便携性测试
  • 效率测试
  • 可靠性测试
  • 基线测试
  • 耐力测试
  • 文档测试
  • 恢复测试
  • 国际化测试

非功能性测试的示例测试用例

以下示例说明了如何在实际项目中编写非功能性测试用例:

测试用例 # 测试用例 域名
1 当最多 1000 个用户同时访问时,应用程序加载时间不应超过 5 秒。 性能测试
2 软件应能安装在所有受支持的版本上 Windows 金益辉 macOS. 兼容性测试
3 所有网页图片都应包含描述性的alt标签。 无障碍测试

常见问题

功能测试验证系统是否满足既定需求。非功能测试则衡量系统的性能,包括速度、可靠性、易用性和安全性,确保应用程序除了核心功能之外,还能满足其他质量标准。

流行的工具包括 JMeter 以及用于性能优化的 LoadRunner Selenium 用于可用性自动化, Burp Suite OWASP ZAP 用于安全性评估,BrowserStack 用于兼容性评估。每种工具都针对质量保证团队想要衡量的特定非功能性领域。

非功能性测试应在系统功能稳定后、主要版本发布前开始。性能、安全性和可靠性测试通常安排在测试后期,但左移策略提倡在开发阶段就进行这些测试。

每个参数都根据可量化的阈值进行衡量。性能通过响应时间和吞吐量来衡量,安全性通过漏洞数量来衡量,可用性通过任务完成率来衡量,可靠性通过平均故障间隔时间来衡量。 Numbers 取代主观意见。

两者兼备。性能、负载、压力和安全测试由于其规模和可重复性,高度依赖自动化。而可用性和可访问性测试通常除了自动化工具外,还需要人工观察、专家评审或辅助技术检查。

人工智能可以自动生成负载概况、预测性能瓶颈、确定高风险测试用例的优先级并分析日志数据。人工智能驱动的平台可以缩短执行时间并更快地发现回归问题,从而帮助……ping QA团队在各个版本中扩大非功能性测试的覆盖范围。

不。人工智能可以加速扫描、基线创建和异常检测,但专家测试人员仍然需要解读结果、验证漏洞利用链并设计测试场景。人工智能在非功能性测试中增强人类的判断,而不是取代经验丰富的质量保证工程师。

总结一下这篇文章: