性能工具之 JMeter 常用组件介绍(五)

news2024/11/25 14:51:21

文章目录

  • 一、Jmeter中参数取值
    • 1、Test Plan中添加变量
    • 2、User Defined Variables
  • 二、Jmeter中CSV Data Set Config
  • 三、Timer:定时器
    • 4、Gaussian Random Timer 高斯随机定时器
    • 5、JSR223 Timer JSR223定时器
    • 6、Poisson Random Timer 泊松随机定时器
    • 7、Synchronizing Timer 同步定时器
    • 8、BeanShell Timer BeanShell脚本编写定时器
    • 9、Precise Throughput Timer 精准吞吐量定时器

一、Jmeter中参数取值

1、Test Plan中添加变量

Test Plan中设置好变量名,变量名可以在任意的位置引用,比如说在线程组中直接用${变量名}方式引用变量,步骤如下:
在这里插入图片描述
1、添加线程组
在这里插入图片描述

2、添加请求
在这里插入图片描述
3、添加结果查看树
在这里插入图片描述

2、User Defined Variables

在这里插入图片描述
注意:User Defined Variables定义的变量和Test Plan中定义的变量一样,不管这个组件在任何位置,在整个test plan中都可以引用这些变量。

1、添加线程组
在这里插入图片描述
2、添加请求User Defined Variables
在这里插入图片描述
3、添加请求
在这里插入图片描述
4、添加结果查看树
在这里插入图片描述
在这里插入图片描述

二、Jmeter中CSV Data Set Config

在做性能测试或者接口测试中,文件参数化最常用的工具摸过如此,咱们这次聊一聊这个工具怎么使用

在这里插入图片描述

  • 作用:从文件中逐行读取数据,按指定的分隔符分割,赋给指定的变量。适合处理大量数据的情况

  • 参数说明:

    • Filename:文件路径。可以是相对路径也可以是绝对路径。可以是.txt文件也可以是.csv文件
    • File encoding:文件编码,默认问ANSI,其它编码根据实际情况配置
    • Variables Names(comma-delimited):变量名,表示将每一列赋值给一个变量,有多个列时同逗号分隔,后续通过${}引用
    • Ignore first line:忽略首行
    • Delimiter(use "\t" for tab):分隔符,默认为逗号
    • Allow quoted data?:数据是否带引号,默认为false,如果数据中有引号(双引号)的话就会把数据连同引号一起赋值给变量,也就是原封不动的取值;如果为true的话就会把引号去掉,将引号中的值赋给标量。
    • Recycle on EOF?:遇到文件结束符是否再次循环,默认为True,也就是继续从文件开头取值
    • Stop thread on EOF?:遇到文件结束符是否结束线程,默认为False也就是不停止。注意:当【Recycle on EOF?】设置为True时,此项设置无效;当【Recycle on EOF?】设置为False,此项也设置为False,那么到达文件最后在引用变量就会变为
    • Sharing mode:共享模式。默认为all threads,还支持current thread group / current thread /edit

共享模式总结:

  • all treatds:csv文件中的数据是共享的,不管是线程数还是循环次数,都会触发接口请求参数来使用csv文件中不同行的变量数据
  • current thread group:在线程组内,线程数和循环次数都会触发接口请求参数变化
  • current thread:循环了数据就会变化,线程数不能决定更新csv文件中的数据,循环次数才可以;

以下简单的演示:
1、添加线程组
在这里插入图片描述
2、添加请求CSV Data Set Config
在这里插入图片描述
附件内容:
在这里插入图片描述
3、添加http request请求
在这里插入图片描述
4、添加结果查看树
在这里插入图片描述

三、Timer:定时器

  • Constant Timer 固定定时器
  • Uniform Random Timer 均匀随机定时器
  • Constant Throughput Timer 固定吞吐量定时器
  • Gaussian Random Timer 高斯随机定时器
  • JSR223 Timer JSR223定时器
  • Poisson Random Timer 泊松随机定时器
  • Synchronizing Timer 同步定时器
  • BeanShell Timer BeanShell脚本编写定时器
  • Precise Throughput Timer 精准吞吐量定时器

1、Constant Timer 固定定时器
在这里插入图片描述
作用:通过ThreadDelay设定每个线程请求之前的等待时间(单位为毫秒)。

2、Uniform Random Timer 均匀随机定时器
在这里插入图片描述
作用:它产生的延迟时间是个随机值,而各随机值出现的概率均等。总的延迟时间等于一个随机延迟时间加上一个固定延迟时间,用户可以设置随机延迟时间和固定延迟时间。

总延迟时间 = 指定范围内的随机时间 + 固定延迟时间 总延迟时间=指定范围内的随机时间+固定延迟时间 总延迟时间=指定范围内的随机时间+固定延迟时间

3、Constant Throughput Timer 固定吞吐量定时器
在这里插入图片描述

作用: 按指定的吞吐量执行,以每分钟为单位。计算吞吐量依据是最后一次线程的执行时延。

Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,可以选择作用的线程:当前线程、当前线程组、所有线程组等,具体含义如下:

  • this thread only: 设置每个线程的吞吐量。 总的吞吐量 = 线程数 ∗ 该值 总的吞吐量=线程数*该值 总的吞吐量=线程数该值
  • all active threads in current thread group:吞吐量被分摊到当前线程组所有的活动线程上。每个线程将根据上次运行时间延迟。
  • all active threads:吞吐量被分配到所有线程组的所有活动线程的总吞吐量。每个线程将根据上次运行时间延迟。在这种情况下,每个线程组需要一个具有相同设置的固定吞吐量定时器。(不常用)
  • all active threads in current thread group (shared):同上,但是每个线程是根据组中的线程的上一次运行时间来延迟。相当于线程组组内排队。(不常用)
  • all active threads (shared):同上,但每个线程是根据线程的上次运行时间来延迟。相当于让所有线程组整体排队。(不常用)

4、Gaussian Random Timer 高斯随机定时器

在这里插入图片描述

作用:每个线程的延迟时间是符合标准正态分布的随机时间停顿,那么使用这个定时器:

总延迟 = 高斯分布值(平均 0.0 和标准偏差 1.0 ) ∗ 指定的偏差值 + 固定延迟偏移 ( M a t h . a b s ( ( t h i s . r a n d o m . n e x t G a u s s i a n ( ) ∗ 偏差值 ) + 固定延迟偏移 ) ) 总延迟 = 高斯分布值(平均0.0和标准偏差1.0)* 指定的偏差值+固定延迟偏移(Math.abs((this.random.nextGaussian() * 偏差值) + 固定延迟偏移)) 总延迟=高斯分布值(平均0.0和标准偏差1.0指定的偏差值+固定延迟偏移(Math.abs((this.random.nextGaussian()偏差值)+固定延迟偏移))

5、JSR223 Timer JSR223定时器

在这里插入图片描述

JSR223计时器可以使用JSR223脚本语言生成延迟;

参考帮助文档:
https://jmeter.apache.org/usermanual/component_reference.html#JSR223_Timer

6、Poisson Random Timer 泊松随机定时器

在这里插入图片描述
这个定时器在每个线程请求之前按随机的时间停顿,总的延迟就是泊松分布值和偏移值之和。
上面表示暂停时间会分布在100到400毫秒之间:

  • (1)Lambda(in milliseconds):兰布达值
  • (2)Constant Delay Offset(in milliseconds):暂停的毫秒数减去随机延迟的毫秒数

7、Synchronizing Timer 同步定时器

在这里插入图片描述
作用:用来设置集合点,其作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力

  • (1)Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数数量,若设置为0,等于设置为线程组中的线程数量;
  • (2)Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数;如果设置为0,该定时器将会等待线程数达到了设置的线程数才释放,若没有达到设置的线程数会一直死等。如果大于0,那么如果超过Timeout inmilliseconds中设置的最大等待时间后还没达到设置的线程数,Timer将不再等待,释放已到达的线程。默认为0
    同步定时器(Synchronizing Timer)的超时时间设置要求:
    超时时间 > 请求集合数量 ∗ 1000 / ( 线程数 / 线程加载时间 ) 超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间) 超时时间>请求集合数量1000/(线程数/线程加载时间)

8、BeanShell Timer BeanShell脚本编写定时器

在这里插入图片描述
参数说明:

  • Reset Interpreter :每次迭代是否重置解析器,默认为false;在长时间运行的脚本中建议设置为true
  • Parameters:BeanShell脚本的入参。入参可以是单个变量;也可以是数组,若是字符串数组,两个元素之间用空格隔开;也可以是常量。
  • File Name:BeanShell脚本可以从脚本文件中读取。
  • Script:在Script区直接写BeanShell脚本。

简单写一demo增加一个sleep等待一分钟:
在这里插入图片描述

 try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

增加一个Java Request请求,并且增加时间验证是否按照自己设定的定时运行脚本:
Java Request ${__time(yyyy-MM-dd HH:mm:ss:SSS,)}
在这里插入图片描述

增加结果查看树:
在这里插入图片描述
结果显示按之前设置的每个1秒钟运行

9、Precise Throughput Timer 精准吞吐量定时器

在这里插入图片描述

  • Target Throught:目标吞吐量
  • Throught Period:表示在多长时间内发送Target Throught指定的请求数(以秒为单位)
  • Test Druation:指定测试运行时间(以秒为单位)
  • Number of threads in the bath:用来设置集合点,等到指定个数的请求后并发执行其它参数默认即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1845936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件处理的基本操作

一、文件与流 为什么要使用文件:程序的处理结果在程序结束后就消失,要想将程序运行的结果保存下来,就可以将相关内容保存在文件(file)中。 针对文件、键盘、显示器、打印机等外部设备的数据的读写操作都是通过流&…

阿里AI图片编辑新项目,人人都可做设计师。MimicBrush本地一键整合包下载

最近阿里巴巴联合香港大学开源了一个创新图像编辑工具:MimicBrush,这个工具相当于是一个局部重绘工具。它通过先进的AI技术,能够将一张图片的某一部分融合到另一张图片上。 MimicBrush,一款颠覆传统的图像编辑神器,不过…

在idea里使用github copilot ,就是这么好用

Github Copilot 代码补全等功能,提高写代码的效率 获取地址:https://web.52shizhan.cn/activity/copilot 如果之前是激活器激活的,请到环境变量里删除相关的copilot配置。 ① 发你注册的github账号的邮箱或用户名给客服,客服邀…

openppp2 控制台回显窗口输出内容详解

本文介绍 openppp2 的控制窗口回显内容,以LINUX平台为例子,其它平台大同小异,区别只是多了一些额外的输出选项内容,本文会在下面补充。 在本文开始之前请查阅关联内容:openppp2 命令行接口详解-CSDN博客 控制台客户端…

SpringEvent扩展性利器

使用Spring Event机制可以保证高扩展性: 使用Spring Event来发布应用内部领域事件,对于事件监听器可通过注解或类的方式来扩展,Spring Event内部使用观察者模式,但api使用层面可以完全解耦事件发布和事件监听: 常用方式…

建筑驱鸟设备 | 建筑专用超声波驱鸟器

从半夜的鸣叫到频繁的鸟粪污染,鸟类活动有时会成为城市居民不得不面对的小小困扰。通过合理的驱鸟方法,我们可以有效地减少鸟类对建筑物的侵扰,保护建筑物的完好和安全,同时维护城市居民的生活质量。 建筑专用超声波驱鸟器&#x…

spl序表字段批量修改

如果没有条件,全量修改,使用run 如果没有条件,是可以直接使用run函数,对指定一个列的所有都操作,但是没有任何条件 如果使用了筛选条件,使用了select函数,会返回一个被筛选并且修改的序表(有条件…

ai assistant激活成功后,如何使用

ai assistant激活成功后,如图 ai assistant渠道:https://web.52shizhan.cn/activity/ai-assistant 在去年五月份的 Google I/O 2023 上,Google 为 Android Studio 推出了 Studio Bot 功能,使用了谷歌编码基础模型 Codey,Codey 是…

【贪心算法初级训练】在花坛上是否能种下n朵花、碰撞后剩余的行星

1、在花坛上是否能种下n多花 一个很长的花坛,一部分地已经种植了花,另一部分却没有,花不能种植在相邻的地块上否则它们会争夺水源,两者都会死去。给你一个整数数组表示花坛,由若干个0和1组成,0表示没种植花…

ThreadLocal的使用

ThreadLocal 一般不会单独使用,基本上都是 放在一个工具类中,然后在拦截器中去使用(至少存储 Token 的时候是这样的) 这里为了更加还原真实的线上环境,直接就用了 拦截器统一返回全局异常捕获ThreadLocal,…

生信算法8 - HGVS转换与氨基酸字母表

HGVS 概念 HGVS 人类基因组变异协会(Human Genome Variation Society)提出的转录本编号,cDNA 参考序列(以前缀“c.”表示)、氨基酸参考序列(以前缀“p.”表示)。cDNA 中一种碱基被另一种碱基取代,以“>”进行表示,如:c.2186A&…

软件测试之解构单元测试

软件单元测试是对软件中的最小可测试单元进行检查和验证的过程。这些单元可以是函数、方法、类实例,或者是任何具有明确功能、规格定义和接口定义的程序代码模块。单元测试是软件开发过程中的最低级别的测试活动,它确保软件的独立单元在与程序的其他部分…

Jar打包成Service在Window运行

直接启动 bat脚本直接启动jar包 Spring Boot 部署在Windows Service启动 环境 电脑环境需要安装Microsoft.NETFramework 4 Microsoft.NETFramework 4 打包 WinSW 下载exe和xml配置文件,将exe和xml放在同一个目录下,并且重命名为一样的名字&…

Ideogram-免费使用的 AI 工具,可以生成逼真的图像、海报、徽标

工具来源:Ideogram | AI工具箱 什么是Ideogram AI? Ideogram AI是一款高效的工具,旨在将文本与AI生成的图像结合在一起。该应用程序提供了用户友好的界面,使您能够轻松地制作出色的艺术作品、标志和设计。 与传统工具不同,Ideogram AI因其能够以无与伦比的简便和速度将…

Git 查看当前分支是基于哪个分支拉取(源头分支)

场景: 项目中使用 Git 管理代码仓库的时候,随着项目的持续迭代及项目的扩展,多版本并行开发是非常常见的事情,多版本并行开发就伴随着多分支,随着 Git 的分支越拉越多,这时候很容易造成分支的混乱&#xf…

webgis 之 地图投影

地图投影 什么是地图投影目的种类等角投影的分类墨卡托投影Web 墨卡托投影 参考小结 为了更好地展示地球上的数据,需要将地球投影到一个平面上。地图投影是一个数学问题,按照一定的几何关系,将地球上的经纬度坐标映射到一个平面上的坐标。地球…

由 Vault 支持的 KES 的 MinIO Operator

为了提供安全锁定和擦除的合规性功能,MinIO 使用服务器端加密 (SSE) 在存储层加密对象,以保护对象作为写入操作的一部分。MinIO 以极高的效率做到这一点——基准测试表明 MinIO 能够以接近线速进行加密/解密。 MinIO 使用的秘诀是…

【头歌】HBase扫描与过滤答案 解除复制粘贴限制

解除复制粘贴限制 当作者遇到这个限制的时候火气起来了三分,然后去网上搜索答案,然后发现了一位【碳烤小肥肠】居然不贴代码,XX链接,贴截图,瞬时火气冲顶,怒写此文 首先启动万能的控制台,然后C…

帕金森综合征的预防方法

帕金森综合征是一种慢性神经退行性疾病,目前尚无法彻底治愈。然而,通过采取一些预防措施,可以降低患病风险或延缓病情发展。以下是一些基于最新研究和医学建议的预防方法: 健康饮食:保持低盐、低脂饮食,多吃…

SQL新手蜕变:掌握这20条常用SQL语句,让你也能成为高手!

序言 在现代软件开发中,SQL(Structured Query Language,结构化查询语言)作为与数据库交互的标准编程语言,是每个开发者必学的基础技能。掌握SQL并在数据库管理与数据分析中应用自如,能显著提升开发效率和数…