JMeter测试中如何精准控制期望TPS?一个计时器就够!
引入
在性能测试中,我们常常需要了解系统在真实性能需求下的表现。为了验证系统的性能表现,我们需要控制TPS以达到我们预估的值。因此,在开发JMeter脚本时,掌握如何控制期望TPS是必不可少的技能。下面,我们就来介绍JMeter的Transaction Controller
来达到这个目的。
计时器:Transaction Controller
这个计时器会根据需要引入不同的暂停时间,以尽可能地接近设定的TPM(每分钟交易数)。但是,如果服务器无法处理(即交易的响应时间变长)或者其他计时器或耗时的测试元素阻塞了它,吞吐量就会降低。需要注意的是,该计时器是按照TPM计算的,因此如果您使用的是TPS,需要将其乘以60秒转换为TPM。
该计时器如何设置呢?需要根据实际情况选择合适的方法。例如,在进行接口性能测试
- 每个接口的预期TPS不同,那么“基于单个线程计算(this thread only)”或“基于该线程组的所有线程计算(all active threads in the current thread group)”的“计算吞吐量”选项可供选择,在这种情况下,更推荐使用 基于该线程组的所有线程(all active threads in the current thread group)计算,因为如果基于单个线程计算,需要根据线程数目做调整,无谓增加了脚本的复杂度。
- 如果您不在乎每个接口的预期TPS,并且正在测试混合场景,则“基于所有活动线程计算(all active threads)”的“计算吞吐量”选项可供选择。
计时器的放置位置要适当。还是以接口性能测试为例,
- 如果每个接口的预期TPS不同,那么将该计时器放在线程组下层或者采样器下层会更合适。
- 如果每个接口的预期TPS相同,可以考虑将该计时器放在线程组外层。