Jmeter(十四) - 从入门到精通 - JMeter定时器 - 下篇(详解教程)_jmeter连接定时任务-程序员宅基地

技术标签: python  压力测试  jenkins  单元测试  自动化  jmeter  开发语言  

1.简介

  用户实际操作时,并非是连续点击,而是存在很多停顿的情况,例如:用户需要时间阅读文字内容、填表、或者查找正确的链接等。为了模拟用户实际情况,在性能测试中我们需要考虑思考时间。若不认真考虑思考时间很可能会导致测试结果的失真。例如,估计的可支撑用户数偏小。在性能测试中,访问请求之间的停顿时间被称之为思考时间,那么如何模拟这种停顿呢?我们可以借助JMeter的定时器实现。

  JMeter中的定时器一般被我们用来设置延迟与同步。定时器的执行优先级高于Sampler(取样器),在同一作用域(例如控制器下)下有多个定时器存在时,每一个定时器都会执行,如果想让某一定时器仅对某一Sampler有效,则可以把定时器加在此Sampler节点下。

2.预览定时器

首先我们来看一下JMeter的定时器,路径:线程组(用户)->添加->定时器(Timer);我们可以清楚地看到JMeter5中共有9个定时器,如下图所示:

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386     

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a

 

如果上图您看得不是很清楚的话,

 

 

 通过以上的了解,我们对定时器有了一个大致的了解和认识。下面宏哥就给小伙伴或则童鞋们分享讲解一些通常在工作中会用到的定时器。 

3.常用定时器详解

这一小节,宏哥就由上而下地详细地讲解一下常用的定时器。

3.1Gaussian Random Timer

高斯定时器,高斯定时器,生成一个呈高斯分布的时间间隔。
如需要每个线程的延迟时间是符合标准正态分布的随机时间停顿,那么使用这个定时器,总延迟 = 高斯分布值(平均0.0和标准偏差1.0)* 指定的偏差值+固定延迟偏移(计算参考:Math.abs((this.random.nextGaussian() * 偏差值) + 固定延迟偏移))。
另一种解释方法,在高斯随机定时器中, 随机时间在固定延迟偏移附近,概率符合高斯曲线分布。

总延迟时间 = 高斯分布值(平均0.0和标准差1.0)* 指定的偏差值 + 固定延迟偏移

1、我们先来看看这个Gaussian Random Timer长得是啥样子,路径:线程组 > 添加 > 定时器 > 高斯随机定时器,如下图所示: 

总结了一个思维导图,关于JMeter5的逻辑控制器类型,如下图所示: 

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Deviation:忽略子控制器,即子控制器失效,由交替控制器接管。

Constant Delay Offset:

3.1.1实例

1、新建测试计划,线程组下添加2个取样器 访问博客园首页、访问北京宏哥的园子,如下图所示:

2、然后再添加高斯随机定时器,设置高斯随机定时器的偏差为1000ms,固定延迟偏移为3000,如下图所示:

 

3、配置好以后,点击“保存”,运行JMeter,查看表格结果(取样器访问博客园首页和访问度娘间隔3s),如下图所示:

3.2JSR223 Timer

JSR定时器,在jemter最新的版本中,新增了这个定时器,可以这么理解,这个定时器相当于BeanShell定时器的“父集”,它可以使用java、JavaScript、beanshell等多种语言去实现你希望完成的事情。

1、我们先来看看这个JSR223 Timer长得是啥样子,路径:线程组 > 添加 > 定时器 > JSR233定时器,如下图所示: 

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Thread Delay:忽略子控制器,即子控制器失效,由交替控制器接管。

3.2.1实例

1、新建测试计划,线程组下添加2个取样器 访问博客园首页、访问度娘,如下图所示:

2、然后再添加JSR223 定时器,编写脚本设置延迟时间5s,如下图所示:

 

3、配置好以后,点击“保存”,运行JMeter,查看表格结果(取样器访问博客园首页和访问度娘间隔5s),如下图所示:

 

3.3Poisson Random Timer

泊松随机定时器,这个定时器在每个线程请求之前按随机的时间停顿,总的延迟就是泊松分布值和偏移值之和。这个定时器在每个线程请求之前按随机的时间停顿,总的延迟就是泊松分布值和偏移值之和。

泊松分布:概率学中离散机率分布

1、我们先来看看这个Poisson Random Timer长得是啥样子,路径:线程组 > 添加 > 定时器 > 泊松随机定时器,如下图所示: 

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Lambda(in milliseconds):兰布达值;

Constant Delay Offset(in milliseconds):暂停的毫秒数减去随机延迟的毫秒数。

3.3.1实例

1、新建测试计划,线程组下添加2个取样器 访问博客园首页、访问度娘,如下图所示:

2、然后再添加泊松定时器,设置暂停时间会分布在100到400毫秒之间,如下图所示:

 

3、配置好以后,点击“保存”,运行JMeter,查看表格结果(取样器访问博客园首页和访问度娘间隔在100到400毫秒之间),如下图所示:

 

3.4Synchronizing Timer

同步计时器,用来模拟多用户并发,或者说更严格的并发场景,比如秒杀活动,就要用这个玩意了。

作用:也是用来设置集合点,阻塞线程,同步虚拟用户,直到指定的线程数量到达后,恰好在同一时刻执行任务,再一起释放,可以瞬间产生很大的压力。

注意:敲黑板,敲脑袋!!!

一般情况,并发用户数多少,同步定时器就写多少。(多少并发就要等多少个人到齐一起释放)

1、我们先来看看这个Synchronizing Timer长得是啥样子,路径:线程组 > 添加 > 定时器 > 同步定时器,如下图所示: 

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Number of Simulated Users to Group by:集合点个数 (执行的线程数),如果设置为0,等于设置为线程租中的线程数量。

Timeout in milliseconds:指定线程数多少秒没集合到算超时(以毫秒为单位)。如果设置为0,该定时器将会等待线程数达到了"Number of Simultaneous Users toGroup"中设置的值才释放,不够的话就死等。如果大于0,那么如果超过Timeout inmilliseconds中设置的最大等待时间后还没达到"Number of Simultaneous Users toGroup"中设置的值,Timer将不再等待,释放已到达的线程。默认为0

注意:敲黑板,敲脑袋!!!

(1)上面两个参数如果都设置了值,则在实际中是哪个条件先达到,定时器先执行哪个,如第一个参数释放线程数量先达到,则不会管超时时间的值,timer会释放;如果第二个参数超时时间先达到,则不会再等线程数量,按照目前超时的时间点集合的线程数,timer释放。

(2)同步定时器(Synchronizing Timer)的超时时间设置要求: 超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)

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

线程数(100) 定时器等待线程数(视情况而定) 超时设置(默认为0,单位毫秒) 设置效果(脚本运行达到的效果)
100 100 0 用户等待达到100个用户,同时并发请求
100 90 100

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

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

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

100 110 0 用户无法达到110个用户,线程将一直等待,不会停止;
100 100 100

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

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

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

100 0 0 定时器设置的用户数等效于线程的用户数,超时默认设置为0,用户同时并发请求
3.4.1实例

a. 若某个请求需要并发测试,则可在该请求下添加同步定时器。

1、新建测试计划,线程组(设置线程组10个,加载时间1s)下添加2个取样器 访问博客园首页(已禁用)、访问度娘,如下图所示:

 2、然后再添加同步定时器,设置模拟用户组数量:10,超时时间:5000,如下图所示:

3、配置好以后,点击“保存”,运行JMeter,查看表格结果(几乎是在同一时间,10个用户同时并发访问度娘),如下图所示:

b. 若某几个请求需要同时进行并发,则可在请求的同一级添加同步定时器。

1、新建测试计划,线程组下添加2个取样器  访问博客园首页、访问度娘,如下图所示:

 

2、然后再添加同步定时器,设置模拟用户组数量:10,超时时间:5000,如下图所示:

3、配置好以后,点击“保存”,运行JMeter,查看表格结果(取样器访问博客园首页和访问度娘间隔3s),如下图所示:

 

c. 若某几个线程需要同步并发,则可在测试计划下(线程组同一级)添加同步定时器(适用于多业务混合并发测试)。

1、新建测试计划,添加同步定时器,设置模拟用户组数量:10,超时时间:5000,如下图所示:

2、然后再添加两个线程组,一个线程组下添加2个取样器  访问博客园首页、访问度娘,另一个线程组下添加1个取样器 访问度娘1,如下图所示:

 

3、配置好以后,点击“保存”,运行JMeter,查看表格结果,如下图所示: 

 

3.5BeanShell Timer(重要-常用)

Bean Shell定时器,顾名思义是:互相交替,其节点下的取样器交替执行。根据被控制器触发执行次数,去依次执行控制器下的子节点<逻辑控制器、采样器>。被触发执行可以由线程组的线程数、循环次数、逻辑控制器触发。

1、我们先来看看这个 Bean Shell定时器长得是啥样子,路径:线程组 > 添加 > 定时器 > Bean Shell定时器,如下图所示: 

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

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

Parameters:BeanShell脚本的入参。入参可以是单个变量;也可以是数组,若是字符串数组,两个元素之间用空格隔开;也可以是常量。

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

Script:在Script区直接写BeanShell脚本。

3.5.1实例

1、新建测试计划,线程组下添加2个取样器 访问博客园首页、访问度娘,如下图所示:

2、然后再添加Bean Shell定时器,脚本代码设置延迟时间5s,如下图所示:

3、配置好以后,点击“保存”,运行JMeter,查看结果树(取样器访问博客园首页和访问度娘间隔5s),如下图所示:

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Faith_Lzt/article/details/132277964

智能推荐

稀疏编码的数学基础与理论分析-程序员宅基地

文章浏览阅读290次,点赞8次,收藏10次。1.背景介绍稀疏编码是一种用于处理稀疏数据的编码技术,其主要应用于信息传输、存储和处理等领域。稀疏数据是指数据中大部分元素为零或近似于零的数据,例如文本、图像、音频、视频等。稀疏编码的核心思想是将稀疏数据表示为非零元素和它们对应的位置信息,从而减少存储空间和计算复杂度。稀疏编码的研究起源于1990年代,随着大数据时代的到来,稀疏编码技术的应用范围和影响力不断扩大。目前,稀疏编码已经成为计算...

EasyGBS国标流媒体服务器GB28181国标方案安装使用文档-程序员宅基地

文章浏览阅读217次。EasyGBS - GB28181 国标方案安装使用文档下载安装包下载,正式使用需商业授权, 功能一致在线演示在线API架构图EasySIPCMSSIP 中心信令服务, 单节点, 自带一个 Redis Server, 随 EasySIPCMS 自启动, 不需要手动运行EasySIPSMSSIP 流媒体服务, 根..._easygbs-windows-2.6.0-23042316使用文档

【Web】记录巅峰极客2023 BabyURL题目复现——Jackson原生链_原生jackson 反序列化链子-程序员宅基地

文章浏览阅读1.2k次,点赞27次,收藏7次。2023巅峰极客 BabyURL之前AliyunCTF Bypassit I这题考查了这样一条链子:其实就是Jackson的原生反序列化利用今天复现的这题也是大同小异,一起来整一下。_原生jackson 反序列化链子

一文搞懂SpringCloud,详解干货,做好笔记_spring cloud-程序员宅基地

文章浏览阅读734次,点赞9次,收藏7次。微服务架构简单的说就是将单体应用进一步拆分,拆分成更小的服务,每个服务都是一个可以独立运行的项目。这么多小服务,如何管理他们?(服务治理 注册中心[服务注册 发现 剔除])这么多小服务,他们之间如何通讯?这么多小服务,客户端怎么访问他们?(网关)这么多小服务,一旦出现问题了,应该如何自处理?(容错)这么多小服务,一旦出现问题了,应该如何排错?(链路追踪)对于上面的问题,是任何一个微服务设计者都不能绕过去的,因此大部分的微服务产品都针对每一个问题提供了相应的组件来解决它们。_spring cloud

Js实现图片点击切换与轮播-程序员宅基地

文章浏览阅读5.9k次,点赞6次,收藏20次。Js实现图片点击切换与轮播图片点击切换<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <script type="text/ja..._点击图片进行轮播图切换

tensorflow-gpu版本安装教程(过程详细)_tensorflow gpu版本安装-程序员宅基地

文章浏览阅读10w+次,点赞245次,收藏1.5k次。在开始安装前,如果你的电脑装过tensorflow,请先把他们卸载干净,包括依赖的包(tensorflow-estimator、tensorboard、tensorflow、keras-applications、keras-preprocessing),不然后续安装了tensorflow-gpu可能会出现找不到cuda的问题。cuda、cudnn。..._tensorflow gpu版本安装

随便推点

物联网时代 权限滥用漏洞的攻击及防御-程序员宅基地

文章浏览阅读243次。0x00 简介权限滥用漏洞一般归类于逻辑问题,是指服务端功能开放过多或权限限制不严格,导致攻击者可以通过直接或间接调用的方式达到攻击效果。随着物联网时代的到来,这种漏洞已经屡见不鲜,各种漏洞组合利用也是千奇百怪、五花八门,这里总结漏洞是为了更好地应对和预防,如有不妥之处还请业内人士多多指教。0x01 背景2014年4月,在比特币飞涨的时代某网站曾经..._使用物联网漏洞的使用者

Visual Odometry and Depth Calculation--Epipolar Geometry--Direct Method--PnP_normalized plane coordinates-程序员宅基地

文章浏览阅读786次。A. Epipolar geometry and triangulationThe epipolar geometry mainly adopts the feature point method, such as SIFT, SURF and ORB, etc. to obtain the feature points corresponding to two frames of images. As shown in Figure 1, let the first image be ​ and th_normalized plane coordinates

开放信息抽取(OIE)系统(三)-- 第二代开放信息抽取系统(人工规则, rule-based, 先抽取关系)_语义角色增强的关系抽取-程序员宅基地

文章浏览阅读708次,点赞2次,收藏3次。开放信息抽取(OIE)系统(三)-- 第二代开放信息抽取系统(人工规则, rule-based, 先关系再实体)一.第二代开放信息抽取系统背景​ 第一代开放信息抽取系统(Open Information Extraction, OIE, learning-based, 自学习, 先抽取实体)通常抽取大量冗余信息,为了消除这些冗余信息,诞生了第二代开放信息抽取系统。二.第二代开放信息抽取系统历史第二代开放信息抽取系统着眼于解决第一代系统的三大问题: 大量非信息性提取(即省略关键信息的提取)、_语义角色增强的关系抽取

10个顶尖响应式HTML5网页_html欢迎页面-程序员宅基地

文章浏览阅读1.1w次,点赞6次,收藏51次。快速完成网页设计,10个顶尖响应式HTML5网页模板助你一臂之力为了寻找一个优质的网页模板,网页设计师和开发者往往可能会花上大半天的时间。不过幸运的是,现在的网页设计师和开发人员已经开始共享HTML5,Bootstrap和CSS3中的免费网页模板资源。鉴于网站模板的灵活性和强大的功能,现在广大设计师和开发者对html5网站的实际需求日益增长。为了造福大众,Mockplus的小伙伴整理了2018年最..._html欢迎页面

计算机二级 考试科目,2018全国计算机等级考试调整,一、二级都增加了考试科目...-程序员宅基地

文章浏览阅读282次。原标题:2018全国计算机等级考试调整,一、二级都增加了考试科目全国计算机等级考试将于9月15-17日举行。在备考的最后冲刺阶段,小编为大家整理了今年新公布的全国计算机等级考试调整方案,希望对备考的小伙伴有所帮助,快随小编往下看吧!从2018年3月开始,全国计算机等级考试实施2018版考试大纲,并按新体系开考各个考试级别。具体调整内容如下:一、考试级别及科目1.一级新增“网络安全素质教育”科目(代..._计算机二级增报科目什么意思

conan简单使用_apt install conan-程序员宅基地

文章浏览阅读240次。conan简单使用。_apt install conan