目录
运行时间控制器RunTime Controller(接口独立运行)
仅一次控制器Once Only Controller
放入其中的请求每个线程只会迭代一次,如果作为Loop Controller的子节点,Once Only Controller在每次循环的第一次迭代时均会被执行
如图登录请求置于其下目录:
事务控制器Transaction Controller
事务控制器会生产一个额外的采样器,用来统计该控制器子结点的所有时间。
Generate parent sample:(选中这个参数结果展示如下图红框,否则显示为下图蓝框)
Include duration of timer and pre-post processors in generated sample:选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间
吞吐量控制器(业务比例)
通过控制每个线程对线程组下的多个请求的执行频率,来控制业务比例,以达到样本数比例的效果。
当业务比例为50%/50%等均分比例时,多请求为串行处理模式(其实是因为线程按上下顺序执行请求),这种比例其实和不设置控制器没区别;业务比例不为均分比例时,多请求为并行处理模式。
指定循环次数时,样本总数(线程数x循环次数)需要足够大才有控制比例的效果。
*在没有添加任何逻辑控制器情况下,样本总数=线程数x循环次数x取样器数
场景1.设置1线程持续5分钟,业务比例80%/20%;可以看到这个线程每5次迭代包含4个文字保存请求和1个图片上传请求,符合80%/20%比例,最后样本数也差不多8:2的比例:
场景2.设置10线程持续5分钟,业务比例80%/20%;可以看到10个线程对两个请求是并行处理的,每个线程同样是上面场景1的执行模式:
场景3.设置10线程循环1次,业务比例50%/50%;可以看到两个请求是串行处理的,所以只用到5个线程(感觉是设计bug=_=):
场景4.设置10线程循环1次以上或者持续5分钟,业务比例50%/50%;可以看到第一次迭代两个请求依旧是串行处理的,但是同时用到了10个线程,两次迭代后每个线程遵守场景1的运行模式:
运行时间控制器RunTime Controller(接口独立运行)
该模块会强制线程运行指定的时间,时间结束后才会释放线程,然后运行下一个接口;
应用示例:
如果一个线程组下有多个接口,由于木桶效应,所有接口的吞吐量是几乎一致的,这样不利于考察单个接口的吞吐量指标;而且这时线程是对所有接口进行并发测试,而不是单个接口的并发测试,无法体现单个接口的性能:
而采用运行时间控制器后,可以看到两个接口的吞吐量是不一样的:
再看看设置,把线程组循环次数设为1,运行时间控制器设置10秒,这样就做到了每个接口以100个线程独立运行10秒的效果了: