JMeter定时器Timer的使用说明

背景:JMeter常被定义成性能测试工具或是自动化测试工具,都没错,同时还可以作为接口测试及web功能测试,关键使用者根据业务需求选择使用其功能;性能测试方向:后起之秀JMeter与革命前辈Loadrunner的比较,JMeter测试工具的Timer可以根据实际场景设置思考时间,用于等待或是集合点同时并发操作;言归正传,我们来看看JMeter的Timer成员有哪些,及具体作用?

1、Constant Timer :等待时间(思考时间)


Name:恒定时间元件名称(可以理解是等待(思考)时间),

Comments:注释,随意;

Thread Delay(in milliseconds):线程等待时间,单位毫秒;

tips:用法(场景),更真实的模拟用户场景,需要设置等待时间,或是等待上一个请求的时间,才执行,给sampler之间的思考时间;

2、Synchronizing Timer 集合时间(集合点)


Name:Synchronizing Timer 同步定时器名称(集合点)

Comments:注释,可以让定时器变得有意思,一目了然;

Grouping:

  Number of Simulated Users to Group by: 同组用户数量,设置为0,等效于线程组中的线程数(Number of Threads(users));

  Timeout in milliseconds:超时时间,单位毫秒,默认为0;如果设置为0,定时器等待同组的用户数,如果设置大于0,将以等待的最大线程数运行;如果超时,等待的用户数没有到达,定时器将停止等待;如果超时了,设置并发的用户数大于线程数,那么脚本无法停止;

tips:线程组用户数100,添加同步定时器,

线程数(100):100

定时器等待线程数(视情况而定):100

超时设置(默认为0,单位毫秒):0

设置效果(脚本运行达到的效果)

用户等待达到100个用户,同时并发请求


线程数(100):100

定时器等待线程数(视情况而定):90

超时设置(默认为0,单位毫秒):100

设置效果(脚本运行达到的效果)

1、刚好超时100ms,且等到90个用户并发请求;

2、等到90个用户,未超时,继续等到结束,再并发,这时用户数将大于90;

3、等到小于90和用户,又超过了设置100ms,那么以等到的用户并发请求,可能小于90;


线程数(100):100

定时器等待线程数(视情况而定):110

超时设置(默认为0,单位毫秒):0

设置效果(脚本运行达到的效果):用户无法达到110个用户,线程将一直等待,不会停止;


线程数(100):100

定时器等待线程数(视情况而定):100

超时设置(默认为0,单位毫秒):100

设置效果(脚本运行达到的效果)

1、刚好超时100ms,等到100个用户并发请求;

2、超时100ms后,定时器以等到的最大用户数并发请求;

3、如果超时100ms,用户数没有到达100,将以等到的用户数并发请求,这是用户数可能小于100;


线程数(100):100

定时器等待线程数(视情况而定):0

超时设置(默认为0,单位毫秒):0

设置效果(脚本运行达到的效果):定时器设置的用户数等效于线程的用户数,超时默认设置为0,用户同时并发请求

插入讲一个重点定时器:BeanShell Timer


Name:名称,随意;

Comments:注释,随意;

Reset bsh.Interpreter before each call:

Reset Interpreter:是否每次迭代重置解析器,默认false,官方建议长时间运行的脚本中设置True;

Parameters to be passed to BeadShell(=> String Parameters and Stringp[] bsh.args):

Parameters:BeanShell的入参;入参可以是单个变量,也可以是数组;

Script File (overrides script):

File Name:BeanShell 脚本可以从脚本文件中读取;

Script (Variables:ctx vars props log prev):编写的脚本(。。。),如:

try{

Thread.sleep(${sleeptime});

log.error("${sleeptime}");

log.warn(ctx.getThreadNum().toString());

vars.put("company","www.baidu.com");

log.info(vars.get("company"));

log.warn(props.get("log_level.jmeter"));

props.put("log_level.jmeter","ERROR");

log.warn(props.get("log_level.jmeter"));

}catch(InterruptedException e){

e.printStackTrace();

}

tips:解释一下脚本中调用JMeter的运行属性:

Log,直接调用log类,如log.error()写日志,info,warn等等

Ctx,可以获取JmeterContent实例获取运行时信息;如获取线程号log.info(ctx.getThreadNum().toString());

Vars,访问变量获取对应的值,也可以设置变量;如vars.put("company","www.baidu.com"); comany可以直接被其他元件调用${company}

Props,直接访问及修改Jmeter的属性,如log.warn(props.get("log_level.jmeter"));改变日至级别props.put("log_level.jmeter","ERROR");

Prev,访问前面sampler的结果,

3、Gaussian Random Timer 高斯定时器


这三类定时器,个人理解差不得太多,都有一个固定延迟时间,然后再给一个延迟偏差;

例如:Gaussian Random Timer 高斯定时器;

Name:定时器的名称,随意


Comments:注释,随意;

Tread Delay Properties:单位都是毫秒,固定延迟300ms,偏差100ms,意思是时间延迟300-400ms之间;

Deviation (in milliseconds):偏差值,是一个浮动范围;

Constant Delay offset (in milliseconds):固定延迟时间

4、Uniform Random Timer 暂停一个随机时间;


5、Poisson Random Timer 泊松定时器


————————————————

版权声明:本文为CSDN博主「收集明天的囬忆」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u011466469/article/details/78322513

你可能感兴趣的:(JMeter定时器Timer的使用说明)