Jmeter使用GUI压测所用到的插件、定时器等

本文介绍了JMeter在GUI模式下进行性能测试时,如何利用Constant Throughput Timer控制吞吐量,并探讨了线程组间传递参数的方法,以及推荐了几款增强图表可视化的插件,帮助模拟真实场景并分析结果。
摘要由CSDN通过智能技术生成

1、最开始做性能测试时,可能会有一个误区:设置的并发线程数以为是请求数(我最开始就是这样),导致理不清为什么我并发200个线程,为啥有万个请求?哈哈
200个线程只是200个线程一同发请求,但是至于能发多少个线程,还要看响应时间。在没有其他条件的影响下只看响应时间,比如响应时间100ms,那么1个线程1s可以发10个请求,200个线程1s可以发2000个请求。
想要控制吞吐量,
Jmeter有一个定时器:Constant Throughput Timer(常数吞吐量定时器)。
在这里插入图片描述
Calculate Throughput based on :有5个选项
  
  ①This thread only :控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 target Throughput 乘以设置的线程数量。
  ②All active threads : 设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。
  ③All active threads in current thread group :设置的target Throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和All active threads选项的效果完全相同。
  ④All active threads (shared ):与All active threads 的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。
  ⑤All cative threads in current thread group (shared ):与All active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。
  
  注意:Constant Throughput Timer只有在线程组中的线程产生足够多的request 的情况下才有意义,因此,即使设置了Constant Throughput Timer的值,也可能由于线程组中的线程数量不够,或是定时器设置不合理或者接口本身响应时间太长每秒请求数不足,等原因导致总体的QPS不能达到预期目标。

2、当要压测的接口需要传入上一接口返回的数据时,压测只压测一个接口,怎么办?我是将他们放到不同的线程组中,这样压测只压测其中一个线程组的就好了。。

(当然还有其他的办法,只是我个人觉得这样最方便,还可以加多个线程组,其他线程组都可以单独压测,也可以共用第一个线程组的返回数据)
在这里插入图片描述
如上图:我将token获取接口放到第一个线程组,只执行一次就好。要压测的接口放到第二个线程组。
问题来了:怎样将第一个线程组中的接口返回值传入到第二个线程组中呢?仔细看下图:
①我用的json提取器(也可以用正则),提取响应内容,
②然后使用BeanShell PostProcessor将提取的内容作为全局变量,
③再在第二个线程组中接收这个全局变量就好了。
在这里插入图片描述
BeanShell PostProcessor有两种写法,我使用的是其中一种
String Token=bsh.args[0]; ${__setProperty(requestToken,${Token},)};
将提取的Token设置成全局变量:requestToken(名字都是自己取的)

如果想了解另一种,在网上搜索一下就有了。
在这里插入图片描述
接收时,也是需要接收上一步设置的全局变量requestToken,${__P(requestToken,)}
在这里插入图片描述
3、想要模拟得更像真实场景,可以添加一个Stepping Thread Group (起个中文名:梯度加压线程组)
这个需要下载JMeterPlugins-Standard.jar包,放到jmeter的 \lib\ext目录下,重新打开Jmeter,在测试计划点击右键—Threads就有了(同时,第4点中的几个插件也有了)。
在这里插入图片描述
添加之后,进行场景设置,根据自身业务情况设置就好。
在这里插入图片描述
注意:设置的时候,First wait for 后面这个几秒钟,我之前有遇到一个问题,因为我这个压测接口需要用到上一个线程中的返回结果,要等取到这个返回值传入到压测接口,这个接口才能正常运行,不然报错。我一开始设置等待时间是0,导致开始全是错的,我就想这咋回事呢?结果一看是没获取到token,所以我就在这里先设置等待2秒,然后就好了。

4、响应结果,使用自带的聚合结果和图形结果不太容易查看,建议使用以下几个:
jp@gc - Transactions per Second
jp@gc - Response Times Over Time
jp@gc - Active Threads Over Time
jp@gc - Composite Graph
在这里插入图片描述
绘制的图如下:(只是跑了1s,给大家看看图是什么样的,哈哈)
在这里插入图片描述
当然,如果使用非GUI模式,就不需要这个图了,可以直接生成报告,自动绘制各种图标。

Apache JMeter是一款开源的压力测试工具,用于评估应用系统的性能、负载能力和稳定性。以下是使用JMeter进行压测的基本步骤: 1. **准备脚本**: 首先需要创建一个测试计划(Test Plan),然后添加一个或多个采样器(Samplers),如HTTP请求器(HTTP Request)用于发送网络请求,数据库连接器(Database Connection Configuration)用于模拟数据库操作。 2. **配置采样器**: 设置采样器的相关参数,比如URL、数据源等,并可以设置线程组(Thread Group)的数量和步进时间来模拟并发用户。 3. **设置监听器**: 添加监听器(Listeners)来查看和分析测试结果,例如查看响应时间、吞吐量、错误信息等,常用的监听器有视图结果树(View Results Tree)、聚合报告(Summary Report)等。 4. **预运行检查**: 在正式开始压测前,先进行小规模的“手工”测试,确认脚本编写无误且能正常运行。 5. **启动测试**: 点击“Run”按钮开始压力测试。你可以选择立即运行或定时运行。 6. **监控与记录**: 跟踪测试过程,查看JMeter图形界面中的实时反馈,包括线程活动图、响应时间分布等。 7. **数据分析**: 完成压测后,通过收集的数据生成详细的报告,分析系统性能瓶颈并优化测试策略。 8. **循环和调整**: 根据测试结果,可能需要修改脚本、增加采样器数量或改变并发用户数,不断迭代优化压测过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值