jmeter之逻辑控制器
-
优先级
-
在取样器之前被执行
-
逻辑控制器起作用,它的下面,一定要挂载启用的取样器
-
-
作用域
-
作用于它的子集取样器
-
if条件控制器
英文含义:
为了提升性能,建议将“将条件解释为变量表达式”勾选
并使用jexl3或者groovy函数,来评估表达式条件的真假
/*
条件为真时,才会执行控制器下面的取样器
Interpret condition as valiable expression
默认情况下勾选,为true
表示: 条件表达式的**执行结果**必须为真
合的两个函数:使用${\_\_jexl3(,)} ${\_\_groovy(,)}两个函数的计算结果为真
若去除勾选:(去除勾选后,需要计算表达式的结果是否为真,耗cpu)
条件表达式的结果为真;
直接写布尔表达式结果即可,如:1==1
Evaluate for all children?:条件作用于每个子项进行评估。
默认不勾选;
表示:该控制器可以对在其下面的所有可运行的组件,进行控制执行,但只在入口执行一次。
若勾选该选项:
则该控制器在每一个子节点执行时前,执行一次
例:若if控制器下有三个请求,分别别淘宝、京东、百度,若淘宝请求成功才会执行京东,若京东执行成功才会执行百度
*/
__jexl3
两者使用是一样的
JEXL expression to evaluate
:填写要计算的表达式
/*
==是否等于,如${__jexl3(${VAR}==1,)},判断${VAR}变量是否等于1。
!=不等于,如${__jexl3(${VAR}!=1,)},判断${VAR}变量是否不等于1。
!非,如${__jexl3(!(${VAR}!=1),)},对${VAR}!=1的结果取反。
&&且和||或,如${__jexl3(${VAR}==1 && "${name}" != "张三",)}。
>大于或者>=大于等于,如${__jexl3(${count}>=10,)}。
*/
-
条件为真,才会执行控制器下面的取样器
-
默认情况下勾选true: 条件表达式的执行结果必须为真
-
结合的两个函数:使用${__jexl3(,)} ${__groovy(,)}
-
使用两个函数,函数计算结果为真
-
-
如果去掉 Interpret condition as valiable expression
-
条件表达式的结果为真
-
jmeter中如何实现循环时控制递增取值
使用循环控制器,控制循环次数
计数器控制步长
-
循环控制器结合计数器实现递增步长
-
因为循环控制器里面没办法控制步长,所以可结合计数器来进行控制
-
调试取样器中的xx_matgchNr是可以直接引用的
-
-
计数器
-
foreach控制器
明确知道有多少个值,每个变量名称前缀相同,后缀是连续加1,我们可以使用
-
应用场景
-
明确值 变量的起始、结束;是明确知道如: user_1 user_2 user_3
-
如提取获取医院列表的list接口,返回的hospital_id,使用json提取器,添加debug sample可以看到取到值为hospitallD_1,...hospitallD_n
-
-
后置处理、从数据库中获取的值
/* 输入变量前缀:输入需要遍历的这一组数据的前缀,例如:hospitallD_1、hospitallD_2,hospitallD就是前缀。 注意:用户自定义变量,或者是参数化文件中的数据都要这样命名才能遍历 开始循环字段(不包含):循环的起始位置,如填0,实际是从第一个开始。 默认为空也可以 结束循环字段(含): 循环结束的位置,如填4,实际第4个不会被使用,只会到第3个。 默认为空也可以,程序会循环执行到最后一个变量,再停止 */
-
仅一次控制器
每个线程用户(线程数),在运行过程中只会运行一次,如线程组中配置了10个线程数,无论运行多久,挂在仅一次控制器下的取样器,每个线程数只会执行一次,即:共10次
jmeter中默认,一个取样器执行一次,就是一个事务
应用场景:
常用于,业务、模块的性能测试
事务控制器
可以把多个取样器合并为一个事务,进行性能统计分析
-
Generate parent sample
-
默认未勾选
-
把多个接口合并为一个事务,需要勾选
-
勾选以后,
-
查看结果树状显示,事务控制器再最外层,事务控制器里面的样本请求再里面
-
聚合报告里面,就会仅展示一个事务控制器,里面的请求不会一一展示出来了,此时的指标结果为,该事务控制器下的所有请求相加的结果
-
-
-
-
Include duration of timer and pre-post processors in generated sample
-
是否在生成的样本中包括计时器,预处理和后处理延迟。默认值未勾选后。
-
不建议选择,因为选择会把定时器 + 前后置处理器的时间也计算进来
-
临界部分控制器
并发和并行的区别
并发:指的是任务数多于cpu核数,通过操作系统的各种任务调度算法,实现多个任务"一起执行"
(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)
并行:指的是任务数小于等于cpu核数,即任务真的是一起执行
-
作用
-
把多用户并行执行,强制变成串行
-
- 一个固定
-
随机控制器
随机取一个取样器执行
随机顺序控制器
打乱下面的取样器执行的顺序,但是所有的取样器都会执行
吞吐量控制器
性能测试中,最主要的一个性能指标值就是tps