事务控制器
事务,其实可以理解为完成一个业务所调用所有接口的集合,当然可以是单个接口,也可以是多个相互关联的串联接口。
所以在进行性能测试时,在用于多接口串联的场景时,需要汇总统计该多个接口串联执行完成时所有的响应时间,也就是一个事务或者场景的响应时间。
事务控制器(Transaction Controller),可以将多接口串联的场景自动的分类显示,更易于分类识别整个场景的响应时间。
添加事务控制器
- Generate parent sample:选中,事务控制器将作为其他取样器的父级取样器进行展示(聚合报告会将事务控制器及其下的取样器执行情况均统计,最终仅以事务控制器作为结果统计出来);不选,事务控制器仅作为独立的取样器进行展示(所有的取样器(接口、事务控制器)均统计出来)
- Include duration of timer and pre-post processors in generated sample:是否在生成的取样器中统计包括计时器、预处理以及后置处理的延迟时间。默认是不勾选
样例
事务控制器下有两条接口请求,一个固定计时器
不勾选Generate Parent Sample
聚合报告会将所有的取样器(接口、事务控制器)均统计出来。
执行结果
勾选Generate Parent Sample
聚合报告会将事务控制器及其下的取样器执行情况均汇总统计,最终仅以事务控制器作为结果进行汇总统计。
执行结果
勾选 Include duration of timer and pre-post processors in generated sample
聚合报告会统计会统计固定定时器的时间。
执行结果
仅一次控制器
在每个线程内,该控制器下的内容只会被执行一遍,无论循环多少次,都只执行一遍
实际多用于需要登录的测试,可以将登录请求放置在此控制器中,因为每个线程只需要登录一次即可建立会话
添加仅一次控制器
样例
线程组-单线程多循环
执行结果
仅一次控制器下的接口只执行了一次(1个线程数),其他接口执行了2次(线程数1*循环次数2)
线程组-多线程多循环
执行结果
仅一次控制器下的接口只执行了2次(2个线程数),其他接口执行了4次(线程数2*循环次数2)
仅一次控制器实际上对于它下面的请求并非只限制发送一次请求,而是针对线程组中设置的线程数量,每个线程发送一次请求
配合循环控制器
例一
执行结果
仅一次控制器下的接口只执行了1次(循环控制器执行1次=线程数1*循环次数1),其他接口执行了2次(线程数1*循环次数1*循环控制器循环次数2)
例二
执行结果
仅一次控制器下接口只执行了2次(循环控制器执行2次=线程数1*循环次数2),其他接口执行了4次(线程数1*循环次数2*循环控制器次数2)
例三
执行结果
仅一次控制器下接口只执行了4次(循环控制器执行了4次=线程数2*循环次数2),其他接口执行了8次(线程数2*循环次数2*循环控制器循环次数2)
吞吐量控制器
自行调整该控制器下的子项的执行频率(只控制子项的执行频率/次数)
添加吞吐量控制器
- percent execution:按照百分比来执行,0-100,代表执行次数的百分比,比如填50,代表一半迭代中执行
- total executions:按照次数来执行,代表执行的总次数
- Per User:若勾选,每个线程会单独计算执行频率;若不勾选(默认),所有线程统一计算执行频率
样例
Total Executions
执行结果
吞吐量控制器下的接口只执行了2次
Percent Executions
执行结果
吞吐量控制器下的接口只执行了1次=1个线程*循环10次*10%吞吐量
per user
- 勾选per user
执行结果
吞吐量控制器下的接口执行了4次,每个线程执行了2次,控制器对每个线程单独生效
- 不勾选per user
执行结果
吞吐量控制器下的接口只执行了2次,吞吐量控制器所有线程共享