什么是负载测试?(示例)

Load Testing

什么是负载测试?

负载测试是一种非功能性软件测试过程,旨在测试软件应用程序在特定预期负载下的性能。它确定了软件应用程序在多个用户同时访问时的行为。负载测试的目标是改善性能瓶颈,并确保软件应用程序在部署前的稳定和顺畅运行。

此测试通常识别——

  • 应用程序的最大操作容量
  • 确定当前基础设施是否足以运行应用程序
  • 应用程序在峰值用户负载下的可持续性
  • 应用程序可以支持的并发用户数,以及允许更多用户访问它的可伸缩性。

它是一种非功能性测试。在软件工程中,负载测试通常用于客户端/服务器、基于Web的应用程序——包括内部网和互联网。

负载测试的必要性

一些极其受欢迎的网站在遇到大量流量时遭遇了严重的宕机。电子商务网站在广告活动上投入巨资,但并未进行负载测试以确保在营销带来流量时系统性能最佳。

考虑以下负载测试示例

  • 受欢迎的玩具商店 Toysrus.com 未能处理其广告活动带来的增加流量,导致营销资金和潜在玩具销售额的损失。
  • 一家航空公司网站在节日促销期间无法处理10000多名用户。
  • 《大英百科全书》宣布免费访问其在线数据库作为促销优惠。他们数周未能应对涌入的流量。

许多网站在遇到大量流量时加载时间延迟。一些事实——

  • 大多数用户在页面加载延迟8秒后会点击离开
  • 每年因性能不佳损失44亿美元

为什么进行负载测试?

  • 负载测试增强了对系统及其可靠性和性能的信心。
  • 负载测试有助于在生产环境发生之前,识别系统在大量用户压力场景下的瓶颈。
  • 负载测试为不良性能提供了出色的保护,并为生产环境的性能管理和监控提供了补充策略。

负载测试的目标

负载测试在应用程序进入市场或生产环境之前识别以下问题:

  • 每个事务的响应时间
  • 不同负载下系统组件的性能
  • 不同负载下数据库组件的性能
  • 客户端和服务器之间的网络延迟
  • 软件设计问题
  • 服务器配置问题,如Web服务器、应用服务器、数据库服务器等。
  • 硬件限制问题,如CPU最大化、内存限制、网络瓶颈等。

负载测试将确定系统是否需要微调或修改硬件和软件以提高性能。为了有效地进行负载测试,您可以利用各种性能测试工具来帮助您识别需要改进的领域。

负载测试的先决条件

负载测试的主要指标是响应时间。在开始负载测试之前,您必须确定——

  • 响应时间是否已被测量和比较 – 定量
  • 响应时间是否适用于业务流程 – 相关
  • 响应时间是否合理 – 现实
  • 响应时间是否可实现 – 可实现
  • 响应时间是否可以使用工具或秒表测量 – 可测量

在开始负载测试之前需要设置环境

硬件平台 软件配置
  • 服务器机器
  • 处理器
  • 内存
  • 磁盘存储
  • 负载机配置
  • 网络配置
  • 操作系统
  • 服务器软件

负载测试策略

有许多方法可以进行负载测试。以下是一些负载测试策略:

Strategies of load Testing

  • 手动负载测试:这是执行负载测试的一种策略,但它不能产生可重复的结果,无法提供可测量的应用程序压力水平,而且是一个无法协调的过程。
  • 内部开发的负载测试工具:意识到负载测试重要性的组织可能会构建自己的工具来执行负载测试。
  • 开源负载测试工具:有几种开源的负载测试工具是免费的。它们可能不如付费工具那么复杂,但如果您预算有限,它们是最佳选择。
  • 企业级负载测试工具:它们通常具有捕获/回放功能。它们支持大量的协议。它们可以模拟异常大量的用户。

如何进行负载测试

负载测试过程可简要描述如下——

  1. 为负载测试创建专门的测试环境
  2. 确定以下各项
  3. 负载测试场景
  4. 确定应用程序的负载测试事务
    • 为每个事务准备数据
    • 需要预测访问系统的用户数量
    • 确定连接速度。一些用户可能通过专线连接,而另一些用户可能使用拨号连接
    • 确定用户使用的不同浏览器和操作系统
    • 所有服务器的配置,如Web、应用程序和数据库服务器
  5. 测试场景执行和监控。收集各种指标
  6. 分析结果。提出建议
  7. 微调系统
  8. 重新测试

负载测试指南

Guidelines for load testing

  1. 一旦应用程序功能稳定,就应规划负载测试。
  2. 数据池中应准备大量独特数据
  3. 应为每个场景或脚本确定用户数量
  4. 避免创建详细日志以节省磁盘I/O空间
  5. 尽量避免下载网站中的图片
  6. 在执行负载测试用例的过程中,应记录响应时间在经过期间的一致性,并将其与各种测试运行进行比较。

负载测试和压力测试的区别

负载测试 压力测试
负载测试识别系统在各种工作负载下的瓶颈,并检查系统在负载逐渐增加时的反应 压力测试确定系统的崩溃点,以揭示系统崩溃前的最大值。
要识别系统的上限,请设置应用程序的SLA,并检查系统如何处理重负载。 检查系统在极端负载下的行为以及如何从故障中恢复。
在Web应用程序上生成增加的负载是负载测试的主要目标。 压力测试旨在确保在相当长时间的突然高负载下,服务器不会崩溃。
负载测试中检查的属性是峰值性能、服务器数量和响应时间。 此类测试检查稳定性、响应时间等。
在负载测试中,负载限制是崩溃的阈值。 在压力测试中,负载限制高于崩溃的阈值。

功能测试和负载测试的区别

功能测试 负载测试
功能测试的结果很容易预测,因为我们定义了适当的步骤和前提条件 负载测试的结果是不可预测的
功能测试结果略有不同 负载测试结果差异巨大
执行功能测试的频率将很高 执行负载测试的频率将很低
功能测试结果依赖于测试数据 负载测试依赖于用户数量。

负载测试工具

LoadRunner

LoadRunner 是 HP 的工具,用于测试应用程序在正常和峰值负载条件下的性能。LoadRunner 通过创建模拟网络流量的虚拟用户来生成负载。它模拟生产环境中的实时使用情况,并提供图形结果。

在此阅读有关 Loadrunner 的更多信息

负载测试的优缺点

以下是负载测试的优点

  • 在生产前识别性能瓶颈
  • 提高系统的可伸缩性
  • 最小化系统停机相关的风险
  • 降低故障成本
  • 提高客户满意度

负载测试的缺点

  • 在软件测试的上下文中进行负载测试需要编程知识才能使用工具。
  • 工具可能很昂贵,因为定价取决于支持的虚拟用户数量。

摘要

  • 负载测试被定义为一种软件测试类型,它确定系统在实际负载条件下的性能。
  • 负载测试通常在应用程序投入生产之前改善其性能瓶颈、可伸缩性和稳定性。
  • 此测试有助于识别应用程序的最大操作容量以及系统瓶颈。
  • 软件测试中的负载测试很重要,因为如果忽视,它可能会给组织造成经济损失。