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脚本)

函数助手创建函数

设置读取变量

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Docker构建MySQL8.0镜像】

Docker构建MySQL8.0镜像 部署流程1. 拉取docker镜像2. 创建数据卷&#xff0c;存放MySQL数据3. 启动MySQL镜像4. 初始化sql放入MySQL镜像5. 执行MySQL脚本6. MySQL镜像打包7. MySQL镜像迁移 部署流程 1. 拉取docker镜像 docker pull mysql:8.0.35拉取成功后就可以看到镜像了&…

python基础学习

缩⼩图像&#xff08;或称为下采样&#xff08;subsampled&#xff09;或降采样&#xff08;downsampled&#xff09;&#xff09;的主要⽬的有两个&#xff1a;1、使得图像符合显⽰区域的⼤⼩&#xff1b;2、⽣成对应图像的缩略图。 放⼤图像&#xff08;或称为上采样&#xf…

HCIA—15实验:规划与优化、检测。沉默接口、空接口。OSPF、认证 、汇总、沉默接口、加快收敛、缺省路由

学习目标&#xff1a; 实验&#xff1a;规划与优化、检测。沉默接口、空接口。OSPF、认证 、汇总、沉默接口、加快收敛、缺省路由 学习内容&#xff1a; 实验&#xff1a;规划与优化、检测。沉默接口、空接口。OSPF、认证 、汇总、沉默接口、加快收敛、缺省路由 1.要求——基…

Ubuntu系统默认的dash shell改成bash shell

在Ubuntu系统中&#xff0c;如果默认的/bin/sh链接指向了dash&#xff0c;而你希望将其更改为指向bash&#xff0c;可以通过以下步骤操作&#xff1a; sudo rm /bin/sh sudo ln -s /bin/bash /bin/sh 但是&#xff0c;这种做法并不推荐&#xff0c;因为某些系统服务和脚本依赖…

【动态规划】【C++算法】639 解码方法 II

作者推荐 【矩阵快速幂】封装类及测试用例及样例 涉及知识点 动态规划 字符串 滚动向量 LeetCode 639. 解码方法 II 一条包含字母 A-Z 的消息通过以下的方式进行了 编码 &#xff1a; ‘A’ -> “1” ‘B’ -> “2” … ‘Z’ -> “26” 要 解码 一条已编码的消息…

轻量应用服务器Lighthouse_香港轻量服务器_海外轻量服务器-腾讯云

腾讯云轻量应用服务器开箱即用、运维简单的轻量级云服务器&#xff0c;CPU内存带宽配置高并且价格特别便宜&#xff0c;大带宽&#xff0c;但是限制月流量&#xff0c;轻量2核2G3M带宽62元一年、2核2G4M优惠价118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c…

spring常见漏洞(4)

CVE-2018-1270 Spring Messaging 命令执行漏洞(CVE-2018-1270)&#xff0c;Spring框架中的 spring-messaging 模块提供了一种基于WebSocket的STOMP协议实现&#xff0c;STOMP消息代理在处理客户端消息时存在SpEL表达式注入漏洞&#xff0c;攻击者可以通过构造恶意的消息来实现…

汽车用螺纹紧固件的拧紧力矩规范主要考虑哪些方面——SunTorque智能扭矩系统

在汽车制造过程中&#xff0c;螺纹紧固件是连接和固定各个零部件的重要元件。为了保证汽车的可靠性和安全性&#xff0c;对于螺纹紧固件的拧紧力矩有着严格的规定和规范。SunTorque智能扭矩系统和大家一起掌握这一重要知识点。 拧紧力矩是指将螺纹紧固件拧紧到预定位置所需的力…

Vue创建项目配置情况

刚开始接触vue项目创建和运行因为node版本和插件版本不一致时长遇到刚装好插件&#xff0c;项目就跑不起来的情况&#xff0c;特此记录一下 vue -V vue/cli 5.0.8 node -v v12.22.12 npm -v 6.14.16 关闭驼峰命名检查、未使用语法检查 package.json文件内容&#xff1a; {&…

0基础学习VR全景平台篇第138篇:无人机航拍实操

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 为了使全景的概念体现得更为广阔和大气&#xff0c;我们也需要在天空上运用无人机进行全景拍摄&#xff0c;而无人机的拍摄相对于地面来说也是较为简单&#xff0c;掌握其基本的拍…

LeetCode 算法题 1.两数之和(python版)

题目要求 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 代码 class…

电路原理1-线性电阻

前言&#xff1a;整理笔记基于清华大学于歆杰老师的《电路原理》&#xff0c;电路原理是基于无源负载和电源组成电路的分析方法。 1.基础数学知识 算术&#xff1a;数字之间的运算 代数&#xff1a;用变量和函数来代替数字 微积分&#xff1a;描述函数的累积效应&#xff0…

Facebook与环境保护:社交媒体的可持续发展

在当今社会&#xff0c;科技发展日新月异&#xff0c;而社交媒体作为数字时代的代表之一&#xff0c;正面临着巨大的责任与机遇。随着全球环境问题的凸显&#xff0c;社交媒体平台如Facebook也逐渐认识到自身在环保可持续发展中的角色。本文将深入探讨Facebook在环境保护方面的…

2024“华数杯”国际大学生数学建模竞赛(B题)光伏发电| 建模秘籍文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍希望大家都能轻松建模呀&#xff0c;华数杯也会持续给大家放送思路滴~ 抓紧小秘籍&#xff0c;我们出发吧~ 完整内容可以在文章末尾领取&#xff01; 问题重述 2024 "Huashu Cup"国际数学建模竞赛 ICM 问题 B: 太…

四大软件架构:掌握单体、分布式、微服务、Serverless 的精髓

四大软件架构&#xff1a;掌握单体、分布式、微服务、Serverless 的精髓 简介&#xff1a; 如果一个软件开发人员&#xff0c;不了解软件架构的演进&#xff0c;会制约技术的选型和开发人员的生存、晋升空间。这里我列举了目前主要的四种软件架构以及他们的优缺点&#xff0c;…

翼龙-2H无人机

一、概述 翼龙-2&#xff0c;是成都飞机工业集团研制的无人驾驶飞行器&#xff0c;是空中侦察、精确打击和应急通讯的平台。成都飞机工业集团于2015年9月的北京国际航空航天展览会上介绍了翼龙-2的概念。在2016年珠海航展期间&#xff0c;翼龙-2的原型机首次向公众展示。 因为…

selenium+java 通过classname定位时中间有空格解决办法

1、如图所示&#xff0c;class"main-table-span title" 中有空格 如果直接通过 driver.findElement(By.classname(".main-table-span title"));来进行定位界面会出现报错 2、可以在classname的前面和空格处用.号代替通过css来定位&#xff0c;如下&#…

c# 视频播放之Windows Media Player

最近想给软件加个视频播放功能&#xff0c;在网上看有好几个方式&#xff0c;最后决定用 Windows Media Player 和Vlc.DotNet.Forms。 这篇文章主要讲Windows Media Player&#xff0c;它的优点&#xff1a;代码简单&#xff0c;视频操作功能都有&#xff0c;能播放网络和本地…

一场特别的捐赠活动,一份来自“远方”的温暖

1月12日&#xff0c;一场特别的捐赠仪式在青海省玉树州玉树市隆宝镇中心寄宿制学校举行。这所处在海拔4300多米、年均气温在零度以下高寒地区小学中的813名孩子&#xff0c;在这天收到了来自“远方”的祝福与温暖。 捐赠现场 12月22日&#xff0c;由北京演艺集团出品、北京歌剧…

2024年“华数杯”国际大学生数学建模竞赛B题思路

本题难点在于数据获取和定性定量分析&#xff0c;代码部分没有太大价值、就不更新了 •中国的电力供应和许多因素相互作用。请研究它们之间的关系&#xff0c;并预测2024年至2060年中国电力供应的发展趋势。 首先得获取数据&#xff0c;中国的宏观数据相对容易&#xff08;包括…