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

1、最开始做性能测试时,可能会有一个误区:设置的并发线程数以为是请求数(我最开始就是这样),导致理不清为什么我并发200个线程,为啥有万个请求?哈哈
200个线程只是200个线程一同发请求,但是至于能发多少个线程,还要看响应时间。在没有其他条件的影响下只看响应时间,比如响应时间100ms,那么1个线程1s可以发10个请求,200个线程1s可以发2000个请求。
想要控制吞吐量,
Jmeter有一个定时器:Constant Throughput Timer(常数吞吐量定时器)。
Jmeter使用GUI压测所用到的插件、定时器等_第1张图片
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、当要压测的接口需要传入上一接口返回的数据时,压测只压测一个接口,怎么办?我是将他们放到不同的线程组中,这样压测只压测其中一个线程组的就好了。。

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

如果想了解另一种,在网上搜索一下就有了。
Jmeter使用GUI压测所用到的插件、定时器等_第4张图片
接收时,也是需要接收上一步设置的全局变量requestToken,${__P(requestToken,)}
Jmeter使用GUI压测所用到的插件、定时器等_第5张图片
3、想要模拟得更像真实场景,可以添加一个Stepping Thread Group (起个中文名:梯度加压线程组)
这个需要下载JMeterPlugins-Standard.jar包,放到jmeter的 \lib\ext目录下,重新打开Jmeter,在测试计划点击右键—Threads就有了(同时,第4点中的几个插件也有了)。
Jmeter使用GUI压测所用到的插件、定时器等_第6张图片
添加之后,进行场景设置,根据自身业务情况设置就好。
Jmeter使用GUI压测所用到的插件、定时器等_第7张图片
注意:设置的时候,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
Jmeter使用GUI压测所用到的插件、定时器等_第8张图片
绘制的图如下:(只是跑了1s,给大家看看图是什么样的,哈哈)
Jmeter使用GUI压测所用到的插件、定时器等_第9张图片
当然,如果使用非GUI模式,就不需要这个图了,可以直接生成报告,自动绘制各种图标。

你可能感兴趣的:(测试工具)