Jmeter接口的负载测试概念
前文:可以正常使用Jmeter,了解各控件的功能,本文仅提供概念。
负载测试的核心目的是模拟不同数量的并发用户请求,以确定系统在多种负载条件下的性能和稳定性。具体来说,负载测试可以帮助你回答以下问题:
系统能处理多少并发用户或请求?
系统的响应时间会在并发增加时如何变化?
系统在高负载下是否会崩溃或者变得不可用?
系统在高负载下是否能保持可接受的响应时间和吞吐量?
系统的资源(如 CPU、内存、数据库连接等)在高负载下的消耗情况如何?
一.明确目标
在进行使用Jmeter进行压测之前,需要明确一下自己的压测的方向:
1.无用户限制,想探索一下该接口的极限承受能力,也就是最多能承受多少并发用户(找出极限 TPS)
2.存在用户数目限制,想探索一下,该用户数目下,接口的极限响应时间是多少
二.业务场景
需要明确自己当前测试接口的主要业务内容,如果是只需要单接口测试(登录、注册等接口)的,那么就是不断的调用该接口,测试该接口的承受能力。
如果是需要多接口的搭配使用,例如下单,付款这种事务测试,那么需要进行关联性操作,判断该多接口下的承压能力
三.明确接口的信息
使用Jmeter进行接口测试,需要拥有接口的基本信息,如下:
1.请求方法:Get、Post、Delete
2.请求URL:完整的接口路径
3.请求参数:
Query Parameters:一般都是Get请求,URL 后面的 ?key1=value1&&key2=value2
Body:对于Post等方法,请求体里的数据有很多种数据型式,JSON、
form-data
(表单)等
4.请求头:是否需要特定的 Header?比如 Content-Type: application/json
或 Authorization: Bearer <token>
。
四.负载测试的核心
1.创建线程组
2.创建Http请求以及可能需要的Http请求头管理器等等
3.创建结果树以及可查看负载测试下的TPS、响应时间的聚合报告等
在线程组配置好线程数、时间后,进行压测,结果满足以下条件,可逐步提高线程数,直到接口负载达到最大!
响应时间:优秀:1S以内 良好:1~3秒 合格:3~5秒
错误率:正常值:小于1%,如果达到5%,系统在崩溃的边缘
吞吐量:根据业务需求,如果系统需要支持 5000 个并发请求每秒,而你测试出来的吞吐量只有 2000 个请求每秒,则不合格。
资源使用:例如:CPU、内存、磁盘、网络带宽等,尤其不能造成内存溢出现象。
五.负载测试的类型:
负载测试可以分为几种类型,分别聚焦于不同的测试目标:
a. 基本负载测试(Normal Load Testing)
目的:测试系统在正常负载下的表现。
模拟场景:模拟一个正常的使用场景,确定系统在常规并发量下是否能稳定工作。
b. 峰值负载测试(Peak Load Testing)
目的:测试系统在预期峰值负载下的表现。
模拟场景:模拟系统可能遇到的最大并发量,以确保系统在峰值负载下能够正常运行。
c. 极限负载测试(Stress Testing)
目的:确定系统的极限承载能力,测试在超出预期负载时系统的稳定性。
模拟场景:测试系统在非常高的并发请求下会崩溃或出现性能问题的情况,目的是找到系统的“崩溃点”。
举例:如果一个系统设计最多支持 1000 个并发请求,通过极限负载测试,测试是否可以承受 2000、3000、5000 个请求,直到系统崩溃。
d. 持续负载测试(Endurance Testing)
目的:测试系统在长时间负载下的表现,确保系统能够在长期使用中维持稳定。
模拟场景:模拟系统在较长时间内(例如几个小时或几天)持续承受相对较低的负载,测试是否会出现内存泄漏或资源耗尽的问题。
e. 容量测试(Capacity Testing)
目的:测试系统在逐渐增加负载的情况下能达到的最大容量。
模拟场景:逐步增加并发用户数,直到系统开始出现响应时间过长、出错率增加或性能下降,确定系统能够承受的最大负载。