性能测试工具 五、Jmeter 基础 - 逻辑控制器、断言、定时器

Maple · 2020年01月13日 · 1194 次阅读

逻辑控制器

主要介绍: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)作用相似
其作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力
模拟用户组的数量:即指定同时释放的线程数数量
超时时间以毫秒为单位:超时时间,即超时多少毫秒后还是未达到设置的用户数,则同时释放当前的线程数
说明:我们在做压力测试,想模拟一瞬间的压力,多用到这个定时器

总结

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

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册