一、Jmeter定时器的概念:
1)定时器是在每个sampler(采样器)之前执行的,而不是之后;
是的,你没有看错,不管这个定时器的位置放在sampler之后,还是之下,它都在sampler之前得到执行。
2)定时器是有作用域的;当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;
3)如果希望定时器仅应用于其中一个sampler,则把该定时器作为子节点加入;
4)如果希望在sampler执行完之后再等待,则可使用Test Action;
二、Jmeter中定时器的应用
1.正常的性能测试,在每个请求中获取到重要的性能指标值以后,在每个请求中需要设置等待时间,这样比较接近服务器真实环境的请求。
2.这两种设置等待时间的方式比较常用:
(1)Gaussian Random Timer 服从高斯分布,等待时间比较符合
(2)Poisson Random Timer 服务帕松分布
3.首先User Defined Variables定义所需要的参数,如下:
使用方法:在对应的需要使用参数的位置,使用${ip}, ${port}替代。
应用场景:当测试环境变化时,我们只需要修改一处的ip,port就可以让脚本马上应用于另外一个环境的测试,而不需要逐个脚本进行修改。
上面设置的参数,在如下接口中的应用如下:
4.配置各个接口的等待时间参数,设置全部请求的等待时间,配置等待时间常用方式有以下几种:
(1)固定定时器(Constant Timer)
当放置Constant Timer于两个http请求之间,那么它代表的含义是:在上一个请求发出至完成后,开始Contant Timer指定的时间,最后再发出第二个请求.它并不是代表两个请求之间的发送间隔时间.这是最重要的定时器。
注意:固定定时器的延时不会计入单个java sampler的响应时间,但会计入事务控制器的时间。
(2)高斯随机定时器(Gaussian Random Timer)
定时器的延时时间是在指定范围内的正态分布。如需要每个线程在请求前按随机时间停顿,那么使用这个定时器,下图表示暂停时间会分布在100到400之间
(3)泊松随机定时器(Poisson Random Timer)
这个定时器在每个线程请求之前按随机的时间停顿,大部分的时间间隔出现在一个特定的值,总的延迟就是泊松分布值和偏移值之和。
下面表示暂停时间会分布在100到400毫秒之间:
1)Lambda(in milliseconds):兰布达值
2)Constant Delay Offset(in milliseconds):暂停的毫秒数减去随机延迟的毫秒数