JMeter定时器之固定定时器(Constant Timer)
一、背景
在一般情况下,JMeter线程在发送请求之间是没有间歇时间的,为了更加真实地模拟用户请求情况,会将定时器用于在用户操作之间,为每个操作设置等待时间。
需要注意的是定时器是在每个取样器之前执行,无论定时器位置放在取样器之前还是之后,执行一个取样器时,所有当前作用范围内的定时器都会被率先执行。
如果需要定时器只对其中一个取样器生效,则需要将定时器作为取样器的子节点加入。
二、固定定时器
如果希望每个线程在两次请求之间暂停相同的时间,可以使用此定时器。当放置固定定时器,于两个HTTP请求之间时,它代表的含义是在上一个请求发出至完成后,开始固定定时器指定的时间,最后再发出第二个请求,它并不是代表两个请求之间的发送间隔时间。
比如在登录之前,需要注册账号,当注册账号信息还没存储到数据库时,就发起了登录操作,那就会报错。此时,就需要在登录之前先等待一下。这与自动化脚本中的强制等待sleep类似。比如,这里设置延迟3000毫秒,也就是3秒钟。
首先,看看在没有设置固定定时器时,两个请求之前的间隔时间。如图所示,可以看出请求之前的间隔时间非常的短,这样很可能会出现上诉中的所述问题,注册接口提交的数据还没有保存在数据库,而登录请求已经发出。
接着,设置一下固定定时器,设置时间为3000毫秒,也就是3秒。
执行测试后,再看看两个请求之前的间隔时间,如图所示,可以看出请求之前的间隔时间3秒。
注意:固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。