性能测试做过的同学都会遇到一些特殊的场景压测需求,此时就会用到 jmeter 的特殊的组件,如定时器,逻辑控制器,或是用新的方法,下面介绍工作中用到的 3 个用到频率很高的性能需求。

更好的阅读体验,也可以在如下网页学习,大家可以关注<大话性能>,会持续不断分享工作中的测试技能干货。

http://dwz.cn/rRlXWenL

01 稳定 TPS 测试

测试需求:待测系统满足一定 TPS 要求。
如何利用 JMeter 模拟稳定的 TPS 压力呢?

具体方法为:

右键取样器,选择 “定时器”->“Constant Throughput Timer”,如下图

其中,“Target throughput” 是设置的固定 TPS 值,单位是:个/分钟,若是你的被测系统的 tps 处理能力远高于固定的 tps 值,该组件可以动态的控制住发送请求的速度,来达到控制 tps 的目的。

02 瞬间并发测试

测试需求: 秒杀场景,瞬间并发。

通常来说,JMeter 的线程数即为并发的压力数,实际上 JMeter 在运行时,每个线程是独立的,虽然有 100 个线程,但这些线程并不是同时向服务器发送请求,JMeter 要模拟 100 个用户在同一时间点向服务器发送请求,才是真正的并发压力。

具体方法为:

右键取样器,选择 “定时器”->“Synchronizing Timer”,如下图:

Synchronizing Timer 中设置的压力数小于等于线程组中的并发数;

03 控制吞吐量比例

以前最偷懒的方法是建立多个线程组,然后利用不同线程组的线程数目比例来控制吞吐量比例,但是该方法有个问题,真实的发送的请求数目取决于请求的处理速度,而不是配置的线程数,所以控制的比例不会很准确。

后来发现一个利用 if 控制器并结合公倍数原则方法来控制吞吐量比例。

例,假设总共 30 并发的请求,持续 10min,有 1/3 请求的访问了 a 路径,另外的 2/3 的请求访问了 b 路径;而访问 a 路径后有 1/5 进行了访问 c 路径,4/5 进行了访问 d 路径。

此时就需要使用 If 控制器,利用公倍数的原则,上面的 if 表达式分别为:

a: ${counter(false,)}%15 <=5 && ${counter(false,)}%15 >0

b: ${counter(false,)}%15 >5 || ${counter(false,)}%15 ==0

c: ${__counter(false,)}%15==1

d: ${counter(false,)}%15>1 && ${counter(false,)}%15<=5

这样结合 jmeter 自带的 counter 函数就可以比较准确的控制请求数目来达到控制吞吐量的比例,比通过添加多个不同线程组利用线程数比例去控制来的准确。

福利赠送

** http mirror server 快速调试 **

有时候我们需要查看发送的请求内容是否正确,我们利用利用在工作台中添加一个 httpmirror server 的组件,快速的验证,该组件会自动回复你发送的内容,十分方便调试,提升工作效率。


大家可持续关注大话性能公众号,不断学习测试实战技能和高薪岗位内推。


↙↙↙阅读原文可查看相关链接,并与作者交流