> 文章列表 > 全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)

前言

逻辑控制器

提前说明,逻辑控制器≠混合场景
混合场景是不同数量的并发用户发起不同接口的请求,关于混合场景前面文章已分析写过。

循环

jmeter中有有两个用于循环的逻辑控制器,分别是“循环控制器”和“foreach控制器”。
如果学过Python,可以这么理解,循环控制器就是for i in range(10), 指定循环次数;

而foreach控制器则是for i in [对象],循环的次数是不定的,完全由对象的可迭代次数来决定。

循环控制器

循环控制器非常简单,指定次数或者勾选永远,让他循环指定的次数或者永远循环下去即可。

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

Foreach控制器

首先在用户参数中添加5个变量,变量名分别是var_1、var_2…var_5

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

然后添加foreach控制器

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

变量前缀为var;
开始循环字段,由于是不包含第一个的,所以要输入0;
结束循环字段输入5,因为是包含的;
输出变量名称为f, 即脚本中如果要使用这些变量,使用${f}即可;
由于变量名和数字之间有“_”,所以要勾上“数字之前加上下划线”;

然后创建一个调试取样器,把名称改为${f},然后允许查看结果,就会循环5次。

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

条件控制器

默认情况下,条件框中必须要使用__jexl3或者__groovy函数的计算结果,要为true或false

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

如果不勾选lnterpret Condition as Variable Expression?,那就会将里面的内容作为表达式进行运算,而且这里是作为js的表达式进行运算,因此也可以进行and、or等逻辑语的运算。

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

事务控制器

在jmeter中,默认一个取样器就是一个事务。而事务控制器就是控制其子集取样器(n),合并为一个事务。

然后,这里又涉及到一个概念,Tps是服务器每秒处理的事务数。如果使用事务控制器合并了多个取样器之后,那么Tps就是计算多个事务总的时间。

添加逻辑控制器->事务控制器。要注意,如果想要将多个取样器合并为1个事务,那必须要勾选Generate parent sample

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

如果再把lnclude duration of timer and pre-post processors in generated sample勾选了,那如果取样器有前置处理和后置处理的时间都会记录到聚合报告。

最后,这里有个问题,在性能测试中,是否要勾选Generate parent sample?

首先要明确一点,性能测试是先做单接口的性能测试,然后再做多借口的性能测试。因此只有在做多接口合并的时候才需要勾选。

也因此,事务控制器的使用场景是在需要验证某一个流程(例如下单流程、登录流程)的性能指标。

另外补充一点,一个流程的性能指标并不是把这个流程每个接口的指标相加!

一套完整的性能流程应该是先用单个取样器,做出某个接口的性能测试指标,然后再做出多个接口的性能指标,然后再使用事务控制器并勾选Generate parent sample,做出业务的性能指标,把所有业务都做出来之后,再合并做出整个系统的性能指标。

临界控制器

这是个比较特殊的控制器,它默认有一个固定锁名称,会把性能测试中的并行执行强制转换为串行,他会要求每个并发用户按照取样器的顺序走。
但既然是默认,那就还是可以改变,只要让锁名称动态生成即可。推荐使用线程号。

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

仅一次控制器

这个控制器的意思并不是只运行一次,而是一个线程只执行一次。只有一个并发用户数时,这个其实看不出什么感觉,但是如果是多用户的时候就能看到效果了
5个线程,循环10次。仅一次控制器每个线程只会运行1次。

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

Switch控制器

可以直接跳转到指定的脚本去运行,如下图,设置跳转到q2取样器,那就只会运行q2,q1和q3不会运行了

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

另外,如果直接在Switch控制器中填入数字,这个是按下标去找到对应的取样器,而下标是从0开始了。

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

随机控制器&随机顺序控制器

随机控制器是把挂载下的所有取样器中随机执行一个。
随机顺序控制器则是把挂载下的所有取样器的随机排序后再执行。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

二、接口自动化项目实战

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

三、Web自动化项目实战

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

四、App自动化项目实战

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

五、一线大厂简历

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

六、测试开发DevOps体系

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

七、常用自动化测试工具

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

八、JMeter性能测试

全网最详细,Jmeter性能测试-性能基础详解,控制器不同选择(四)

九、总结(尾部小惊喜)

只要心怀信念,勇敢追梦,任何困难都能战胜;只要不断努力,坚持不懈,成功就会向你招手。愿你在奋斗中成长,收获人生的美好与幸福。

勇敢地去追求你想要的生活,即使路途坎坷,也要坚定不移,因为只有拼搏奋斗,才能实现自己的梦想,才能过上真正属于自己的美好人生。

只要心怀梦想,脚踏实地向前,无论跌倒多少次,也要坚定不移地站起来,相信自己,保持专注,永不放弃,成功就在前方等待着你!