逻辑控制器
提前说明,逻辑控制器≠混合场景
混合场景是不同数量的并发用户发起不同接口的请求,关于混合场景前面文章已分析写过。
循环
jmeter中有有两个用于循环的逻辑控制器,分别是“循环控制器”和“foreach控制器”。
如果学过Python,可以这么理解,循环控制器就是for i in range(10), 指定循环次数;
而foreach控制器则是for i in [对象],循环的次数是不定的,完全由对象的可迭代次数来决定。
循环控制器
循环控制器非常简单,指定次数或者勾选永远,让他循环指定的次数或者永远循环下去即可。
Foreach控制器
首先在用户参数中添加5个变量,变量名分别是var_1、var_2…var_5
然后添加foreach控制器
变量前缀为var;
开始循环字段,由于是不包含第一个的,所以要输入0;
结束循环字段输入5,因为是包含的;
输出变量名称为f, 即脚本中如果要使用这些变量,使用${f}即可;
由于变量名和数字之间有“_”,所以要勾上“数字之前加上下划线”;
然后创建一个调试取样器,把名称改为${f},然后允许查看结果,就会循环5次。
条件控制器
默认情况下,条件框中必须要使用__jexl3或者__groovy函数的计算结果,要为true或false
如果不勾选lnterpret Condition as Variable Expression?,那就会将里面的内容作为表达式进行运算,而且这里是作为js的表达式进行运算,因此也可以进行and、or等逻辑语的运算。
事务控制器
在jmeter中,默认一个取样器就是一个事务。而事务控制器就是控制其子集取样器(n),合并为一个事务。
然后,这里又涉及到一个概念,Tps是服务器每秒处理的事务数。如果使用事务控制器合并了多个取样器之后,那么Tps就是计算多个事务总的时间。
添加逻辑控制器->事务控制器。要注意,如果想要将多个取样器合并为1个事务,那必须要勾选Generate parent sample
如果再把lnclude duration of timer and pre-post processors in generated sample勾选了,那如果取样器有前置处理和后置处理的时间都会记录到聚合报告。
最后,这里有个问题,在性能测试中,是否要勾选Generate parent sample?
首先要明确一点,性能测试是先做单接口的性能测试,然后再做多借口的性能测试。因此只有在做多接口合并的时候才需要勾选。
也因此,事务控制器的使用场景是在需要验证某一个流程(例如下单流程、登录流程)的性能指标。
另外补充一点,一个流程的性能指标并不是把这个流程每个接口的指标相加!
一套完整的性能流程应该是先用单个取样器,做出某个接口的性能测试指标,然后再做出多个接口的性能指标,然后再使用事务控制器并勾选Generate parent sample,做出业务的性能指标,把所有业务都做出来之后,再合并做出整个系统的性能指标。
临界控制器
这是个比较特殊的控制器,它默认有一个固定锁名称,会把性能测试中的并行执行强制转换为串行,他会要求每个并发用户按照取样器的顺序走。
但既然是默认,那就还是可以改变,只要让锁名称动态生成即可。推荐使用线程号。
仅一次控制器
这个控制器的意思并不是只运行一次,而是一个线程只执行一次。只有一个并发用户数时,这个其实看不出什么感觉,但是如果是多用户的时候就能看到效果了
5个线程,循环10次。仅一次控制器每个线程只会运行1次。
Switch控制器
可以直接跳转到指定的脚本去运行,如下图,设置跳转到q2取样器,那就只会运行q2,q1和q3不会运行了
另外,如果直接在Switch控制器中填入数字,这个是按下标去找到对应的取样器,而下标是从0开始了。
随机控制器&随机顺序控制器
随机控制器是把挂载下的所有取样器中随机执行一个。
随机顺序控制器则是把挂载下的所有取样器的随机排序后再执行。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
只要心怀信念,勇敢追梦,任何困难都能战胜;只要不断努力,坚持不懈,成功就会向你招手。愿你在奋斗中成长,收获人生的美好与幸福。
勇敢地去追求你想要的生活,即使路途坎坷,也要坚定不移,因为只有拼搏奋斗,才能实现自己的梦想,才能过上真正属于自己的美好人生。
只要心怀梦想,脚踏实地向前,无论跌倒多少次,也要坚定不移地站起来,相信自己,保持专注,永不放弃,成功就在前方等待着你!