性能测试中,事务指的是从端到端,一个完整的操作过程,比如一次登录、一次 筛选条件查询,一次支付等;技术上讲:事务就是由1个或多个请求组成的
事务控制器类似简单控制器,把单个或者多个请求做成一个整体业务,它包含了2个选项,更能突出事务的概念。
Generate parent sample
如果事务控制器下有多个采样器(请求),勾选后,在察看结果树中不仅可以看到事务控制器,还可以看到每个采样器,并且事务控制器定义的事务是否成功取决于子事务是否都成功,任何一个失败代表整个事务失败
Include duration of timer and per-post processors in generated sample
是否包含定时器、预处理和后期处理延迟的时间,选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间
举例:如下图
它是最基本的控制器,对jmeter测试运行没有任何影响,可以将一些请求归 集在一个简单控制器中,视为一个模块,使得脚本结构更清晰
路径:逻辑控制器——简单控制器;
可把简单控制器当成一个文件夹看待;如下图
循环次数:设置该控制器下的请求的循环执行次数
永远:勾选上的话,会一直循环,即所谓死循环
注意:如果线程组本身已经设置了循环次数的话,那循环控制元件控制的子节点 的循环次数为线程组设置的循环次数乘以循环控制器设置的循环次数的结果(例如: 线程组设置循环数为2,循环控制器设置循环数为3,则循环控制器控制的节点循环 次数为2*3,6次)
该控制器包含的取样器步骤在每次循环中交替执行
交替控制器指每次运行一次时在交替控制器下的采样器只执行一个;如下图:
忽略子控制模块:如果勾选此项,交替控制器将子控制器像单一请求元素一样,一次 只允许一个请求/控制器(但如果交替控制器下有事务控制器时,则不会执行事务控制器下的请求)
Interleave across threads:勾选此项后,多线程运行脚本时,交替控制器依然生效, 例如线程1执行了HTTP请求,那么线程2将直接执行简单控制器1
在进行压测时,往往类似登录等接口只需要一次,其他的接口需要循环测试。 这里就会用到控制器中的仅一次控制器。只要放置在控制器的请求,不管在哪种 情况下,都只执行一次
注意:循环一次是只针对线程组所设置的循环,如果将 “仅一次循环控制器” 添加在“循环控制器”下作为子节点,则无法实现仅一次循环
当该控制器下有多个子项时,每次循环会随机执行其中一个
Ignore sub-controller block(忽略子控制器模块)
如果勾选了此项,随机控制器下的子控制器中的多个子项只会被执行一个
当该控制器下有多个子项时,它会执行它下面的每个子项,只不过执行顺序 是随机的。
HTTP Cookie管理器可以像浏览器一样自动存储和发送cookie,以这种自 动收集的方式收集到的cookie不会在cookie manager中进行展示,但是运行后, 可以通过 查看结果树(监听器)可以查看到cookie信息
除了上述的自动收集方式,还可以进行手动添加cookie
每次反复清除Cookies?:选择后,则每次线程组运行时,都会清除 cookie。 (若是手动添加的cookie,则不会被清除)
Use Thread Group configuration to control cookie clearing:
使用线程组的设置来控制清除cookie,建议与线程组设置中的不勾选Same user on each iteration 一起使用来模拟每次迭代登录使用不同session登录的情况。
Cookie Policy:Cookie的管理策略
standard:符合RFC 6265第4节定义的规范。推荐!
standard-strict:符合RFC 6265第4节定义的行为规范。推荐!
ignoreCookies:所有cookie被忽略。与删除或禁用Cookie Manager相同。
netscape:与Netscape Communications发布的原始规范草案相对应。
default:基于随HTTP响应发送的cookie属性,选择RFC 2965,RFC 2109或Netscape草案兼容实施。
rfc2109:符合RFC 2109定义的规范。
rfc2965:符合RFC 2965定义的规范。
compatibility:兼容性,模拟Mozilla FireFox和Internet Explorer等旧版浏览器的行为
存储在Cookie管理器中的Cookie:
名称:响应体cookie中的参数名称
值:响应体cookie中的参数值(可能需要正则表达式来关联取得)
域:填写IP或域名
路径:响应体cookie中的Path,表示该路径下的所有请求都可以用