jmeter逻辑控制器总结

一、简单控制器:

一般是功能较多,需要分组时用的,比如一个文件夹或者好友列表。

二、随机控制器:

一个控制器下面有多个http请求,会随机执行其中的一个。

 三、随机顺序控制器:

一个控制器下面有多个http请求,每个都会执行,但是每次执行的顺序不一样。

 四、循环控制器:

控制请求执行多少次,循环次数填多少,就执行多少次。勾选永远,就一直执行。

五、仅一次控制器(重点):

比如一个线程组,循环次数设置为10次,可以把类似登录的请求(一般登录只会执行一次)放在仅一次控制器中,这样就只会执行一次登录,其他请求执行10次。

六、事务控制器:

1、控制取样器的顺序

2、保证事务的回滚,如果成功了就继续。

七、Switch控制器:

控制器下有多个请求,Switch Value值不填写,默认执行第一个请求(登录百度)。

Switch Value值填写:“登录博客园”,那么执行的就是登录博客园这个请求。

Switch Value值填写0,执行的就是“登录百度”这个请求。填写1执行的是登录博客园的请求,填写2执行的是登录微博的请求。

Switch Value值填写的值(比如填:“登录”),找不到请求,察看结果数中就没有执行结果。

八、Foreach控制器:

个人理解:比如需要调用4个用户请求,用这个定时器,只需要定义4个变量,添加1个请求可以批量调用了。不用添加4个请求。

一般搭配用户定义变量使用。可以依次调用定义的变量值,从第一个到最后一个,结束循环。

变量命名的格式:变量名_数字,一般数字从1开始,数字必须连续。

1、添加【用户定义的变量】

2、例如添加4个变量,下划线后面的1,2,3,4必须是连续的,不连续的话,不会被循环到

3、添加【ForEach控制器】

输入变量前缀:填写刚刚添加的变量,下划线前内容

开始循环字段(不包含):值填0,表示从1开始(Vuser_1)。

结束循环字段:值填4,表示循环到第4个(Vuser_4).

输入变量名称:随便填写,没有限制。

4、控制器下的http请求页面,路径填写/+$+{输出变量名称},如下图

5、查看结果树中,可以看到执行了4个请求,每个请求后面又刚刚添加的变量值,如下图

注:在名称后面加上${输出变量名称的值},如下图,可以更好的区分每个请求具体值

九、如果(IF)控制器(重点):

通过判断表达式True/Flase来判断是否执行相应操作。

表达式为True,就执行后续相应的操作。

举例:登录请求成功后,添加购物车之前,需要用if控制器来判断一下,是否登录成功了。

确认登录成功后,才可以添加购物车。

1、添加登录请求

2、【BeanShell后置处理程序】中添加:

vars.put("login","true"); log.info("${login}");

3、添加【如果(if)控制器】,填写:${__groovy("${login}"=="true",)}

满足login=true这个条件,所以继续添加购物车这个请求。

如果不满足这个条件,就不会执行添加购物车的请求。

注:【BeanShell预处理】这个和【BeanShell后置处理程序】的区别:

【BeanShell预处理】这个是放在添加购物车之前执行的。

【BeanShell后置处理程序】这个是放在登录之后执行的。

语法可以借助函数对话框来写,如下图:

注:如果没有if控制器,怎么知道登录是否等于true:

可以添加一个调试取样器(重点),如下图:

十、Runtime控制器:多少秒之内执行多少个请求。

举例:控制器下面增加一个登录请求。Runtime(seconds)字段,值填写1,就是1秒内循环执行登录请求。

如何查看1秒内执行了多少个请求:

添加一个聚合报告,查看样本数量值。如下图,1秒执行了74个请求。

十一:While控制器:

Condition (function or variable )字段值为空或者为LAST:

1、下面3个请求都能执行成功。

执行结果:会循环执行下面3个请求,不会自动停。

2、下面第3个请求执行失败(比如域名不对)。

执行结果:执行到第3个请求报错后,自动跳出循环。

3、下面第2个请求执行失败。

执行结果:还是会循环执行3个请求,不会自动停。

区别:

例如While控制器上面,还有一个登录请求,这个请求执行会报错。

Condition (function or variable )字段值为空,while控制器下面的3个请求还是会循环执行。

Condition (function or variable )字段值为LAST,不会继续走while控制器下面的请求。

知识点1:参数化:

1、新增【CSV数据文件设置】下图变量名称字段,最好和数据源中变量名一样。

2、添加登录请求

第一种写法:${userName}/${passWord}

执行结果,如下图。因为样本数据中,有3条数据。

根据线程组的【循环次数】字段来顺序执行。

比如值为1,执行成功的就只有第一条数据。值为3,执行成功的3个请求,是按顺序的3条数据的。

 第二种写法:{"userName"}:"${userName}",{"passWord"}":${passWord}"

 

 
posted @ 2023-02-02 10:30  御宸云汐  阅读(210)  评论(0编辑  收藏  举报