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.mzph.cn/news/624649.shtml

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

相关文章

MYSQL的事务隔离

本章概览 mysql是一个支持多引擎的系统&#xff0c;并不是所有引擎都支持事务&#xff0c;本篇以innodb为例解析mysql在事务支持的实现。提到事务一定会想到ACID(Atomicity、Consistency、Isolation、Durability&#xff0c;即原子性、一致性、隔离性、持久性)&#xff0c;今天…

旧路由重置新路由设置新路由设置教程|适用于PPPoE拨号

前言 前几天朋友说路由器想要重置&#xff0c;但不知道怎么弄。所以就想着只帮忙重置路由器的话&#xff0c;只能帮到一个人。但把整个过程写成图文&#xff0c;就可以帮助更多人。 本文章适合电脑小白&#xff0c;请注意每一步哦&#xff01; 注意事项 开始之前需要确认光猫…

pod控制器的作用

pod控制器的作用 1、动态pv和pvc deployment是控制器 pod空气器:工作负载&#xff0c;workload用于管理pod的中间层&#xff0c;确保podi资源符合预期的状态 预期状态 1、副本数 2、容器重启策略 3、镜像拉取策略 pod、出现故障时重启等等 pod的控制器类型 1、replic…

删除运行框中的文件打开历史记录

当我们使用everything、百度、迅雷等软件&#xff0c;在列表中右键选中打开文件夹时。 当使用 winR 快捷键等方式打开运行时&#xff0c;输入盘符会出现之前打开过的文件夹&#xff0c; 一方面展示的特别多会比较混乱&#xff0c;另一方面 记得在之前的window版本中&#xff08…

WIFI7时代正式来临

Wi-Fi联盟在2024年1月8日宣布推出了Wi-Fi CERTIFIED 7认证&#xff0c;标志着WIFI7时代的正式来临&#xff01;这一认证引入了一系列强大的新功能&#xff0c;旨在提升Wi-Fi性能并改善各种连接环境。WIFI7支持多用户AR/VR/XR、沉浸式3D培训、电子游戏、混合工作、工业物联网和汽…

架构师之超时未支付的订单进行取消操作的几种解决方案

今天给大家上一盘硬菜&#xff0c;并且是支付中非常重要的一个技术解决方案&#xff0c;有这块业务的同学注意自己尝试一把哈&#xff01; 一、需求如下&#xff1a; 生成订单30分钟未支付&#xff0c;自动取消 生成订单60秒后,给用户发短信 对上述的需求&#xff0c;我们给…

【算法与数据结构】63、LeetCode不同路径 II

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;参考【算法与数据结构】62、LeetCode不同路径的题目&#xff0c;可以发现本题仅仅是多了障碍物。我们还…

springboot下载图片的简单处理方式

参考地址 springboot&#xff1a;各种下载文件的方式_springboot下载文件-CSDN博客 开箱即用实战 GetMapping("/t1")public void down1(HttpServletResponse response) throws Exception {response.reset();response.setContentType("application/octet-strea…

STM32F103标准外设库——认识STM32(一)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

MySQL存储引擎索引事务

一.存储引擎 1.创建的存储引擎 MyISAM 不支持事务、也不支持外键&#xff0c;索引采用非聚集索引&#xff0c;其优势是访问的速度快&#xff0c;对事务完整性没有要求&#xff0c;以 SELECT 、 INSERT 为主的应用基本上都可以使用这个存储引擎来创建表。 MyISAM 的表在磁盘上…

从零学Java 线程的状态

Java 线程的状态 文章目录 Java 线程的状态线程的基础状态1 常见方法1.1 休眠1.2 放弃1.3 加入1.4 优先级1.5 线程打断1.6 守护线程1.7 线程的状态 - 等待 2 线程安全问题2.1 线程同步: 同步代码块2.2 线程同步: 同步方法2.3 同步规则2.4 线程的状态 - 阻塞2.5 特殊现象: 死锁 …

新版网易滑块

突然发现脸皮厚根本没用&#xff0c;大冬天的&#xff0c;风吹过来还是会冷。 大哥们多整件衣裳&#xff0c;好冷&#xff01;&#xff01;&#xff01;&#xff01; 网易更新了&#xff0c;这俩 dt跟f值。 dt为 这里返回的&#xff0c;忽略掉他。 data参数中的d值&#xff…

未来气膜体育馆的发展趋势是什么?

未来气膜体育馆的发展趋势是多方面的&#xff0c;以下是其中几个方面的趋势。 起初&#xff0c;随着人们对体育运动的需求不断增加&#xff0c;气膜体育馆的建设和使用将成为一种趋势。气膜体育馆具有灵活性和可移动性的特点&#xff0c;可以快速搭建和拆除&#xff0c;能够适…

低代码平台,新型应用程序开发神器

目前低代码平台如火如荼。这一新兴技术为企业提供了一种高效、灵活、快速开发应用程序的方法&#xff0c;并在短时间内取得了巨大成功。然而&#xff0c;我们不得不面对低代码平台的优劣以及其所带来的挑战。本文将深入探讨低代码平台在不同情况下的优劣势&#xff0c;并与您分…

AI能否真的取代程序员?

一个Java程序员从接到需求到最终开发完功能的流程大致如下 首先是理解原型图&#xff0c;设计表结构根据表结构编写增删改查代码与前端联调&#xff0c;完成功能开发 那么以上步骤AI能不能完成呢&#xff1f; 让我们试一下&#xff1a; 第一步&#xff0c;使用 AI助手 解析流…

设计模式之状态模式【行为型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

postman环境变量全局变量设置

postman环境变量、全局变量设置 在公司中&#xff0c;一般会存在开发环境、测试环境、线上环境等&#xff0c;如果需要在不 同的环境下切换做接口测试&#xff0c;显然我们需要把所有接口的域名进行修改&#xff0c;如果接 口测试用例较多&#xff0c;那么修改会非常费力&…

Redis基础系列-哨兵模式

Redis基础系列-哨兵模式 文章目录 Redis基础系列-哨兵模式1. 引言2. 什么是哨兵模式&#xff1f;3. 哨兵模式的配置4. 哨兵模式的启动和验证4.1 主master宕机&#xff0c;看会出现什么问题4.2 重启6379主机 5. 哨兵模式的工作原理和选举原理5.1. SDown主观下线&#xff08;Subj…

基于Python实现地标景点识别

目录 前言简介地标景点识别的背景 地标景点识别的原理卷积神经网络&#xff08;CNN&#xff09;的基本原理地标景点识别的工作流程 使用Python实现地标景点识别的步骤数据收集数据预处理构建卷积神经网络模型模型训练 参考文献 前言 简介 地标景点识别是一种基于计算机视觉技术…

Qt SDL2播放Wav音频

这里介绍两种方法来实现Qt播放Wav音频数据。 方法一&#xff1a;使用QAudioOutput pro文件中加入multimedia模块。 #include <QApplication> #include <QFile> #include <QAudioFormat> #include <QAudioOutput>int main(int argc, char *argv[]) {…