性能测试教程(定义、类型、指标、示例)

性能测试

性能测试是一种软件测试方法,用于计算软件应用程序在特定工作负载下的速度、反应时间、稳定性、可靠性、可扩展性和资源利用率。性能测试的主要目标是观察和消除软件应用程序中的性能瓶颈。它也被称为“性能测试”,是性能工程的一部分。

性能测试的目标是确定软件产品的性能如何。

  • 应用程序的速度决定了它的反应速度。

  • 软件应用程序可以处理的最大用户负载取决于其可扩展性。

  • 稳定性 - 确定应用在承受变化负载时是否稳定。

性能测试的目的是什么?

软件系统的特性和功能并不是唯一需要考虑的事情。软件应用程序的性能,例如反应时间、可靠性、资源利用率和可扩展性,很重要。性能测试的目的是消除性能瓶颈,而不是发现错误 完成性能测试是为了向利益相关者提供有关其应用程序性能、稳定性和可伸缩性的信息。此外,性能测试揭示了在产品投放市场之前必须解决的问题。

如果没有性能测试,软件更希望出现多人同时使用时速度慢、跨操作系统不稳定、可用性差等问题。在预期的工作负载下,性能测试将确定他们的程序是否满足速度、可扩展性和稳定性标准。由于性能测试不充分或不存在而导致性能指标不佳的程序推向市场,希望赢得不好的声誉并未能实现销售目标

关键任务应用程序,例如太空发射计划或救生医疗设备,也应进行性能测试,以验证它们是否能长时间不间断地运行。

根据 Dunn & Bradstreet 的数据,财富 500 强企业中有 59% 的平均每周停机时间为 1.6 小时。鉴于财富 500 强企业平均每小时向其至少 10,000 名员工支付 56 美元,这样一家公司的停机费用中的劳动力部分将为每周 896,000 美元或每年超过 4600 万美元。Google.com 仅延迟 5 分钟( 13 年 8 月 19 日)预计将花费这家搜索巨头 545,000 美元。据信,最近的亚马逊网络服务中断已使企业每秒损失 1100 美元的销售额。

因此,性能测试至关重要。

性能测试类型

  • 负载测试- 负载测试评估应用程序处理预期用户负载的能力。在软件程序上线之前,目标是识别性能瓶颈。

  • 压力测试- 压力测试是让应用程序通过其步伐以查看它管理高流量或数据处理的情况的过程。目标是找出应用程序的断点在哪里。

  • 耐力测试- 耐力测试确保程序可以在更长的时间内承受预测的负载。

  • 尖峰测试- 尖峰测试检查软件对用户生成的负载中的大尖峰的响应。

  • 批量测试- 批量测试需要大量测试。数据被输入数据库,软件系统的一般行为受到监控。目标是测试具有不同数据库卷的软件应用程序的性能。

  • 可扩展性测试-可扩展性测试的目标是查看软件程序“扩展”以维持用户负载增加的程度。它有助于规划软件系统的容量扩展。

典型的性能问题

速度、响应时间、加载时间和可扩展性不足是最常见的性能问题。应用程序最重要的特性之一是它的速度。潜在消费者将放弃运行缓慢的应用程序。性能测试可确保您的程序运行得足够快,以保持用户的注意力和兴趣。看看下面的常见性能问题列表,您会发现速度是其中许多问题的共同特征 -

  • Long Load Time - 应用程序的加载时间是应用程序启动所需的时间。这应该限制在最低限度。虽然某些应用程序无法在一分钟内加载,但其他应用程序可以。如果可能的话,加载时间应该保持在几秒钟。

  • 响应时间差- 用户将数据写入应用程序以及应用程序回复该输入所需的时间称为响应时间。一般来说,这应该是一个相对较快的过程。如果用户被迫等待太久,他们将失去兴趣。

  • 可扩展性差- 当软件产品无法处理预期数量的用户或无法容纳足够广泛的客户时,据说它的可扩展性很差。为确保应用程序可以管理预期数量的用户,应执行负载测试。

  • 瓶颈- 瓶颈是系统中的障碍,它降低了system.When编码缺陷的整体性能或硬件困难在特定条件下导致吞吐量下降,这被称为瓶颈。有缺陷的代码部分经常是瓶颈的根源。找到导致速度变慢的代码部分并尝试纠正它,这是解决瓶颈问题的关键。瓶颈通常可以通过改进或添加额外的硬件来缓解。CPU 消耗是一个常见的性能瓶颈。

    • 内存利用率

    • 网络的利用

    • 操作系统的限制

    • 硬盘的使用

性能测试过程

性能测试中使用的方法可以有很大差异,但测试的目标保持不变。它可以帮助您证明您的软件系统符合预定义的性能标准。它还可用于比较两个不同软件系统的性能。它还可以帮助您识别导致其性能不佳的软件系统区域。

执行性能测试的过程概述如下。

  • 确定您的测试环境 - 了解您的物理测试环境、生产环境和测试工具。在开始测试过程之前,了解将使用的硬件、软件和网络设置。它将帮助测试人员开发更有效的测试。它还有助于识别测试人员在整个性能测试方法中可能面临的潜在问题。

  • 确定性能验收标准——包括吞吐量、响应时间以及资源分配目标和限制。除了这些目标和限制之外,制定项目成功标准也很重要。由于项目规范通常不提供一组多样化的性能基准,测试人员应该有权创建性能标准和目标。有时可能根本没有。寻找可比较的应用程序进行比较是一种在可能的情况下设置性能目标的有用方法。

  • 规划和设计性能测试——找出最终用户的行为可能有何不同,并选择关键场景来测试所有可能的用例。必须模拟一系列最终用户,计划性能测试数据,并定义指标。

  • 配置测试环境 - 在开始测试之前,请确保环境已准备就绪。安排工具和其他资源。

  • 实施测试设计 - 根据您的测试计划编写性能测试。

  • 运行测试 - 运行测试并仔细查看它们。

  • 分析、调整和重新测试 - 通过分析、调整和重新测试来整合、评估和交流测试结果。然后再次微调和测试以确定性能是提高还是降低。当 CPU 成为瓶颈时停止,因为每次重新测试时改进往往会减少。那么您可能需要考虑升级 CPU 功率。

性能测试工具

市场上有许多不同类型的性能测试工具。您用于测试的工具将由许多参数决定,包括支持的协议类型、许可成本、硬件要求、平台支持等。下面提供了一组常用的测试工具。

  • 加载忍者

  • HP LoadRunner

  • JMeter

我们应该测试哪些应用程序的性能?

只有客户端-服务器系统需要进行性能测试。这意味着任何不是建立在客户端-服务器架构上的应用程序都不需要进行测试。

例如,Microsoft Calculator 不是面向客户端服务器的,也不支持多用户,因此它不适合进行性能测试。

性能测试用例示例

  • 当 1000 名用户同时访问网站时,确保响应时间小于 4 秒。

  • 当网络连接缓慢时,检查负载下的应用程序的响应时间是否在可接受的范围内。

  • 在应用程序崩溃之前,检查它可以管理的最大用户数。

  • 同时读写500条记录时,检查数据库执行时间。

  • 在高负载期间检查应用程序和数据库服务器的 CPU 和内存利用率。

  • 检查应用程序在低、中、中、重负载情况下的反应时间。

在实际性能测试执行期间,诸如可接受范围、重负载等模糊的词被替换为真实值。这些指标由性能工程师根据应用程序的技术前景和业务需求设置。

结论

在营销任何软件产品之前,软件工程中都需要进行性能测试。它保证了消费者的幸福,同时也保护了投资者的投资免受产品故障的影响。客户满意度、忠诚度和保留率常常被性能测试的成本所抵消。