五、Jmeter 基础-逻辑控制器、断言、定时器

逻辑控制器

主要介绍:IF控制器,事务控制器,循环控制器,简单控制器,ForEach控制器等,其他控制器会在进阶篇中一一介绍。
IF控制器

不勾选“interpret condition as variable expression”
直接输入我们需要判断的表达式即可,判断表达式为真时,执行if控制器下的请求,例如${username}=="admin",用户名是admin则执行控制器下的子节点

勾选“interpret condition as variable expression”
Expression中不能直接填写条件表达式,需要借助函数(__jexl3或__groovy)将表达式计算为true或false,如:${__jexl3(${username}=="admin",)},才能识别
我们在写需要逻辑判断,根据条件执行不同操作的脚本时,可以借助IF控制器。

事务控制器

Generate parent sample
勾选后,查看结果树呈现:所有的结果将在父结点中展示

不勾选,查看结果树呈现:所有结果和父节点并列展示

Include duration of timer and pre-post processors in generated sample
选中:会统计定时器(timer)的时间
不选中:只统计采样器(sample)的时间

循环控制器

控制“循环控制器”下子节点执行的次数,如果勾选永远,表示一直循环下去
说明:如果线程组设置循环次数,例如线程组循环设置2,循环控制器设置3,则循环控制器下的子节点总共执行2*3次

简单控制器

主要起分组功能,便于脚本的管理和维护,实质不具备任何逻辑控制和运行功能
Foreach控制器

输入变量前缀:变量的前缀,如要使用的变量为name_1,则需要填name
开始循环字段(不包含):从X-1号的变量开始,X为第几个变量;如填0,实际从第一个开始
结束循环字段(含):到X+1的变量结束,X为第几个变量;如填4,实际第4个不会被使用,只会到第3个
输出变量名称:将要用来使用的变量名
数字之前加上下划线"_"?:用户定义的变量有没有下划线分隔编号,最好还是勾上比较方便标识


断言

主要介绍:响应断言,JSON断言,BeanShell断言,其他断言就不做具体介绍,想要了解的可自行查阅资料(在工作Jmter用的比较多,以上三个已满足)

响应断言

Apply to(一般默认即可)
Main sample only:只能应用到主取样器
Sub-samples only:只能应用到子取样器
Main sample and sub-samples:可以同时应用到主取样器和子取样器
测试字段(介绍使用频率高的)
响应文本: 从服务器返回的响应,例如,响应体,包括所有的HTTP响应头。
响应代码:Http状态码,例如:200,404,500等
模式匹配规则
指示如何根据模式检查正在测试的文本
包括:文本包含,则断言成立,支持正则表达式模式
匹配:全部匹配,若整个文本与正则表达式模式匹配,则断言成立
相等:整个文本与模式字符串相同(区分大小写),则断言成立
字符串:文本包含模式字符串(区分大小写),则断言成立。
否复选框项:断言结果取反
或者复选框项:
勾选:添加多个测试模式,相当于OR,只要有一个成立,则断言成功
不勾选:添加多个测试模式,相当于AND,都成立,则断言成功,只要有一个失败,则断言失败

JSON断言

Assert JSON Path exists:json表达式(参考JSON提取器语法),对提取的值做断言
Additionally assert value:表达式提取值等于特定值
Match as regulat expression:表达式提取值符合正则表达式
Expected Value:预期值
Expect null:预期值空
Invert assertion(will fail iif above conditions met):上面的条件满足则断言失败


定时器

主要介绍:固定定时器,高斯定时器,同步定时器,这三个定时器用的比较多

固定定时器

如果你需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器
注意:固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。

高斯定时器

如需要每个线程在请求前按随机时间停顿,那么使用这个定时器,上图表示暂停时间会分布在100到300之间

同步定时器

这个定时器和loadrunner当中的集合点(rendezvous point)作用相似
其作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力
模拟用户组的数量:即指定同时释放的线程数数量
超时时间以毫秒为单位:超时时间,即超时多少毫秒后还是未达到设置的用户数,则同时释放当前的线程数
说明:我们在做压力测试,想模拟一瞬间的压力,多用到这个定时器


总结

本章节介绍了三大类元器件,每个分类下的元器件都是工作中比较常用的,如果想了解更多,大家可以自行查阅资料。
至此,我们把所有类型的元器件都介绍过了
还记得最初的简单脚本吗,认识了这么多元器件,下来我们可以写复杂的脚本了,下一节将实战,敬请期待!

posted @ 2020-01-13 09:09  测试充电宝  阅读(420)  评论(0编辑  收藏  举报