wordpress 编码/杭州seo工作室
目录
前言
1、JMeter参数化
1.1、什么是参数化
1.2、用户定义的变量
1.2.1、什么时候使用用户定义的变量
1.2.2、使用“用户定义的变量”进行参数化的步骤:
1.2.3、案例
1.3、用户参数
1.3.1、什么时候使用用户参数?
1.3.2、使用“用户参数”进行参数化的步骤:
1.3.3、案例
1.4、CSV数据文件设置
1.4.1、什么时候使用CSV数据文件设置
1.4.2、使用“CSV数据文件设置”进行参数化的步骤?
1.4.3、案例
1.5、函数——随机数据
1.5.1、使用场景
1.5.2、使用“counter函数”进程参数化的步骤:
1.5.3、案例
1.6、4种参数化方式对比
2、JMeter断言
2.1、响应断言
2.2.1、参数认识:
2.1.2、案例:
2.2、JSON断言
2.2.1、参数认识:
2.2.2、案例:
2.3、持续时间断言
2.3.1、参数说明
2.3.2、案例:
3、JMeter关联
3.1、正则表达式提取器
3.1.1、介绍正则表达式
案例使用一:
案例二:
3.1.2、正则表达式提取器
案例:
3.2、Xpath提取器
案例:
3.3、JSON提取器
案例:
前言
小白同学,可以先看这篇哦:http://t.csdnimg.cn/geQnl
1、JMeter参数化
1.1、什么是参数化
定义:使用不同的测试数据,调用相同的测试方法进行测试
本质:实现测试数据与测试方法的分离
实现方式举例:
- 用户定义的变量——全局变量【JMeter有】
- 用户参数——为每个用户分配不同的参数值【Jmeter有】
- CSV数据文件设置——文件方式参数化【Jmeter有】
- 函数——随机数据【JMeter有】
- 数据库
下面我们来看看JMeter中的几种参数化:
1.2、用户定义的变量
1.2.1、什么时候使用用户定义的变量
定义全局变量
1.2.2、使用“用户定义的变量”进行参数化的步骤:
- 添加线程组
- 添加用户定义的变量。格式为变量名 - 变量值
- 添加http请求,引用定义的变量名。格式:${变量名}
- 添加察看结果树
1.2.3、案例
步骤一:添加线程组
步骤二:添加用户定义的变量
步骤三:添加http请求
http中可以这样填:
也可以这样填:
步骤四:添加察看结果树
查看运行结果:
1.3、用户参数
1.3.1、什么时候使用用户参数?
针对同一组参数,当不同的用户来访问时,可以获取到不同的值
1.3.2、使用“用户参数”进行参数化的步骤:
- 添加线程组,设置线程数为n(模拟的用户数)
- 添加用户参数:第一列添加多个变量名;后续每一列为一组用户数据【看案例】
- 添加http请求,引用定义的变量名。格式:${变量名}
- 添加查看结果树
1.3.3、案例
步骤一:添加线程组
和上面一样,记得设置线程数,例:2
步骤二:添加用户参数
步骤三:添加http请求
同第一个案例
步骤四:添加察看结果树
同第一个案例
查看运行结果:
1.4、CSV数据文件设置
1.4.1、什么时候使用CSV数据文件设置
当不同的用户,或者同一个用户多次循环时,都可以获取到不同的值
1.4.2、使用“CSV数据文件设置”进行参数化的步骤?
- 定义CSV数据文件
- 添加线程组
- 添加CSV数据文件设置
- 添加http请求,引用定义的变量名。格式${变量名}
- 添加查看结果树
1.4.3、案例
步骤一:定义CSV数据文件
步骤二:添加线程组
同案例1,设置循环次数,例:2
步骤三:添加CSV数据文件设置
步骤四:添加http请求
步骤五:添加察看结果树
同案例1
查看运行结果:
1.5、函数——随机数据
1.5.1、使用场景
自动生成不重复的数据,让每个用户循环都能取到不同的数据,且不需要提前定义
1.5.2、使用“counter函数”进程参数化的步骤:
- 添加线程组,设置虚拟用户数和循环次数
- 生成_counter函数
- 添加http请求,使用_counter函数。格式:${_counter(FALSE,)}
- 添加察看结果树
1.5.3、案例
步骤一:添加线程组
同上,设置线程数2,循环次数2
步骤二:生成_counter函数
参数:
-
第一个参数
- True,每个用户(线程)的计数器保持独立,每个用户(线程)计数从1开始计数。
- False,全局计数器,所以用户(线程)统一从1开始计数。
-
第二个参数
- 将计数器函数生成的值赋值给新变量。比如,新变量名称为number,后续可以通过参数化方式${number}引用计数器的值。
步骤三:添加http请求
步骤四:添加察看结果树
同上
查看运行结果:
1.6、4种参数化方式对比
- 用户定义的变量:作用:定义全局变量;局限性:每次取值(无论是否相同的用户)都是固定值
- 用户参数:作用:保证不同的用户针对同一组参数,可以取到不同的值;局限性:同一个用户在多次循环中,取到相同的值
- CSV数据文件设置:作用:保证不同的用户及同一用户多次循环时,都可以取到不同的值;局限性:需要手动进行设置测试数据
- 函数:作用:保证不同的用户多次循环时,都可以取到不同的值,不需要提前设置;局限性:输入数据有特定的业务要求时无法使用
2、JMeter断言
断言就是让程序判断预期结果与实际结果是否一致
JMeter中常用的断言:
- 响应断言
- JSON断言
- 持续时间断言
2.1、响应断言
2.2.1、参数认识:
各个参数说明:
1:
- 响应文本:来自服务器的响应文本,即主体
- 响应代码:响应的状态码,例如200
- 响应信息: 响应的信息,例如OK
- response headers:相应头部
- request Headers:请求头部
- request Data:请求数据
- URL样本:请求的URL
- Document(text):响应的整个文档
- Ignore Status:忽略返回的响应状态码
2:
- 包括:文本包含指定的正则表达式(正则表达式后面会简单介绍一下,现在就理解为包含一个字符串就可以了)
- 匹配:整个文本匹配指定的正则表达式
- Equals:整个返回结果的文本等于指定的字符串(区分大小写)
- Substring:返回结果的文本包含指定字符串(区分大小写)
- 否:取反。就是指符合刚才的断言即为错,不符合为对
- 或者:多个测试模式,有一个满足即为通过。默认是且,所有通过才为通过
2.1.2、案例:
断言:
添加一个断言结果:
http请求:
运行后,查看结果:
2.2、JSON断言
2.2.1、参数认识:
参数说明:
- Assert JSON Path exists:用于断言的JSON元素的路径(实际结果)
- Additionally assert value:如果您想要用某个值生成断言,请选择复选框
- Match as regular expression:使用正则表达式断言
- Expected Value:期望值
- Expect null:希望为空,则勾选复选框
- Invert assertion(will fail if above conditions met):反转断言(如果满足上述条件则失败)
2.2.2、案例:
http请求:
JSON断言:
上述的JSON的路径,就是这个值在json格式下对应的位置,$.data.gender对应如下:
运行后,看断言:
2.3、持续时间断言
就是用来检查http请求的响应时间是否超出要求范围
2.3.1、参数说明
参数:
- 持续时间(毫秒):请求允许的最大响应时间,超过则认为失败~
2.3.2、案例:
断言:
http请求同上一个案例相同~
运行,查看断言结果:
3、JMeter关联
关联:当请求之间有依赖关系,比如一个请求的入参是另一个请求的返回数据。这时就需要用到关联处理
JMeter中常用的关联方法:
- 正则表达式提取器
- Xpath提取器
- JSON提取器
3.1、正则表达式提取器
3.1.1、介绍正则表达式
- 公式格式:左边界(匹配符号)右边界:可以提取出想要获取的数据内容
- .:是通配符,可以代表任意字符(除换行回车)
- *: 代表前面的字符出现0次或者多次
- .*匹配规则:找到左边界值后,往右查找有边界,找到最后面的右边界,中间的所有数据都被记录下来
- ?: 代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找;再次查找
- 左边界和右边界
最终使用:
公式格式:左边界(.*?)右边界
案例使用一:
我们结合现在网站,来验证一下: 正则表达式在线测试 | 菜鸟工具
内容:<title>百度一下,你就知道</title><title>百度一下,你就知道</title>
提取目标:<title>百度一下,你就知道</title>
正则表达式:套公式:左边界<title>,右边界:</title>
结果:
和我们预想的不太一样,预想的是:<title>百度一下,你就知道</title>
所以我们要加一个问号,表示非贪婪匹配:
这里是找到了两处,我们可以自己决定要哪一个~
案例二:
内容:
预计匹配:所有的号码
表达式错误示范:
正确匹配:
注:
- 通过一个正则表达式可以提取出多组数据,每组数据设置对应的左边界和右边界即可
- 每一组数据都可以有一个或者多个值
3.1.2、正则表达式提取器
- 作用:任意格式的响应数据,都可以使用正则表达式提取器进行提取
- 添加:
- 参数说明:
- 引用名称:存放提取出的值的参数名称,如填写title
- 正则表达式:左边界(*?)右边界
- 模板:用SS引用起来,表示解析出第几个()的值
- 匹配数字: 1表示第1个值,-1表示所有取值,0表示随机
- 缺省值:默认值。通常用于后续的逻辑判断,建议使用一些特殊含义的,比如0,NULL,ERROR等。
案例:
请求1:
正则表达式提取器:
请求2:
运行,查看结果树:
这里的值为空,怎么办?
我们可以添加一个
调试取样器,不用对里面的值更改,添加了就行:
添加一个查看结果树,运行,看结果:
我们可以看到gender变量确实为空,但下面的变量有值呀,所以我们修改请求2:
重新运行,查看:
3.2、Xpath提取器
- 作用:针对html格式的响应结果数据进行提取
- 添加位置:
- 参数说明:
- Use Tidy(tolerant parser):当需要处理的页面是html格式时,需要勾选该选项;当需要处理的页面是XML或XHTML格式时,取消选中该选项
- Quiet表示只显示需要的HTML页面
- Report errors表示显示响应报错
- Show warnings表示显示警告
- Use Namespaces:如果启用该选项,后续的XML解析器将使用命名空间来分辨;
Validate XML:根据页面元素模式进行检查解析 - Ignore Whitespace:忽略空白内容
- Fetch external DTDs:如果选中该项,外部将使用DTD规则来获取页面内容(一些XML元素具有属性,属性包含应用程序使用的信息,属性仅在程序对元素进行读、写操作时,提供元素的额外信息,这时候需要在DTDs中声明)
- Return entire XPath fragment of text content:返回文本内容的整个XPath片段;
- 引用名称:存放提取出的值的参数名称
- Xpath Query:用户提取值的xpath表达式【和UI自动化定位元素一样】
- 匹配数字:如果xpath路径可以查询出许多的结果,则可以选择提取哪个。0表示随机;-1表示所有;1表示第一个值
- 缺省值:参数的默认值。可以不填写。通常用于后续的逻辑判断,建议使用一些特殊含义的,比如0,NULL,ERROR等。
案例:
请求1:
Xpath提取器:
http请求2:
添加一个调试取样器,不用对里面的值更改,添加了就行:
添加一个查看结果树,运行,看结果:
3.3、JSON提取器
作用:针对JSON格式的响应结果数据进行提取
添加位置:
参数介绍:
- Names of create variables:存放提取出的值的参数名称
- JSON Path Expression:JSON路径表达式
- Match No:如果JSON路径匹配出许多结果,则可以选择提取哪个:0表示随机;-1表示所有;1表示第一个值
- Default Value:参数的默认值
案例:
请求1:
JSON提取器:
请求2:
运行结果:
好啦,先到这里咯~~~
相关文章:

JMeter的使用——傻瓜式学习【中】
目录 前言 1、JMeter参数化 1.1、什么是参数化 1.2、用户定义的变量 1.2.1、什么时候使用用户定义的变量 1.2.2、使用“用户定义的变量”进行参数化的步骤: 1.2.3、案例 1.3、用户参数 1.3.1、什么时候使用用户参数? 1.3.2、使用“用户参数”进…...

MyBaties存储和查询json格式的数据(实体存储查询版本)
最近在做的功能,由于别的数据库有值,需要这边的不同入口的进来查询,所以需要同步过来,如果再继续一个一个生成列对应处理感觉不方便,如果没有别的操作,只是存储和查询,那就可以用MySql支持的jso…...

动态规划14:一和零
动态规划14:一和零 题目 474. 一和零 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 …...

C#WPF嵌入字体实例
本文介绍C#WPF嵌入字体实例。 首先创建项目 添加Resources文件夹,添加字体文件,字体文件属性:生成操作为Resources,复制到输出目录:不复制 字体的使用可以采用以下两种方法: 方式一 直接引用 FontFamily="./Resources/#幼圆" 方式二 定义资源 <Applica…...

Linux——Linux权限
Linux权限 前言一、shell命令以及运行原理二、Linux权限的概念Linux权限管理文件访问者的分类(人)文件类型和访问权限(事物属性)文件权限值的表示方法文件访问权限的相关设置方法 file指令目录的权限粘滞位 总结 前言 linux的学习…...

android中gradle的kotlin编译配置选项
一、编译配置 1、Android中的配置 使用如下方式开启在Android中的gradle的kotlin编译配置: 该配置在其余平台不可用 android {...compileOptions {sourceCompatibility JavaVersion.VERSION_17targetCompatibility JavaVersion.VERSION_17}kotlinOptions {jvmTar…...

【知识串联】概率论中的值和量(随机变量/数字特征/参数估计)【考研向】【按概率论学习章节总结】(最大似然估计量和最大似然估计值的区别)
就我的概率论学习经验来看,这两个概念极易混淆,并且极为重点,然而,在概率论的前几章学习中,如果只是计算,对这方面的辨析不清并没有问题。然而,到了后面的参数估计部分,却可能出现问…...

NOIP2023模拟6联测27 点餐
题目大意 有 n n n样菜品,每样菜品都有两个权值 a i a_i ai和 b i b_i bi,如果你选择了 k k k个菜品,分别为 p 1 , … , p k p_1,\dots,p_k p1,…,pk,则你的花费为 ∑ i 1 k a p i max i 1 k b p i \sum\limits_{i…...

AMEYA360:类比半导体重磅发布车规级智能高边驱动HD7xxxQ系列
致力于提供高品质芯片的国内优秀模拟及数模混合芯片设计商上海类比半导体技术有限公司(下称“类比半导体”或“类比”)宣布推出重磅新品车规级智能高边驱动HD7xxxQ系列。该系列产品包括车规级单通道高边驱动HD70xxQ和车规级双通道智能高边驱动HD70xx2Q,提供不同通道…...

【HarmonyOS】鸿蒙操作系统架构
HarmonyOS架构 一. 鸿蒙系统定位二. 架构整体遵从分层设计三. HarmonyOS具有的技术特性四. HarmonyOS有三大特征 其它相关推荐: 软考系统架构之案例篇(架构设计相关概念) 系统架构之微服务架构 系统架构设计之微内核架构 所属专栏:系统架构设计师 一. 鸿…...

JSON数据
一、JSON介绍 Android应用程序界面上的数据信息大部分都是通过网络请求从服务器上获取到的,获取到的数据类型常见的就是JSON。JSON是一种新的数据格式,这种格式的数据不可以直接显示到程序的界面上,需要将该数据解析为一个集合或对象的形式才…...

金融领域:怎么保持电力系统连续供应?
银行作为金融领域的关键机构,依赖于高度可靠的电力供应,以保持银行操作的连续性。在电力中断或电力质量问题的情况下,银行可能面临严重的风险,包括数据丢失、交易中断和客户满意度下降。 UPS监控系统在这一背景下变得至关重要&…...

批量重命名文件夹:用数字随机重命名法管理您的文件夹
在文件管理中,文件夹的命名是一项至关重要的任务。一个好的文件夹命名方案可以帮助我们更高效地组织和查找文件。然而,随着时间的推移,我们可能会遇到文件夹数量过多,难以管理和查找的问题。为了解决这个问题,我们可以…...

RPC与HTTP的关系
首选理清楚关系 RPC与HTTP是两个不同维度的东西 HTTP 协议(Hyper Text Transfer Protocol),又叫做超文本传输协议,是一种传输协议,平时通过浏览器浏览网页网页,用到的就是 HTTP 协议。 而 RPC࿰…...

OpenCV #以图搜图:感知哈希算法(Perceptual hash algorithm)的原理与实验
1. 介绍 感知哈希算法(Perceptual Hash Algorithm,简称pHash) 是哈希算法的一种,主要用来做相似图片的搜索工作。 2. 原理 感知哈希算法(pHash)首先将原图像缩小成一个固定大小的像素图像,然后…...
Android多张图片rotation旋转角度叠加/重叠堆放
Android多张图片rotation旋转角度叠加/重叠堆放 <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"…...

HBuilderX 自定义语法提示
在开发实践中,会使用到各种第三方组件,比如Element UI,通常的做法是到官网中复制模板再在本地根据设计要求进行修改,或是从其它已经实现的组件中复制相似的内容。但每次复制粘贴确实比较麻烦。 在HBuilderx中可以设置代码块来创建…...

Leetcode—2562.找出数组的串联值【简单】
2023每日刷题(十四) Leetcode—2562.找出数组的串联值 实现代码 long long findTheArrayConcVal(int* nums, int numsSize){int left 0;int right numsSize - 1;long long sum 0;while(left < right) {if(left right) {sum nums[left];break;}…...

T0外部计数输入
/*----------------------------------------------- 内容:通过外部按键计数进入中断执行LED取反 ------------------------------------------------*/ #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的…...

分治法求解棋盘覆盖问题
分治法求解棋盘覆盖问题 如何应用分治法求解棋盘覆盖问题呢?分治的技巧在于如何划分棋盘,使划分后的子棋盘的大小相同,并且每个子棋盘均包含一个特殊方格,从而将原问题分解为规模较小的棋盘覆盖问题。 基本思路 棋盘覆盖问题是…...

爱写bug的小邓程序员个人博客
博客网址: http://www.006969.xyz 欢迎来到我的个人博客,这里主要分享我对于前后端相关技术的学习笔记、项目实战经验以及一些技术感悟。 在我的博客中,你将看到以下主要内容: 技术文章 我将会分享我在学习前后端技术过程中的一些感悟&am…...

selenium判断元素可点击、可见、可选
1、判断元素是否可以点击 判断元素是否可以点击,WebElement对象调用is_enabled() is_enabled()方法返回一个布尔值,若可点击返回:True。若不可点击则返回:False from selenium import webdriver import time from selenium.web…...

计算机网络重点概念整理-第六章 应用层【期末复习|考研复习】
计算机网络复习系列文章传送门: 第一章 计算机网络概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层 第七章 网络安全 计算机网络整理-简称&缩写 文章目录 前言六、应用层6.1 网络应用模型6.1.1 客户/服务器模式C/S模型6.1.2 P…...

html2pdf
页面布局时将需要保存在同一页pdf的dom元素用div包裹,并为该div添加class类名,例如.convertPDF,如果有多页创建多个.convertPDF这个div,再循环保存pdf即可 用到了html2canvas和JsPdf这两个插件,自行站内搜索安装 pdf页…...

css中页面元素隐藏
display:nonevisibility:hiddenopcity:0页面中不存在存在存在重排会不会不会重绘会会不一定自身绑定事件不触发不触发能触发transition不支持支持支持子元素可复原不能能不能被遮挡的元素可触发事件能能不能 其他: 1.设置height,width,margi…...

dp三步问题
三步问题 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 class Solution { public:int waysToStep(int n) {vector<int> dp(n1,1);if(n1) return 1;dp[1]1;dp[2]2;for(int i3; i<n1; i){dp[i] ((dp[i-1]dp[i-2])%1000000007dp[i-3])%100…...

结构体和联合体嵌套访问
在JSON项目中,使用了联合体和结构体之间的嵌套,但是在访问内部的联合体和结构体的时候出现了问题,这篇文章作为记录,也希望能帮助遇到相同问题的好伙伴。 struct lept_value {union {struct str{char *s;size_t len;};double n;}…...

Linux ———— 管理磁盘
(一)MBR硬盘与GPT硬盘 硬盘按分区表的格式可以分为MBR硬盘与GPT硬盘两种硬盘格式。 MBR 硬盘:使用的是旧的传统硬盘分区表格式,其硬盘分区表存储在MBR(Master Boot Record,主引导区记录)内。MBR位于…...

文字的编码
1 字符的编码方式 1.1 ASCII 是“American Standard Code for Information Interchange”的缩写,美国信息交换标准代码。电脑毕竟是西方人发明的,他们常用字母就 26 个,区分大小写、加上标点符号也没超过 127 个,每个字符用一个字…...

21.9 Python 使用Selenium库
Selenium是一个自动化测试框架,主要用于Web应用程序的自动化测试。它可以模拟用户在浏览器中的操作,如打开网页、点击链接、填写表单等,并且可以在代码中实现条件判断、异常处理等功能。Selenium最初是用于测试Web应用程序的,但也…...