常用定时器
1、固定定时器
设置一个固定的延迟时间,单位ms
2、synchronizing Timer(同步定时器/检查点)
在该定时器处,使线程等待,一直到指定的线程个数达到后,再一起释放。可以在瞬间制造出很大的压力。它和loadrunner的集合点差不多的功能。
集合点是为了增加瞬间并发压力的一种机制,在脚本中增加一个标记,所有虚拟用户执行到标记 处会进行等待,等所有用户都到达后,再同时继续执行下一步操作。
优点:对服务器来说,会产生一种瞬间高并发;
缺点:对服务器来说,平均压力会降低。
什么时候需要加集合点呢? 根据业务来选择,如果业务场景是瞬间高并发类型的,如抢购、秒杀等,需要加集合点; 其他的场景都不需要加,一般加了集合点后,就不使用tps来衡量系统性能(因为瞬间高并发都是在一两秒内完成,jmeter压力可能都还没有完全上来,这总情况下应该更多地关注系统的错误率)。 集合点功能要慎重选择,因为加了集合点后,系统的平均压力会降低。
3、Constant Throughput Timer (常量控制器)
可以控制每分钟tps的总量,限制最高tps。适用于线上压测,避免把系统压挂。
常用逻辑控制器
将目标请求添加到逻辑控制器下。
1、循环控制器
可以设置该控制器内的sampler执行的次数,循环次数与线程的循环次数各自独立。接口总的执行次数=控制器循环次数*线程组循环次数。
2、if控制器
根据判断条件决定是否执行该控制器内的请求,如果是字符串比较条件,参数和字符串 都需要加引号。
条件格式: ${__jexl3(条件表达式)}
如:${__jexl3(${num} > 10)}、 ${__jexl3(“${num}” == “10”)}
3、仅一次控制器
无论线程循环多少次,该控制器内的请求只执行一次,执行次数=并发用户数。
适用场景:用户登录
4、foreach控制器
可以遍历某个参数数组,循环获取数组中的参数,一般搭配调试取样器一起使用。