jmeter的基本使用

Jmeter基本使用

一、变量

1.用户定义变量

2.用户参数

二、函数

1.计数器${__counter(,)}

2.时间函数

3.加密函数${__digest(,,,,)}

4. 整数相加${__intSum(,,)}

5.属性函数,${__P(,)}、${__property(,,)}、${__setProperty(,,)}

6.V函数

三、获取响应数据

1.json提取器

2.正则提取器

四、DDT数据驱动测试

1.文件名称

2.设置介绍

3.须知内容:

五、逻辑控制器

1.循环控制器、foreach控制器

2.if 条件控制器

六、事务控制器

七、聚合报告\汇总报告

八、临界控制器Critical Section Controller

九、仅一次控制器Once Only Controller

十、DDT驱动数据驱动(二)

1.使用方法: jmeter + sqlite

2.使用步骤

3.操作截图

一、变量

1.用户定义变量

位置:测试计划-->配置元件-->用户定义的变量

适用范围:全局变量

作用域:作用于整个‘测试计划

使用情况: 在启动运行时,获取一次值,在运行过程中,不会动态获取值,在运行过程中,值一直都不变在启动运行时,获取一次值,在运行过程中,不会动态获取值,在运行过程中,值一直都不变

使用结果:

2.用户参数

位置:线程组-->前置处理器-->用户参数

适用范围:局部变量

作用域: 作用于当前线程组或当前的取样器

使用情况: 在启动运行时,获取一次值,在运行过程中,还会动态获取值。在启动运行时,获取一次值,在运行过程中,还会动态获取值。

用户参数,在取样器调用之前被使用。

使用结果:

2.1 每次迭代更新一次

勾选后,当前线程组下所有的接口,全部执行,才会更新;

二、函数

  • 双下划线开头
  • 函数名称,严格区分大小写
  • 重要的函数
${__counter(,)} 计数器
${__dateTimeConvert(,,,)}   时间格式转换
${__digest(,,,,)}  加密  简单加密  *****
${__intSum(,,)}  整数相加函数
${__P(,)}   获取属性函数  *****
${__property(,,)}  获取属性函数  *****
${__setProperty(,,)}   设置属性函数  *****
${__Random(,,)}   随机数
${__RandomString(,,)}   随机字符串
${__threadNum}  获取线程号函数   
${__time(,)}  获取当前时间戳函数  *****
${__timeShift(,,,,)}  数据格式化  
${__V(,)}   拼接函数    *****

1.计数器${__counter(,)}

创建计数器函数:

使用计数器函数:

在调式取样器的名称使用计数器函数,循环5次,名称的数字每次加1,起到一个计数器的作用。

注意:计数器函数每次递增只能加1,若想用递增加2或递增更多的时候,需要使用配置原件中的 “计数器”;

注意截图中的最大数值: 如果运行结果超过最大值时,又会从起始值开始循环;

每个用户独立计数器: 多线程时,每个用户都是从起始值开始计数

2.时间函数

2.1 ${__time(,)}函数

第一种情况:不写参数,就是单独获取当前时间的时间戳

第二种情况,带函数参数时,可以获取到对应格式的时间:

2.2 ${__dateTimeConvert(,,,)} 时间转换

使用与可以将时间戳转换成时间:

2.3 ${__timeShift(,,,,)} 时间偏移

3.加密函数${__digest(,,,,)}

注意:这个加密函数 只能做简单的加密;

4. 整数相加${__intSum(,,)}

这个函数只能做整数相加

5.属性函数,${__P(,)}、${__property(,,)}、${__setProperty(,,)}

动态属性,是在运行过程中产生的,关闭jmeter,就是自动释放了

属性是jmeter工具具有,jmeter中的线程组要使用属性,都可以使用。可以跨线程组了。

设置jmeter的动态属性,主要是为了跨线程组定义参数;

实际设置属性操作:

1.线程组1,先使用调试取样器,挂一个前置处理的的用户参数,定义一个局部变量:

2.将par设置成属性:

3.在线程组2读取属性proper_par:

读取属性有函数${__P(,)} 、${__property(,,)} 这2个函数意义相同没有区别。

线程组2可以使用调试取样器测试,就可以取到这个属性了:

6.V函数

举例说明:

1.取样器下定义了3个用户变量要当做入参的手机号:

2.此时就可以使用,V函数将var_和计数器函数拼接起来,当做手机号入参的value:

${__V(前缀_可变后缀)} = 得到是这个 “前缀_可变后缀” 变量名值

三、获取响应数据

1.json提取器

1.1添加json提取器的位置:在取样器上右键 > 后置处理器 > json提取器

注意:Match.No是获取第几个该字段的值,如果是0就是随机一个,如果要获取的所有该字段的值写-1,如果获取具体某一个只需写具体数值。

1.2举例说明:

{"msg": "成功调用","code": 0,"data": {"pmoney": 100.0,"createtime": 1708827844213,"sex": 1,"mobile": "18888889992","token": "tRUcARYUf+yYdsXjtAhuBTSMHlUaqTkMv0CA7HxezU\/hqZpq7g9fDZ\/n96CFBLtNxRU\/jxaEwo\/fQbjJJq9BrA==","lasttime": 1708827844213,"money": 0.0,"gqid": "4000001","identity": "1d65cb3e94ac22ae","id": 180714,"age": 20,"email": "158000000011@test.com","username": "test11"}
}

提取上方数据中的gqid字段:(两种写法)

  • $.根路径.二级路径 json提取式 ----绝对路径写法
  • $..末梢节点名称 -----相对路径写法, 推荐

1.3 json获取多个值

变量名、提取式 要用英文的;号分隔。

注意:Default Values要写上默认值。

2.正则提取器

2.添加正则提取器的位置:在取样器上右键 > 后置处理器 > 正则提取器

正则提取式: 左边界(正则式)右边界, 万能正则式: .*?

.*?的正则式除换行符之外,都可以匹配

举例说明:

{"msg": "成功调用","code": 0,"data": {"pmoney": 100.0,"createtime": 1708827844213,"sex": 1,"mobile": "18888889992","token": "tRUcARYUf+yYdsXjtAhuBTSMHlUaqTkMv0CA7HxezU\/hqZpq7g9fDZ\/n96CFBLtNxRU\/jxaEwo\/fQbjJJq9BrA==","lasttime": 1708827844213,"money": 0.0,"gqid": "4000001","identity": "1d65cb3e94ac22ae","id": 180714,"age": 20,"email": "158000000011@test.com","username": "test11"}
}

获取以上响应的token:

四、DDT数据驱动测试

位置:线程组-->配置元件-->CSV数据文件设置

1.文件名称

可以是txt、csv等文本文件,都可以,但是,我们推荐使用txt,能不用csv,就不用csv。

  • 获取速度 txt相对要快
  • 编码:txt文件,默认编码,utf8; csv文件,默认编码,不是utf8
  • 遇到jmeter读取csv文件内容,乱码问题:
    • 原因:csv的编码不是utf8,而csv数据文件设置中,选择了utf8,导致编码不一致。
    • 解决:把csv文件,用记事本打开,选择编码为utf8保存

2.设置介绍

变量名称: 可以写多个,多个之间用“,” 固定使用逗号;

是否允许带引号: 一对英文双引号;

遇到文件结束符再次循环:

  • rue: 运行次数超过总数量行数时,会从头开始取值
  • False:运行次数超过总数量行数时,还会继续运行,但是取不到值
  • 管理取值的情况

遇到文件结束符停止线程:管理运行状态;

分隔符:文档内的分隔符号,建议使用英文的逗号;

3.须知内容:

使用csv数据文件设置,默认配置的情况下,当多用并发时:

    • 第1thead,第一次取值,取第1行;
    • 第2thead,第一次取值,取第2行;
    • 第3thead,第一次取值,取第3行;

五、逻辑控制器

性能测试脚本中,会使用逻辑控制器,但是,使用了逻辑控制器,并不是混合场景。

1.循环控制器、foreach控制器

循环控制器:常用在 重复运行多次

foreach控制器:常用于,使用 带有 _ 下滑线变量引用


2.if 条件控制器

默认的情况下, 勾选了条件框中,要使用 __jexl3 or __groovy 函数的计算结果为true,false;

如果不勾选 Interpret condition as variable express 是把 条件框中的 表达式 当做js脚本,进行计算,计算的结果为真,则执行下面请求

六、事务控制器

  • 在jmeter中,默认一个取样器,就是一个事务;
  • 事务控制器,控制其子集取样器(n),合并为一个事务
    • 事务: TPS 服务器每秒处理的事务数
    • 在事务控制器下,挂载多个取样器,想要把多个取样器合并为1个事务,必须勾选“Generate parent sample”

七、聚合报告\汇总报告

在性能测试中,看聚合报告,有前提条件:

  • 1、没有网络瓶颈
    • 在很多时候,我们在看聚合报告时,会把 吞吐量的值 等价为 TPS的值,其实是不对的。
    • 怎么判断有没有网络瓶颈?
      • 1.聚合报告最后两列,是 吞吐率,每秒传输多少KB的数据。
      • 2.吞吐率 与我们的带宽是有关系, 吞吐率,是可以看出是否存在网络带宽问题?
      • 带宽:100Mb = 100 * 1024kb = 102400kb /8 = 12800KB (b 和 B 是8倍的关系)
      • 理论上百兆带宽,每秒不超12800KB传输的数据 就没有网络瓶颈。
  • 2、并发用户数不变
    • 负载测试时,并发用户数会随着时间变化,而变化,就不能看聚合报告。
    • 因为吞吐量是个平均值,用户变化时,在用平均值就不行了,得到的结果无法看到当时并发量的TPS。

聚合报告含义:

每一行数据:都是一种事务;

样本:在请求的过程中,所有的并发用户数,在一段时间中的总请求量

  • 单独看样本,是无法知道并发用户数、执行时长 ;
  • 例如样本 = 472 , 10个并发数, 10人 * 60秒 * 频率 = 472 频率= 0.78 ,也就是每个用户每秒钟发送0.78个吞吐量
  • 平均值、中位数、90%百分位...........最小值、最大值: 这些都是响应时间, 它们单位是 毫秒ms
  • 90%百分位:所有的样本中,有90%的样本时间是小于等于这个时间的。 这个具有参考价值。

八、临界控制器Critical Section Controller

  • 严格控制请求顺序
  • 锁名称: 默认是一个固定锁名称
    • 相当于把性能测试中的并行执行,强制转换为 串行

九、仅一次控制器Once Only Controller

仅一次控制器: 意思是,一个线程用户只执行一次

  • 并发用户是10,不管你设置循环多少次,其下挂载的取样器,每个都只会执行10次
  • 并发用户是10,不管你运行多长时间,其下挂载的取样器,每个都只会执行10次

十、DDT驱动数据驱动(二)

1.使用方法: jmeter + sqlite

jmeter的lib目录安装sqlite-jdbc-3.31.1.jar 包

2.使用步骤

  • 2.1 首先使用jmeter的jdbc request 查询mysql数据库的数据;
  • 2.2 查询数据结果定义成变量;
  • 2.3 使用jmeter的jdbc request 创建sqlite的文件;
  • 2.4 使用jmeter的jdbc request 对sqlite数据库文件创建一个表;
  • 2.5 使用jmeter的jdbc request 将myslq的查询结果变量,通过循环控制器逐条插入到sqlite的表中;
  • 2.6 再次查询sqlite的表中 ,将数据写入到用户属性内,后续取参数直接取属性了

3.操作截图

1.链接mysql配置

2.链接sqlite配置

3.sqlite数据库创建表0302user

4.查询mysql数据的结果定义成变量

5.通过循环控制器+计数器 对sqlite表插入数据

6.再次查询sqlit内的数据,将数据写入到用户属性内

7.小功能:可以将插入到sqlite中的数据保存到txt文件

加一个 保存详情到问文件的监听器

  • 填写文件名称前缀
  • 勾选: Don't add number to prefix
  • 勾选: Don't add content type suffix

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

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

相关文章

Go语言基础教程:指针

在 Go 中,函数参数默认是按值传递的。若要改变变量的原始值,可以使用指针。本教程将通过示例代码来演示如何使用值传递和指针传递。 package mainimport "fmt"// 传值方式 - 函数内改变 ival 的值不会影响原始变量 func zeroval(ival int) {i…

2024年优秀的天气预测API

准确、可操作的天气预报对于许多组织的成功至关重要。 事实上,在整个行业中,天气条件会直接影响日常运营,包括航运、按需、能源和供应链(仅举几例)。 以公用事业为例。根据麦肯锡的数据,在 1.4 年的时间里…

HCIP-HarmonyOS Application Developer V1.0 笔记(二)

类Web开发范式自定义组件基本用法 自定义组件通过element引入到宿主页面。 Props自定义属性 自定义属性支持类型 String,Number,Boolean,Array,Object。 命名规范: 命名时禁止以on、、on:、grab:等保留关键字为开头…

天润融通突破AI客服局限,三大关键提升文本机器人问答效果

近期,AI客服再次登上热搜,引发网友集体吐槽,比如AI客服虽然态度客气,但听不懂客户诉求,回答问题驴唇不对马嘴,解决不了问题...... 更有网友将这些问题升级到,企业就是不想解决问题才交给AI客服…

aarch64-opencv341交叉编译,并在arm上部署helloopencv

背景 当需要在jetson xavier nx或者rk 3562等平台上开发关于视觉检测的工程时,由于arm板子资源不足或者不能联网等原因,通常在虚拟机上利用交叉编译器编译得到可执行程序,然后部署到arm板上。 aarch64-opencv341交叉编译 ubuntu虚拟机中先…

mysql中redolog、binlog

我们中说删库跑路,那么数据库删除后,里面的数据怎么恢复呢? 这里就涉及到了redolog和binlog了 一、什么是存储引擎和缓冲池 存储引擎是 MySQL 中直接与磁盘交互部分。也是存储引擎读写数据的最小单位,一个页里可以有一条或多条…

【分布式技术】分布式事务深入理解

文章目录 概述产生原因关键点 分布式事务解决方案3PC3PC的三个阶段:3PC相比于2PC的改进:3PC的缺点: TCCTCC事务的三个阶段:TCC事务的设计原则:TCC事务的适用场景:TCC事务的优缺点:如何解决TCC模…

字节青训-找出最长的神奇数列

问题描述 小F是一个好学的中学生,今天他学习了数列的概念。他在纸上写下了一个由 0 和 1 组成的正整数序列,长度为 n。这个序列中的 1 和 0 交替出现,且至少由 3 个连续的 0 和 1 组成的部分数列称为「神奇数列」。例如,10101 是一…

华为配置BFD状态与接口状态联动实验

组网图形 图1 配置BFD状态与接口状态联动组网图 BFD简介配置注意事项组网需求配置思路操作步骤配置文件 BFD简介 为了减小设备故障对业务的影响,提高网络的可靠性,网络设备需要能够尽快检测到与相邻设备间的通信故障,以便及时采取措施&…

解压缩工具详解:ZArchive对比解压专家

ZArchiver 和解压专家在手机版解压缩工具市场中都占据着重要地位,深受用户喜爱。 ZArchiver 是一款功能强大的解压缩文件应用程序。它支持创建多种格式的压缩文件,如 7z (7zip)、zip、bzip2 (bz2)、gzip (gz)、XZ、tar 等;同时支持解压众多格…

CPU算法分析LiteAIServer视频智能分析平台噪声检测功能在视频监控中的应用与优势

在视频监控系统中,噪声问题一直是影响视频画面清晰度和可用性的关键因素。这些噪声可能源于多种因素,如低光环境、摄像机传感器的高灵敏度或编码压缩过程中的失真等。为了应对这些挑战,CPU算法分析LiteAIServer引入了噪声检测功能&#xff0c…

MATLAB实现蝙蝠算法(BA)

MATLAB实现蝙蝠算法(BA) 1.算法介绍 蝙蝠算法(简称BA)是一种受微型蝙蝠回声定位机制启发的群体智能算法,由Xin-She Yang于2010年提出。这种算法模拟了微型蝙蝠通过向周围环境发出声音并监听回声来识别猎物、避开障碍物以及追踪巢穴的行为。…

git push到远程怎么回退

git push到远程服务器想继续修改,你必须要回退然后在此提交。而且需要保留本地的修改文件。 下面给你一些git命令,回退很简单。 按照下面的流程操作就行: 1.查看提交历史 首先,使用git log命令查看提交历史。可以使用以下命令显…

邮件系统SSL加密传输,保护你的电子邮件免受网络威胁

在互联网的浪潮中,企业数字化转型的步伐不断加快。企业邮箱作为数字化应用的重要组成部分,已成为员工沟通、协同工作和企业管理的关键工具。但是在公共网络安全性普遍较弱的背景下,黑客容易侵入企业网络,监控流量,截获…

跨平台开发支付组件,实现支付宝支付

效果图: custom-payment : 在生成预付订单之后页面中需要弹出一个弹层,弹层中展示的内容为支付方式(渠道),由用户选择一种支付方式进行支付。 该弹层组件是以扩展组件 uni-popup 为核心的,关于…

usb学习笔记

1 学习链接 https://zhuanlan.zhihu.com/p/683251257https://zhuanlan.zhihu.com/p/683251257控制传输固定使用端点0 ,枚举过程使用大量的控制传输,可参考后文中枚举过程的实际报文。控制传输为了保证配置数据的传输的有效性,使用了指令再确…

uniapp一键打包

1.先安装python环境, 2.复制这几个文件到uniapp项目里面 3.修改自己证书路径,配置文件路径什么的 4.在文件夹页面双击buildController.py或者cmd直接输入buildController.py 5.python报错,哪个依赖缺少安装哪个依赖 6.执行不动的话&…

基于Python的B站视频数据分析与可视化

基于Python的B站视频数据分析与可视化 爬取视频、UP主信息、视频评论 功能列表 关键词搜索指定帖子ID爬取指定UP主的主页爬取支持评论爬取生成评论词云图支持数据存在数据库支持可视化 部分效果演示 爬取的UP主信息 关键词搜索爬取 指定UP主的主页爬取 指定为黑马的了 爬取视…

图文并茂教你如何发布自己的NPM包(GitHub Packages npm 包发布)

前情提要 发布包到npm也好,到github packages仓库也好,都是一样的道理,只是仓库地址不一样而已,本文是将npm包发布到了GitHub Packages~ GitHub Packages 简介 GitHub Packages 是一种软件包托管服务,和npm类似&…

WPS设置下拉选项,下拉菜单如何添加

在物料参数工作表输入内容 然后选中要设置下拉选项的单元格 点击数据-》下拉列表 然后选中物料参数的A列就行了