【Jmeter】使用Jmeter进行接口测试、跨线程组获取参数

Jmeter接口测试

  • Jmeter设置成中文
  • 实操练习-跨线程组提取参数,使用值
  • HTTP请求默认值&HTTP信息头管理器

相信打算从事测试工程师的同学们,肯定对Jmeter是耳熟能详的。使用Jmeter可以进行接口测试、性能测试、压力测试等等;这个章节介绍如何使用Jmeter针对【登录查询图纸组】的相关接口测试。

Jmeter设置成中文

Jmeter语言设置如下,可设置为中文简体

在这里插入图片描述

Jmeter首页:打开Jmeter首页默认为下方所示,左侧默认一个“测试计划”,点击测试计划,右侧显示如下,一定要勾选上“独立运行每个线程组(例如在一个组运行结束后启动下一个)”,不然,比如在登录场景,后面的接口需要获取到登录的令牌token进行验证,点击执行可能会出现一些难以发现的错误,而这些错误其实就是因为执行的顺序出现了错误,导致有些参数获取不到。

在这里插入图片描述

实操练习-跨线程组提取参数,使用值

1. 创建一个线程组: 鼠标右击测试计划,选择添加,选择线程,选择线程组

在这里插入图片描述
在这里插入图片描述

HTTP请求默认值&HTTP信息头管理器

当我们在jmeter上创建多个http的请求时,每个请求都需要重新的在请求里添加协议,端口号和路径等,会重复操作很多次,因此使用jmeter上的http请求默认值可以解决这个麻烦。所有在该请求默认值层级下的HTTP请求都会默认带上这个请求值,于是我们只需要选择每个HTTP的请求方法和路径即可。

2. 创建一个HTTP请求默认值: 表示当前层级下所有HTTP请求都会默认带上这个请求默认值;
操作步骤: 右击测试计划、选择添加、选择配置元件、选择HTTP请求默认值。
Jmeter的作用域: 在测试计划层级下创建一个HTTP请求默认值,表示测试计划层级下的所有HTTP请求都会带上这个默认值,如果该层级下某个HTTP请求填写了协议、域名,那么不会去拿请求默认值里的协议、域名,以自己填写的值为准。类似于全局变量和局部变量的作用域。

  • 字段解释:以这类接口为例https://www.ceshi.com:8080/auth/password

    1. 协议:即当前接口遵守的是HTTP协议 还是 HTPPS协议,此处填写https
    2. 服务器名称或IP:填写当前接口的前缀域名,那么此处就填写www.ceshi.com
    3. 端口号:没有就不填写,此处可填写8080
    4. 路径:可不填写
    5. 内容编码:可填写utf8

请添加图片描述

创建一个HTTP信息头管理器: 如果不创建信息头管理器,那么后续的HTTP请求可能就会报错,原因就是HTTP请求里的请求头错误。此操作也是有作用域,Jmeter的每个操作都存在作用域。笔者是在测试计划下创建的信息头管理器,那么意味着所有的HTTP请求都会带上这个请求头内容。

在这里插入图片描述
在这里插入图片描述

3. 添加一个HTTP请求: 鼠标右击线程组、选择取样器、选择HTTP请求

请添加图片描述

4. 添加接口路径 :由于在HTTP请求默认值里填写了协议类型和IP,所有后面的HTTP请求我们只能填写请求方法类型和路径;这里的参数是JSON格式的,于是可以选择 “消息体数据”。
$ {username}、$ {password}:是Jmeter的固定语法,用于获取自定义参数、获取从其他接口里提取到的参数;不会Jmeter语法的同学可以搜索自学一下哦~

在这里插入图片描述

5. 创建一个自定义参数: 右击HTTP请求,选择添加,选择配置元件,选择用户定义的变量。
名称(变量):即上一步操作写的$ {username} 里的username
值(变量取值):就是username里存放的值。

请添加图片描述

6. 添加一个查看结果树:可以查看每个HTTP请求的返回内容,根据返回的内容,在下一步里的JSON提取器里填写JSON Path expressions,前提是返回的内容必须是JSON格式的。当然如果不是JSON格式,那么需要使用其他的提取器。

  • 右击测试计划,创建一个“查看结果树”,那么所有线程组里的HTTP请求返回的响应都可以在这个结果树里查看。
    在这里插入图片描述
  • 点击运行,查看结果树内容

在这里插入图片描述

  • 测试是否可以提取到值:JsonPath解析器可以参考下这个网站

在这里插入图片描述

6.1 添加一个JSON提取器: 方便后面的查询操作,有权限访问查询接口。右击HTTP请求,选择添加,选择后置处理器吗,选择JSON提取器。

在这里插入图片描述

  • 填写提取器里的内容:Names of created variables=token,JSON Path expressions=$.data,Match No. (0 for Random)=1,Defaylt Values=null;关于不会这个Json语法表达式的同学,可以去度娘搜索一下,学习一下~

在这里插入图片描述

  • Names of created variables: 自定义一个变量名,把提取到的值存放在这个变量里。可以多个,用分号;进行分隔。
  • JSON Path expressions: 使用JSON语法的表达式,提取值。可以填写多个,要求与变量名数量一致,用分号;进行分隔。
  • Match No. (0 for Random): 表示提取几个值。
    • 此处取值有:0代表随机、-1代表所有,1则代表取值第1个,2则代表取值第2个,以此类推。
  • Compute conxatenation var (suffix_ALL): 该选项如果勾选,则将所有的值用逗号拼接,并保存到一个变量中。注意只有Match NO为-1时该功能打钩才有效果。
  • Defaylt Values: 当提取不到值时,返回一个默认值,用户自定义,可以多个,注意当变量名为多个时,默认值也要求多个。

Apply to:作用范围(返回内容的取值范围)

  • Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器。

  • Main sample only:仅作用于父节点的取样器。(选默认的 main sample only 就行了)

  • Sub-samples only:仅作用于子节点的取样器。

  • JMeter Variable Name to use:作用于JMeter变量(输入框内可输入JMeter的变量名称),从指定变量中提取需要的值。

  • 和JSON提取器配套使用的操作有:调试取样器。右击当前的线程组,选择添加,选择取样器,选择Debug Sampler,可以在结果树里查看这个调试取样器的结果,方便查看JSON提取器提取到的值是否正确
    在这里插入图片描述

  1. 添加一个BeanShell 后置处理程序,用于跨线程组获取参数值

在这里插入图片描述
在这里插入图片描述

  • 生成一个函数
    在这里插入图片描述
  • 把函数字符串复制到BeanShell 后置处理程序里

在这里插入图片描述

  1. 设置一个断言:在对应的HTTP请求下,右击,选择添加, 选择断言,选择响应断言,添加测试模式(可以填写这个HTTP请求响应里的内容,一般填写code:200和msg:成功)

请添加图片描述

  1. 重复前面的创建线程组的步骤,在该线程组下创建一个HTTP请求用来操作查询图纸

在这里插入图片描述

10.在HTTP请求下,创建一个HTTP信息头管理器:右击HTTP请求,选择添加,选择配置元件,选择HTTP信息头管理器

在这里插入图片描述

  • 点击函数助手,选择property,此处的Name of Property填写BeanShell 后置处理程序的Name of Property,点击生成,最后把函数字符串复制下来。
    在这里插入图片描述
  • 在刚才第10步创建的HTTP信息头管理器里新增一条信息:
    在这里插入图片描述
  1. 最后点击运行,查看结果树,发现可以提取参数值,跨线程组使用这个值

在这里插入图片描述

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

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

相关文章

cocos 通过 electron 打包成 exe 文件,实现通信问题

cocos 通过 electron 打包成 exe 文件,实现通信问题 首先,我使用的 cocos 版本是 2.4.12,遇到一个问题,是啥子呢,就是我要把用 cocos 开发出来的项目打包成一个 exe 可执行程序,使用的是 electron &#xf…

【C++算法】BFS解决多源最短路问题相关经典算法题

1.01矩阵 既然本章是BFS解决多源最短路问题,也就是说有若干个起点,那我们就可以暴力一点,直接把多源最短路径问题转化成若干个单源最短路径问题,然后将每次的步数比较一下,取到最短的就是最短路径的结果,这…

arcgis 10.6 工具栏操作error 001143 后台服务器抛出异常

arcgis 10.6 工具栏操作error 001143 后台服务器抛出异常 环境 win10arcgis 10.6 问题 执行定义投影要素转线出现 Error: 001143:后台服务器抛出异常(差点重装10.6) 如下图所示: 解决方法 通过在菜单工具条上单击地理处理 > 地理处…

设计模式使用(成本扣除)

前言 名词解释 基础名词 订单金额:用户下单时支付的金额,这个最好理解 产品分成:也就是跟其他人合做以后我方能分到的金额,举个例子,比如用户订单金额是 100 块,我方的分成是 80%,那么也就是…

OceanMind海睿思通过上海数交所数商认证,提供高质量数据治理和数据咨询服务

近日,中新赛克海睿思成功通过上海数据交易所的数商认证,获得上海数据交易所颁发的“数据产品开发服务商”、“数据治理服务商”和“数据咨询服务商”三大证书。 作为由深圳市创新投资集团有限公司投资控股的高新技术企业,国家级专精特新“小巨…

如何通过OpenHarmony的音频模块实现录音变速功能?

简介 OpenAtom OpenHarmony(以下简称“OpenHarmony”)是由开放原子开源基金会孵化及运营的开源项目,是面向全场景、全连接、全智能时代的智能物联网操作系统。 多媒体子系统是OpenHarmony系统中的核心子系统,为系统提供了相机、…

Java入门基础学习笔记43——包

什么是包? 包是用来分门别类的管理各种不同程序的,类似文件夹,建包有利于程序的管理和维护。 建包的语法规则: package cn.ensource.javabean;public class Car() {} 在自己的程序中调用其他包下的程序的注意事项: 1…

动手学深度学习——层和块

1. 层 层是一个将输入数据转换为输出数据的神经网络组件。每个层都会对输入数据进行一定的操作,例如线性变换、非线性激活函数等,以产生输出数据。 torch.nn模块提供了各种预定义的层,如线性层、卷积层、池化层等, nn.Linear&a…

BLE学习笔记(0.0) —— 基础概念(0)

前言 (1)本章节主要是对BLE技术进行简单的介绍,熟悉蓝牙技术的发展过程,了解相关术语方便后续的学习。 (2)为了防止单篇博客太长以至于看不下去,因此我基础概念章节分为两篇来写。 (…

Mysql教程(0):学习框架

1、Mysql简介 MySQL 是一个开放源代码的、免费的关系型数据库管理系统。在 Web 开发领域,MySQL 是最流行、使用最广泛的关系数据库。MySql 分为社区版和商业版,社区版完全免费,并且几乎能满足全部的使用场景。由于 MySQL 是开源的&#xff0…

1075: 求最小生成树(Prim算法)

解法&#xff1a; 总结起来&#xff0c;Prim算法的核心思想是从一个顶点开始&#xff0c;一步一步地选择与当前最小生成树相邻的且权值最小的边&#xff0c;直到覆盖所有的顶点&#xff0c;形成一个最小生成树。 #include<iostream> #include<vector> using names…

springboot基于Web前端技术的java养老院管理系统_utbl7

3.普通用户模块包括&#xff1a;普通会员的注册、养老院客房查询、养老院留言查询、预约老人基本信息登记、选择房间、用户缴费的功能。 4.数据信息能够及时进行动态更新&#xff0c;增删&#xff0c;用户搜素方便&#xff0c;使用户可以直接浏览相关信息&#xff0c;要考虑便于…

Vue3实战笔记(35)—集成炫酷的粒子特效

文章目录 前言一、vue3使用tsparticles二、使用步骤总结 前言 学习一个有趣炫酷的玩意开心一下。 tsparticles&#xff0c;可以方便的实现各种粒子特效。支持的语言框架也是相当的丰富. 官网&#xff1a;https://particles.js.org/ 一、vue3使用tsparticles 先来个vue3使用…

代码随想录训练营打卡第36天:动态规划解决子序列问题

1.300最长递增子序列 1.问题描述 找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。 2.问题转换 从nums[0...i]的最长的递增的子序列 3.解题思路 每一个位置的n…

C++多态详解

目录 一、多态的概念 二、多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写 4.例题理解&#xff08;超级重要&#xff0c;强烈建议做一下&#xff09; 5.C11 override和 final 6.重载、覆盖&#xff08;重写&#xff09;、隐藏&#xff08;重定义&#xff0…

零基础代码随想录【Day42】|| 1049. 最后一块石头的重量 II,494. 目标和,474.一和零

目录 DAY42 1049.最后一块石头的重量II 解题思路&代码 494.目标和 解题思路&代码 474.一和零 解题思路&代码 DAY42 1049.最后一块石头的重量II 力扣题目链接(opens new window) 题目难度&#xff1a;中等 有一堆石头&#xff0c;每块石头的重量都是正整…

(Qt) 默认QtWidget应用包含什么?

文章目录 ⭐前言⭐创建&#x1f6e0;️选择一个模板&#x1f6e0;️Location&#x1f6e0;️构建系统&#x1f6e0;️Details&#x1f6e0;️Translation&#x1f6e0;️构建套件(Kit)&#x1f6e0;️汇总 ⭐项目⚒️概要⚒️构建步骤⚒️清除步骤 ⭐Code&#x1f526;untitled…

【EasyX】快速入门——消息处理,音频

1.消息处理 我们先看看什么是消息 1.1.获取消息 想要获取消息,就必须学会getmessage函数 1.1.1.getmessage函数 有两个重载版本,它们的作用是一样的 参数filter可以筛选我们需要的消息类型 我们看看参数filter的取值 当然我们可以使用位运算组合这些值 例如,我们…

华为CE6851-48S6Q-HI升级设备版本及补丁

文章目录 升级前准备工作笔记本和交换机设备配置互联地址启用FTP设备访问FTP设备升级系统版本及补丁 升级前准备工作 使用MobaXterm远程工具连接设备&#xff0c;并作为FTP服务器准备升级所需的版本文件及补丁文件 笔记本和交换机设备配置互联地址 在交换机接口配置IP&#…

Facebook隐私保护:数据安全的前沿挑战

在数字化时代&#xff0c;随着社交媒体的普及和应用&#xff0c;个人数据的隐私保护问题日益受到关注。作为全球最大的社交平台之一&#xff0c;Facebook承载了数十亿用户的社交活动和信息交流&#xff0c;但与此同时&#xff0c;也面临着来自内外部的数据安全挑战。本文将深入…