压力测试

2025年3月17日 | 阅读 7 分钟

在本节中,我们将理解压力测试,它是性能测试的重要组成部分,用于通过施加大于期望负载的负载来检查应用程序的行为。

我们还将了解其过程、为什么需要进行压力测试、压力测试的目标、示例、压力测试的各种功能、优点和缺点。

压力测试简介

在软件测试中,压力测试是功能非测试中性能测试的一个重要组成部分。

压力测试是一种用于在超出正常功能限制的情况下检查软件的可访问性和健壮性的测试。它主要考虑关键软件,但也可用于所有类型的软件应用程序。

它也被称为耐力测试、疲劳测试折磨测试

压力测试包括超出标准操作范围的测试,反复进行直到崩溃点,以获得输出。

它强调在重负载下的错误处理和健壮性,而不是在正常条件下的正确行为。

换句话说,我们可以说压力测试用于验证系统的稳定性和

可靠性,并确保系统在灾难情况下不会崩溃。

为了分析系统在极端条件下的工作情况,我们在正常负载之外执行压力测试

压力测试的目标

使用压力测试的主要目标是实现以下方面:

  • 执行压力测试的主要目的是确认软件不会因计算资源(如磁盘空间、内存和网络请求)不足而崩溃。
  • 压力测试的实施证明了系统能够轻松地故障和恢复,这被称为可恢复性过程。
  • 我们可以使用压力测试来发现硬件问题、数据损坏问题。
  • 压力测试将帮助我们识别在持续峰值负载期间可能悄悄出现的安全漏洞。
  • 它有助于确定极端负载下软件应用程序的数据完整性,这意味着数据在故障后应处于可靠状态。

压力测试的特点

以下是压力测试的基本特点:

  • 压力测试还确保意外故障不会导致安全问题。
  • 它用于分析系统在罕见情况下的工作情况以及系统在故障后的行为。
  • 压力测试用于检查系统在崩溃前是否已保存数据。
  • 压力测试确保在系统承受压力时显示合适的错误消息。

我们为什么需要执行压力测试?

如果我们遇到以下情况,我们就需要执行压力测试:

每当电子商务或在线购物网站在节日期间宣布促销时,可能会出现流量激增。或者当一篇文章被顶尖报纸报道时,会带来意想不到的流量涌入。

如果我们无法应对这种突然的流量,可能会导致利润和声誉损失。因此,在这种情况下,我们需要执行压力测试以应对此类不规则的流量高峰

对于以下场景,也需要执行压力测试:

  • 当系统承受压力时,应显示正确的错误消息。
  • 检查系统是否在异常情况下工作。
  • 如果系统在危险情况下发生故障,可能会导致巨额利润损失。
  • 通过实施压力测试,我们将为极端情况做好准备。

压力测试示例

让我们来看一些我们可以发现压力测试用途的真实示例

示例 1:电子商务网站/应用程序

在新品发布、促销、假期、推广和节日优惠期间,电子商务应用程序往往会在很短的时间内吸引大量用户。

示例 2:重大/病毒事件发生时的新闻网站

当发生重大事件时,新闻网站会崩溃或变慢;例如,迈克尔·杰克逊去世时,大多数新闻网站都变慢了,有些甚至崩溃了。

为了克服这种情况,我们需要对特定应用程序进行压力测试,并在发生任何崩溃或故障时做好快速恢复的准备。

示例 3:教育委员会的成绩查询网站

对教育委员会的成绩查询网站进行压力测试非常重要。在查询成绩的日子里,许多学生、用户和申请人会登录该网站查看他们的分数。

因此,执行压力测试有助于识别应用程序的故障,并在短时间内出现最终负载或成绩公布时评估性能和可恢复性。

注意:对网站或应用程序进行压力测试对于处理访客或用户数量的意外增加非常重要。

压力测试的类型

压力测试可以分为几个部分,如下所示:

Stress Testing
  • 产品或应用程序压力测试
  • 客户端/服务器或分布式压力测试
  • 分析型压力测试
  • 系统化压力测试
  • 事务压力测试

产品或应用程序压力测试

  • 应用程序或产品压力测试主要侧重于确定与网络问题、数据锁定、阻塞以及软件产品性能瓶颈相关的故障。

客户端/服务器或分布式压力测试

  • 在这种类型的压力测试中,会测试与服务器相关的所有客户端。
  • 分布式压力测试用于在服务器的所有客户端之间执行。
  • 当客户端-服务器系统承受压力时,服务器可以与客户端 A 和 B通信,但无法与客户端 C 和 D连接,如下图所示。
Stress Testing

分析/探索性压力测试

  • 分析型或探索性测试用于在不太可能在真实场景中发生的异常约束下执行系统。
  • 它主要用于识别罕见情况下的错误,例如大量用户同时登录或数据库在从网站检索时离线。

让我们看一些分析型压力测试的示例,其中使用了这种不规则条件:

  • 当大量并行用户尝试登录应用程序时。
  • 数据库中添加了海量数据。
  • 当网站从前端访问时,与网站关联的数据库关闭。

系统化压力测试

  • 这是用于在运行在同一服务器上的各种系统之间执行测试的组合测试。
  • 使用系统化压力测试,我们可以轻松检测到数据一个应用程序阻塞另一个应用程序的瓶颈。

事务压力测试

  • 另一种压力测试类型是事务压力测试,用于在不同应用程序之间实现一个或多个事务。
  • 执行事务压力测试的主要目标是提高系统性能。

压力测试过程/如何执行压力测试

压力测试过程将分为以下几个步骤:

Stress Testing

步骤 1:确定测试环境

在压力测试的第一步,我们将确定可用于实现压力测试的网络、软件和硬件配置以及可用工具。

步骤 2:找到性能验收标准

在确定了测试环境之后,我们将找到性能验收标准,这将帮助我们对用于测试应用程序在压力下的性能的指标进行分类。

同时,确定压力测试的成功标准,例如,可以施加在应用程序上的最大负载是多少才能使其崩溃。

步骤 3:规划和设计压力测试

在压力测试过程的下一步,我们将规划和设计压力测试计划,识别测试场景等。

步骤 4:配置测试环境

一旦压力测试计划成功创建,我们将进入下一步,在那里我们将创建测试环境、工具和资源,以执行每个方法,因为功能和组件可用于测试。

步骤 5:实施测试设计

在配置了测试环境之后,我们将开发压力测试,从而使测试设计达到最佳性能。

步骤 6:执行测试

在下一步,我们将执行特定测试,观察并确认测试以及测试数据和输出收集。

步骤 7:分析结果

在压力测试过程的最后一步,我们将分析结果,汇总并与相关团队共享输出数据。

压力测试工具

众所周知,压力测试性能测试的一部分,因此可用于性能测试的工具也可用于压力测试。因此,市面上有各种类型的压力测试工具,其中一些是商业工具,一些是开源工具。下面列出了一些最常用的压力测试工具:

  • Apache JMeter
  • NeoLoad
  • Stress tester
  • LoadRunner

有关上述压力测试工具的详细信息,请参阅以下链接:

performance-testing-tools

压力测试的优点和缺点

优点

执行压力测试的一些重要好处如下:

  • 压力测试表明系统在故障后的行为,并确保系统能够快速从崩溃中恢复。
  • 执行压力测试最显著的优势是使系统在正常和不正常条件下都能正常工作。
  • 它决定了系统的可扩展性并提高了软件的性能。

缺点

一些最常见的压力测试缺点如下:

  • 即使在使用 JMeter 等开源工具时,也需要一个负载测试环境,该环境应尽可能接近生产环境设置。
  • 如果我们正在编写压力测试脚本,那么编写脚本的人应该具备该特定工具支持的语言的足够脚本知识。
  • 如果我们使用压力测试,它将需要额外的资源,这使得这种测试成本更高。
  • 如果我们手动执行压力测试,它将成为一项繁琐且复杂的任务,而且可能无法产生预期的结果。

概述

在本教程中,我们已经了解到压力测试用于评估系统在极端情况下的表现。它可以验证系统是否能恢复到正常状态。

它是非功能性测试的一种,通常在功能性测试之后执行。

压力测试完全侧重于在极端负载情况下测试系统,以检测其崩溃点,并查看在系统无响应时是否显示了适当的消息。


下一主题恢复测试