压力测试
压力测试是验证软件应用程序稳定性和可靠性的软件测试的一种。压力测试的目标是测量软件的健壮性和错误处理能力,它甚至测试超出正常操作点,并评估软件在极端条件下的工作方式。
在软件工程中,压力测试也称为耐久性测试。在压力测试中,AUTI还检查系统在极端条件下是否表现出有效的错误管理。
当从网站复制5GB数据并粘贴到记事本时,被测应用程序将受到压力。记事本压力很大,并给出“未响应”的错误信息。
在本教程中,将了解-
- 什么是压力测试?
- 需要进行压力测试
- 压力测试的目标
- 负载测试与压力测试
- 压力测试的类型
- 如何进行压力测试?
- 推荐用于压力测试的工具
- 压力测试的指标
需要进行压力测试
考虑以下情况-
- 在节日期间,在线购物网站可能会看到流量激增。
- 当一个博客在一家主要门户网站上被提及时,流量会激增。
为了适应这种不正常的流量高峰,执行压力测试势在必行。如果不能适应这种突如其来的交通,可能会导致收入和声誉的损失。
压力测试也非常有价值,原因如下:
- 检查系统是否在异常情况下工作。
- 当系统处于压力状态时,显示相应的错误信息。
- 极端情况下的系统故障可能会造成巨大的损失。
- 最好通过执行压力测试来为极端条件做好准备。
压力测试的目标
压力测试的目标是分析系统在故障后的行为。要使压力测试成功,系统应在极端条件下显示相应的错误消息。
为了进行压力测试,有时可能会使用大量的数据集,而这些数据集在压力测试过程中可能会丢失。测试人员在进行压力测试时不应该丢失与安全相关的数据。
压力测试的主要目的是确保系统在故障后能够恢复,这就是所谓的可恢复性。
负载测试与压力测试
负载测试 | 压力测试 |
---|---|
负载测试是对系统在正常工作负载条件下的行为进行测试,只是对实际工作负载进行测试或模拟 | 压力测试是对系统在极端条件下的行为进行测试,直到系统发生故障。 |
负载测试不会破坏系统 | 压力测试试图通过使用压倒性的数据或资源进行测试来打破系统。 |
压力测试的类型:
以下是压力测试的类型,说明如下:
分布式压力测试:
在分布式客户端-服务器系统中,测试从服务器跨所有客户端进行。压力服务器的作用是在客户端联系服务器后,服务器添加客户端的名称,并开始发送测试数据。
同时,客户端机器发送信号或心跳信号,表示其与服务器连接。如果服务器没有从图中接收到信号,则服务器可以与两个客户端(Client1和Client2) 连接,但不能发送或接收来自客户端3和4的信号。
夜间运行是运行这些压力测试场景的最佳选择。大型服务器场需要一种更有效的方法来确定哪些计算机出现了需要调查的压力故障。
应用程序压力测试:
此测试集中于查找与应用程序中的数据锁定和阻塞、网络问题和性能瓶颈相关的缺陷。
事务压力测试:
它对两个或多个应用程序之间的一个或多个事务进行压力测试。它用于系统的微调和优化。
系统压力测试:
这是集成压力测试,可以跨运行在同一服务器上的多个系统进行测试。它用于查找一个应用程序数据阻塞另一个应用程序的缺陷。
探索性压力测试:
这是压力测试的一种类型,用于使用在真实场景中不太可能发生的异常参数或条件来测试系统。它用于在意想不到的情况下查找缺陷,例如
- 大量用户同时登录
- 如果所有计算机中的病毒扫描程序同时启动
- 如果从网站访问数据库时数据库已脱机,
- 当大量数据同时插入数据库时
如何进行压力测试?
压力测试过程可分为5个主要步骤:
- 计划压力测试。在这里,可以收集系统数据、分析系统、定义压力测试目标
- 创建自动化脚本:在此阶段,将创建压力测试自动化脚本,为压力场景生成测试数据。
- 脚本执行:在此阶段,将运行压力测试自动化脚本并存储压力结果。
- 结果分析:在此阶段,将分析压力测试结果并确定瓶颈。
- 调整和优化:在此阶段,需要微调系统、更改配置、优化代码,目标是达到所需的基准。
最后,再次运行整个循环以确定调整是否产生了所需的结果。例如,为了实现性能目标,压力测试过程甚至需要3到4个周期
推荐用于压力测试的工具:
LoadRunner
HP的LoadRunner是一款广泛使用的负载测试工具。由LoadRunner确定的负载测试结果被视为基准。
JMeter
JMeter是一个开源测试工具。它是用于压力和性能测试的纯Java应用程序。JMeter旨在涵盖负载、功能、压力等测试类型,它需要JDK 5或更高版本才能运行。
Stress Tester
此工具提供对Web应用程序性能的广泛分析,以图形格式提供结果,并且非常易于使用。不需要编写高级脚本,并可带来良好的投资回报。
Neo load
这是市场上流行的测试Web和移动应用程序的工具。该工具可以模拟数千个用户,以评估应用程序在负载下的性能,并对结果进行分析。该工具简单易用,性价比高,具有良好的可扩展性。
压力测试的指标
度量有助于评估系统的性能,通常在压力测试结束时学习。常用的指标是-
可扩展性和性能
- 每秒页数:测量每秒请求的页数
- 吞吐量:基本度量-响应数据大小/秒
- 轮次:计划测试场景的次数与客户端执行的次数
应用程序响应
- 点击时间:检索图像或页面的平均时间
- 到第一个字节的时间:返回数据或信息的第一个字节所需的时间
- 页面时间:检索页面中的所有信息所花费的时间
故障
- Failed Connections:客户端拒绝的失败连接数(弱信号)
- Failed Rounds:失败的轮次数
- Failed Hits:系统尝试失败的次数(断开的链接或看不见的图像)
结论
压力测试的目标是在极端条件下检查系统。它监视诸如存储器、处理器、网络之类的系统资源。它检查系统在压力下是否显示适当的错误消息。