开发技术

jmeter混合场景的多种实现方式比较

性能测试设计混合场景,一般有几种方式,分别是每个场景设置一个线程组,使用if控制器,使用吞吐量控制器。不同的方式实现机制不一样,哪种方式相比而言更好呢?下面做一比较。

下面以混合访问百度首页和必应首页作为测试场景,访问预设为1:3。

多个线程组

设置两个单独的线程组,线程组一只请求百度首页,并发设置(目标并发10个,并发时间3分钟,分两步并发),线程组二请求必应首页,并发设置(目标并发30个,并发时间3分钟,分两步并发)。


按所设置的条件并发,得到如下测试结果:


百度和必应首页的平均响应时间相差较大,虽然百度首页设置的并发用户数少,但最后并发的次数百度是必应的7倍多,不符合当初设置的要求。

使用if控制器

添加一个线程组,在线程组添加两个if控制器,分别加入两个HTTP请求(百度首页和必应首页),通过调节if的条件实现按一定比例并发的需求。

首先在线程组加一个配置元件-random value,取值范围为1-100,变量名设为num。


百度首页的if条件设置为${num}<25,必应首页的if控制器条件设为${num}>25.


线程组的并发设为目标并发30个,并发时间3分钟,分两步并发。测试结果如下,并发请求数大致为1:3,符合需求:

模式匹配规则

实现方式与if控制器大体一致,只是把if控制器换为吞吐量控制器,分别设置两个控制器的吞吐量百分比为25%和75%,也即1:3的并发比例。


测试结果如下,可看出吞吐量控制器与if控制器的请求并发总数也基本一样,请求比例也符合1:3的原始设置:


纵观以上的测试结果,可看出使用if控制器和吞吐量控制器均能实现我们的预期目标,即合理的并发请求比例,而采用多个线程组的方式与我们目标有一定差距,原因在于各线程组的请求响应时间相差大,虽然同时并发,但实际并发比例难以控制。

若混合场景下各请求的响应时间差不多,多线程组的方式理论上也是能按预设比例并发的,只是实际测试的情况下,无法保证请求响应时间的大小,所以测试混合场景的时候,使用if控制器或者吞吐量控制器显然是更好的选择。

睿江云官网链接:https://www.eflycloud.com/home?from=RJ0032

Be the First to comment.

Leave a Comment

电子邮件地址不会被公开。