在性能场景设计中我们难免会遇到这种需求,比如说在登录后首页场景中需求说明书中要求有300个用户同时在线,其中登录后停留在首页的用户占总用户的1/3,使用搜索功能的用户占总用户的2/3,在这时我们便会用到jmeter比例场景的设计。其实呢jmeter比例场景的设计方法有3-4种,但有些方法并达不到太高的精确度,这里呢博主只跟大家介绍一下精准度最高if控制器,在使用前需要对其进行简单的设置。下面看博主一步步演示。
- 在线程组里添加if控制器
2.将需要执行设置比例场景的脚本放在if控制器下面。(在jmeter里面有个作用域的概念请大家注意)
讲解一下if控制器页面。
3.if比例场景代码。打开函数组手,找到__counter,该函数呢主要是用于计算的,支持Java字符串操作。
完成以上配置,拷贝字符串。然后打开__jexl3函数(用于将字符串转化成jmeter格式,(哈哈,大概是这样的以前研究过这些理论现在记不清了)),将拷贝好的字符串复制到JEXL expression to evaluate里面点击生成。比例场景的代码的框架将会自动生成,下面直接将它复制到if控制器里即可。后面熟练后可以直接在if控制器里面上面的代码。
4.到目前为止其实都没有什么技术难度,后面设计比例场景就稍微有点点的难度。比如说现在我们要设计一个1:3的比例场景,下面如python代码所示。
代码执行结果:
在这里我相信有代码基础的朋友这时一定会恍然大悟。就这么简单啊,哈哈哈。现在我们将上面这个算法移到if控制器的代码中。
下面我们来运行一下看一下执行结果。
可以看到执行的比例无限接近1:3。
后面我们在设计一下2:3的比例场景。先做个错误的示范,这也是后面会让大家感到疑惑的一点。请看以下代码。
是不是看着没有任何问题,但如何把这样的算法复制到脚本中就会出错。
场景比例并不是2:3比例。所以在if控制器中算法必须要考虑长远。我们将代码中的数组范围扩大我们就可以看出得出的比例就会千奇百怪。
下面博主分享一下正确的算法。
在jmeter中的写法
jmeter结果显示。看,挺精确的吧。