软件测试中的压力测试是什么?
压力测试
压力测试 是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目的是测量软件在极重负载条件下的稳健性和错误处理能力,并确保软件不会在关键情况下崩溃。它甚至会进行超出正常运行点的测试,并评估软件在极端条件下的工作情况。
在软件工程中,压力测试也称为 耐力测试. 在压力测试中,AUT 会在短时间内受到压力,以了解其承受能力。最突出的用途 压力测试的目的是确定系统或软件或硬件崩溃的极限. 它还检查系统在极端条件下是否表现出有效的错误管理。
当从网站复制 5GB 数据并粘贴到记事本中时,测试中的应用程序将承受压力。记事本承受压力并显示“未响应”错误消息。
压力测试的必要性
考虑以下实时示例,我们可以发现压力测试的用法-
- 在节日期间,网上购物网站可能会出现流量激增,或者发布促销信息。
- 当一个博客被主要报纸提及时,其访问量会突然激增。
必须进行压力测试来应对这种异常流量高峰。无法应对这种突发流量可能会导致收入和声誉损失。
压力测试也非常有价值,原因如下:
- 检查系统在异常情况下是否正常工作。
- 当系统承受压力时显示适当的错误消息。
- 极端条件下的系统故障可能导致巨大的收入损失
- 最好通过执行压力测试来为极端条件做好准备。
压力测试的目标
压力测试的目的是分析系统发生故障后的行为。为了使压力测试成功,系统在极端条件下应该显示适当的错误消息。
进行压力测试时,有时可能需要使用大量数据集,而这些数据集可能会在压力测试过程中丢失。测试人员在进行压力测试时不应丢失这些与安全相关的数据。
压力测试的主要目的是确保系统在故障后恢复,这被称为 可恢复性.
负载测试与压力测试
负载测试 | 压力测试 |
---|---|
负载测试 是在正常工作负载条件下测试系统行为,只是用实际工作负载进行测试或模拟 | 压力测试是在极端条件下测试系统行为,直至系统失效。 |
负载测试不会破坏系统 | 压力测试试图通过使用大量数据或资源进行测试来破坏系统。 |
压力测试的类型
以下是压力测试的类型并解释如下:
分布式压力测试:
在分布式客户端-服务器系统中,测试是在服务器上对所有客户端进行的。压力服务器的作用是将一组压力测试分发给所有压力客户端并跟踪客户端的状态。客户端联系服务器后,服务器会添加客户端的名称并开始发送数据进行测试。
同时,客户端机器发送信号或心跳,表明它已与服务器建立连接。如果服务器没有收到来自客户端机器的任何信号,则需要进一步调查以进行调试。从图中可以看出,服务器可以与 2 个客户端(客户端 1 和客户端 2)连接,但无法发送或接收来自客户端 3 和 4 的信号。
夜间运行是运行这些压力测试场景的最佳选择。大型服务器场需要一种更有效的方法来确定哪些计算机发生了需要调查的压力故障。
应用程序压力测试:
该测试集中于查找与应用程序中的数据锁定和阻止、网络问题和性能瓶颈相关的缺陷。
交易压力测试:
它对两个或多个应用程序之间的一个或多个事务进行压力测试。它用于微调和优化系统。
系统压力测试:
这是集成压力测试,可以在同一台服务器上运行的多个系统上进行测试。它用于查找一个应用程序数据阻塞另一个应用程序的缺陷。
探索性压力测试:
这是压力测试的一种类型,用于使用在真实场景中不太可能发生的异常参数或条件来测试系统。它用于发现意外场景中的缺陷,例如
- 大量用户同时登录
- 如果病毒扫描程序在所有计算机中同时启动
- 如果从网站访问数据库时数据库已离线,
- 当大量数据同时插入数据库时
如何进行压力测试?
压力测试过程可分为 5 个主要步骤:
步骤1)规划压力测试: 在这里,您可以收集系统数据、分析系统、定义压力测试目标
步骤2)创建自动化脚本: 在此阶段,您将创建压力测试自动化脚本,为压力场景生成测试数据。
步骤3)脚本执行: 在此阶段,您运行压力测试自动化脚本并存储压力结果。
步骤4)结果分析: 在此阶段,您将分析压力测试结果并找出瓶颈。
步骤5)调整和优化: 在此阶段,您将微调系统,更改配置,优化代码,以达到所需的基准。
最后,您再次运行整个周期,以确定调整是否产生了预期结果。例如,通常需要 3 到 4 个压力测试周期才能实现性能目标
压力测试推荐的工具
加载程序
HP 的 LoadRunner 是一款广泛使用的负载测试工具。Loadrunner 生成的负载测试结果可作为基准。
捷米特
Jmeter 是一个开源测试工具。它是一个纯粹的 Java 适用于压力和 性能测试。Jmeter 旨在涵盖负载、功能、压力等类型的测试。它需要 JDK 5 或更高版本才能运行。
压力测试仪
此工具提供对 Web 应用程序性能的广泛分析,以图形格式提供结果,并且使用起来非常简单。无需高级脚本,并能带来良好的投资回报。
Neo 加载
这是市场上流行的网络测试工具, 联络号码 应用程序。该工具可以模拟数千个用户,以评估应用程序在负载下的性能并分析响应时间。它还支持云集成——性能、负载和压力测试。它易于使用、经济高效,并提供良好的可扩展性。
压力测试指标
指标有助于评估系统的性能,通常在压力测试结束时进行研究。常用的指标是 -
测量可扩展性和性能
- 每秒页面数:测量每秒请求的页面数
- 吞吐量:基本指标 - 响应数据大小/秒
- 轮次:计划测试场景的次数与客户执行测试场景的次数
应用响应
- 点击时间:检索图像或页面的平均时间
- 第一个字节的时间:返回数据或信息的第一个字节所需的时间
- 页面时间:检索页面中所有信息所需的时间
故障
- 失败的连接:客户端拒绝的失败连接数(弱 Signal)
- 失败轮数:失败轮数
- 失败次数:系统尝试失败的次数(链接失效或图片无法显示)
结语
压力测试的目的是检查系统在极端条件下的表现。它监控内存、处理器、网络等系统资源,并检查系统恢复正常状态的能力。它检查系统在压力下是否显示适当的错误消息。
压力测试示例
- 电子商务网站宣布节日促销
- 一些重大事件发生时的新闻网站
- 教育委员会的结果网站
- 社交网站或博客、应用程序等