JMeter笔记(三)

 个人学习笔记(整理不易,有帮助点个赞)

笔记目录:学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客

目录

一:参数化方法

1)用户定义的变量

2)函数助手

3)从文件中读取((可以格式是.csv或txt))

4)用户参数

二:jp@gc - Dummy Sampler

三:Jmeter关联

1)使用正则表达式实现接口关联

2)使用Jsonpath表达式实现接口关联(只能作用于返回值是Json的)

3)XPath提取器

4)json path extractor

5)beanshell后置处理器

6)跨线程组关联


一:参数化方法

脚本在运行时,根据需要选取不同的参数值作为输入,该方式称为数据驱动测试(Data Driven Test),而参数的取值范围被称为数据池(Data Pool)

1)用户定义的变量

配置元件-用户定义的变量
常用于设置一些全局变量,适用于测试计划中不需要随迭代发生改变的参数(只取一次值的参数),比如URL,host,port等

2)函数助手

函数助手自带丰富的函数,

比如随机函数,${_Random(100,999,)}

 

如果生成的随机数要被多处引用,可以这样

 

Jmeter在执行内置函数后,会将结果保存到到全局变量中

 

比如“CSVRead"函数,用来读取外部的CSV文件

在D盘创建一个data.csv文件,注意以逗号分隔

ps:数据需求多的话,直接数据库查,导出去用即可

 设置三个线程数(三个用户)

 ps:__CSVRead函数规定每个线程都只读取一行数据。如果设置4个线程数,则第四个线程又会读取第一行,循环的

3)从文件中读取((可以格式是.csv或txt))

"CSV数据文件设置"这个元件对__CSVRead函数做了一定的扩展,使其更加的灵活

  • 变量名称:之前是用0代表第一列,1代表第二列,这里可以为列起变量名
  • 分割符:默认是逗号,也可以自己指定分隔符
  • 当文件所有行读取完毕后,遇到文件结束符后再次循环?遇到文件结束符停止线程?的关系是互斥的,也就是一个如果设置为true则另一个要设置为false

4)用户参数

 

二:jp@gc - Dummy Sampler

本质是一个取样器,可以自己模拟请求与返回,类似mock服务(可以设置响应吗,响应信息,延迟时间(latency),响应时间,模仿响应时间,请求数据,响应数据,当服务器还没开发完成的时候,帮助调试脚本)

下载plugins-manager.jar包:Install :: JMeter-Plugins.org

把它放到jmeter安装的lib/ext目录下,然后重新启动jmeter

但是我这里不知道为毛线没有,搜索一下dum,发现这里也有能安装的,版本低了点,将就一下

点击线程组–>取样器–>Dummy Sampler

如果响应数据中的中文乱码,在安装目录/bin中的jmeter.properties,增加或者修改:sampleresult.default.encoding=GBK

三:Jmeter关联

关联就是说两个或多个请求之间是有先后顺序的、有联系的。比如上一个请求的响应内容是下一个请求的参数

1)使用正则表达式实现接口关联

 新建一个请求:http://www.weather.com.cn/data/sk/101010100.html

运行能看到结果

 如果出现乱码,可以添加一个BeanShell后置处理程序,加上代码:prev.setDataEncoding("utf-8");

 在查看结果树这里可以查看结果,也可以进行一些测试,比如正则表达式的测试:

 其中:

():封装了待返回的字符串
.:匹配任意一个字符(除了回车键)
*:限定符,匹配(*之前的符号)0次或多次,默认是贪婪模式
+:限定符,匹配(+之前的符号)1次或多次,默认是贪婪模式
?:限定符,匹配0次或1次,在找到第一个匹配项后停止
.*:匹配连续0个/多个字符
.+:匹配连续1个/多个字符
\ :转义,\.表示匹配字符.本身

^:边界限定,字符串的开始位置
$:边界限定,字符串的结束位置
| :模式限定符,从中任选一个匹配

PS: 这个怎么理解,.是提取一个,但是使用了*或者+,那就会一直提取到最后一个字符串,?表示第一个匹配到第一个项就停止(也就是北京,然后有“,就停止了),所以如果不加?,则一直匹配到B为止

添加一个后置处理器:正则表达式提取器

其中:

$1$表示解析到的第1个值,$$是固定写法

匹配数字:0代表随机取值,1表示匹配返回数组的第一个元素内容

 缺省值:如果参数没有取得到值,那默认给一个值让它取

如果是取2个值就这样

增加一个调试取样器,用于查看结果有没有取值到

看到能提取想要的值后,就能在下一个请求去使用了

2)使用Jsonpath表达式实现接口关联(只能作用于返回值是Json的)

1)从根目录开始找(绝对路径):$.weatherinfo.temp

2)从任意目录开始找(相对路径):$..city

创建一个Json提取器,填写的内容和正则表达式类似

  • Names of created variables:存放提取出的值的参数
  • JSON Path Expressions:JSON路径表达式
  • Match No.(0 for Random):取第几个
  • Compute concatenation var(suffix _ALL):是否同级所有,即将匹配到的所有值保存,名为‘变量名_ALL’
  • Default Values:缺省值,没取到就用这里填的值
  • 注:获取多个值时,变量名、json、匹配值、缺省值要用分号间隔开

3)XPath提取器

如果请求返回的消息为xml或html格式的,可以用XPath提取器来提取需要的数据

APPly to:作用范围(返回内容的断言范围)

  • Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器    
  • Main sample only:仅作用于父节点的取样器      
  • Sub-samples only:仅作用于子节点的取样器      
  • JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

ML Parsing Options:要解析的XML参数

  • Use Tidy:当需要处理的页面是HTML格式时,必须选中该选项;如果是XML或XHTML格式(例如RSS返回),则取消选中
  • Quiet表示只显示需要的HTML页面,Report errors表示显示响应报错,Show warnings表示显示警告
  • Use Namespaces:如果启用该选项,后续的XML解析器将使用命名空间来分辨
  • Validate XML:根据页面元素模式进行检查解析    
  • Ignore Whitespace:忽略空白内容
  • Fetch external DTDs:如果选中该项,外部将使用DTD规则来获取页面内容

Return entire XPath fragment of text content:返回文本内容的整个XPath片段

  • 引用名称:存放提取出的值的参数
  • XPath Query:用于提取值的XPath表达式
  • 匹配数字:如果XPath路径查询导致许多结果,则可以选择提取哪个作为变量

    0:表示随机
    -1:表示提取所有结果(默认值),它们将被命名为<变量名>_N(其中N从1到结果的个数)
    X:表示提取第X个结果。如果这个x大于匹配项的数量,则不返回任何内容。将使用默认值

  • 缺省值:参数的默认值

4)json path extractor

json extractor的使用与json path extractor基本相同,语法上有差别

做http接口测试,返回的数据是json串,Jmeter不支持直接处理json串,如果要获取到返回结果中指定的值,必须要要通过正则表达式来获取到,正则表达式比较麻烦,json是通过key-value来存值,可以通过json path extractor的插件(Jmeter3自带)

这个json串,cityid在weatherinfo这个集合里面存着,那就要先取到weatherinfo里面的值,再取weatherinfo里面的第三个元素

5)beanshell后置处理器

下载fastjson包,并放到\lib\ext下,重启jmeter(我这自带了)

https://mvnrepository.com/artifact/com.alibaba/fastjson

这里省略

6)跨线程组关联

当有依赖关系的两个请求(一个请求的入参是另一个请求返回的数据),放入到不同的线程组中时,就不能使用提取器保存的变量来传递参数值,而是要使用Jmeter属性来传递。

jmeter属性配置方法

函数实现

__setProperty函数:将值保存成jmeter属性

__property函数:在其他线程组中使用的property函数读取属性

注:__setProperty函数需要通过BeanShell取样器来执行(BeanShell取样器作用:执行函数和Java脚本)

函数助手创建函数

设置读取变量

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

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

相关文章

【Rust学习】安装Rust环境

本笔记为了记录学习Rust过程&#xff0c;内容如有错误请大佬指教 使用IDE&#xff1a;vs code 参考教程&#xff1a;菜鸟教程链接: 菜鸟教程链接: Rust学习 Rust入门安装Rust编译环境Rust 编译工具 构建Rust 工程目录 Rust入门 安装Rust编译环境 因为我已经安装过VSCode了&am…

Mybatis基础---------增删查改

目录结构 增删改 1、新建工具类用来获取会话对象 import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.apache.ibatis.io.Resources;import java.io…

【物联网】物联网设备和应用程序涉及协议的概述

物联网设备和应用程序涉及协议的概述。帮助澄清IoT层技术栈和头对头比较。 物联网涵盖了广泛的行业和用例&#xff0c;从单一受限制的设备扩展到大量跨平台部署嵌入式技术和实时连接的云系统。 将它们捆绑在一起是许多传统和新兴的通信协议&#xff0c;允许设备和服务器以新的…

Linux命令之pwd,cd,ls,cat,more,less,head,tail文件目录类命令的使用

一、实验题 1、在桌面打开终端&#xff0c;查看当前目录 2、改变目录位置至当前目录的父目录 3、改变目录位置至用户的家目录 4、利用绝对路径改变目录到/usr/local目录下 5、列出当前目录下的文件及目录 6、列出包括以“.”开始的隐藏文件在内的所有文件 7、列出当前目录下所…

C++学习笔记——用C++实现树(区别于C)

树是一种非常重要的数据结构&#xff0c;它在计算机科学中的应用非常广泛。在本篇博客中&#xff0c;我们将介绍树的基本概念和C中如何实现树。 目录 一、树的基本概念 2.C中实现树 2.1创建一个树的实例&#xff0c;并向其添加节点 2.2三种遍历方式的实现代码 3.与C语言相…

JVM知识总结(持续更新)

这里写目录标题 java内存区域程序计数器虚拟机栈本地方法栈堆方法区运行时常量池 对象的创建 java内存区域 Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域&#xff1a; 程序计数器虚拟机栈本地方法栈堆方法区 程序计数器 记录下一条需要…

C语言——小细节和小知识9

一、大小端字节序 1、介绍 在计算机系统中&#xff0c;大小端&#xff08;Endianness&#xff09;是指多字节数据的存储和读取顺序。它是数据在内存中如何排列的问题&#xff0c;特别是与字节顺序相关。C语言中的数据存储大小端字节序指的是在内存中存储的多字节数据类型&…

Android 布局菜鸟 android中的布局类型和特点?

一、LinearLayout(线性布局) 1、 特点: 主要以水平或垂直方式来排列界面中的控件。并将控件排列到一条直线上。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能放一个控件。 2、适⽤场景: Android开发中最常见的 ⼀种布局⽅式,排列…

微信小程序-----全局配置与页面配置

目录 前言 全局配置文件 一、window 1. 小程序窗口的组成部分 2. window 节点常用的配置项 3. 设置导航栏的标题 4. 设置导航栏的背景色 5. 设置导航栏的标题颜色 6. 全局开启下拉刷新功能 7. 设置下拉刷新时窗口的背景色 8. 设置下拉刷新时 loading 的样式 9. 设置…

黄金t+d与黄金期货交易的区别

在金融投资领域中&#xff0c;黄金是一种重要的避险工具和财富保值增值手段。对于投资者来说&#xff0c;了解并熟悉不同的黄金交易方式是至关重要的。其中&#xff0c;黄金TD和黄金期货交易是两种常见的黄金交易形式。那么&#xff0c;它们之间具体有哪些区别呢&#xff1f; 了…

User-Agent(用户代理)是什么?

User-Agent&#xff08;用户代理&#xff09;是什么&#xff1f; User-Agent 即用户代理&#xff0c;简称“UA”&#xff0c;它是一个特殊字符串头。网站服务器通过识别 “UA”来确定用户所使用的操作系统版本、CPU 类型、浏览器版本等信息。而网站服务器则通过判断 UA 来给客…

Redis主从+哨兵集群(基于CentOS-8.0)高可用部署方案

目录 一、环境描述 二、Redis 主从集群部署 2.1 Redis下载 2.2 Redis解压 和移动文件 2.4 编译、安装Redis 2.6 新建 bin 和 etc 文件夹 2.7 分发Redis 2.8 配置 2.8.1 主节点配置 2.8.2 从节点配置 2.9 启动Redis服务 2.10 验证主从服务 2.11 查看节点角色信息 2…

STM32 TIM输出比较、PWM波形

单片机学习&#xff01; 目录 一、输出比较简介 二、PWM简介 三、输出比较通道 3.1通用定时器的输出比较部分电路 3.2高级定时器的输出比较部分电路 四、输出模式控制器 五、PWM基本结构 六、PWM参数计算 总结 前言 文章讲述STM32定时器的输出比较功能&#xff0c;它主…

GAMES104-现代游戏引擎:从入门到实践 - 物理引擎课程笔记汇总

文章目录 0 入门资料1 物理引擎基本概念Actor & shapesRigid body dynamicsCollision DetectionCollision Resolution 应用与实践Character controllerRagdoll 0 入门资料 GAMES104-现代游戏引擎&#xff1a;从入门到实践_课程视频_bilibiliGAMES104官方账号 - 知乎课程主页…

OceanBase基础概念

文章目录 基本概念介绍集群、Zone和OB ServerRootService总控服务多租户机制&#xff0c;资源隔离&#xff0c;数据隔离资源池创建租户检查集群状态查看系统日志 基本概念介绍 集群、Zone和OB Server 一个集群由多个Zone组成&#xff0c;给集群内的一批机器打上同一个tag&#…

综合评价 | 基于EW、EW-BP、EW-ELM的地区发展水平综合评价(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 综合评价 | 基于EW、EW-BP、EW-ELM的地区发展水平综合评价&#xff08;Matlab&#xff09; 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复基于EW、EW-BP、EW-ELM的地区发展水平综合评价&#xff08;Matl…

ZooKeeper 实战(五) Curator实现分布式锁

文章目录 ZooKeeper 实战(五) Curator实现分布式锁1.简介1.1.分布式锁概念1.2.Curator 分布式锁的实现方式1.3.分布式锁接口 2.准备工作3.分布式可重入锁3.1.锁对象3.2.非重入式抢占锁测试代码输出日志 3.3.重入式抢占锁测试代码输出日志 4.分布式非可重入锁4.1.锁对象4.2.重入…

【MySQL】数据处理之增删改

文章目录 一、增加&#xff08;插入&#xff09;INSERT INTO...VALUES(...,...)VALUES的方式添加情况一&#xff1a;为表的所有字段按默认顺序插入数据情况二&#xff1a;为表的指定字段插入数据情况三&#xff1a;同时插入多条记录 将查询结果插入到表中 二、修改&#xff08;…

CTF CRYPTO 密码学-3

题目名称&#xff1a;反编译 题目描述&#xff1a; 分析 题目给出一个pyc后缀的文件&#xff0c;需要使用uncompyle6模块去还原成py文件 uncompyle6简介 uncompyle6 是一个 Python 反编译器&#xff0c;它能够将 Python 字节码&#xff08;.pyc 文件&#xff09;转换回源代码&…

数据结构之栈和队列

数据结构之栈和队列 1、栈1.1、栈的定义及基本运算1.2、栈的存储结构 2、队列2.1、队列的定义及基本运算2.2、队列的存储结构2.3、队列的应用 数据结构是程序设计的重要基础&#xff0c;它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从…