Jmeter的使用说明

news2024/10/7 8:29:01

一、安装Jmeter工具

链接:https://pan.baidu.com/s/1ZYc15eq9DO-r0ChKHxMXlg?pwd=ckcd 
提取码:ckcd 
--来自百度网盘超级会员V5的分享

二、Jmeter的常用元器件说明

jmeter八大元件件:取样器,前置处理器,后置处理器,断言,监听器,配置元件,逻辑控制器,定时器

1、取样器:指用来发请求的,包括http请求,JDBC请求,Websocket请求, RPC请求,部分协议可能需要自己做二次开发如mongodb压测,mq压测

2、前置处理器:指在每个请求发送之前开始执行的,一般是在取样器开始之前执行
在这里插入图片描述
3、后置处理器,一般是取样器执行完毕才执行,主要是处理请求后的响应,比如关联,需要把接口返回的数据存在后置处理器中
在这里插入图片描述
4、配置元件:元件会影响其作用范围内的所有元件,元件对其作用范围内的每一个sampler有效,主要包括http信息头管理器,cookie管理器等
在这里插入图片描述
5、断言:主要指响应断言,json断言等,元件对其作用范围内的每一个sampler元件执行后的结果校验,可以添加多个断言
在这里插入图片描述
6、 监听器:元件收集其作用范围的每一个取样器的信息并呈现
在这里插入图片描述
7、逻辑控制器:元件只对其子节点的取样器有效
在这里插入图片描述
8、定时器:元件对其作用范围内的每一个取样器有效
在这里插入图片描述
关于元器件的执行顺序:
  在同一作用域名范围内,测试计划中的元件按照如下顺序执行。
  (1)配置元件(config elements )
  (2)前置处理程序(Per-processors)
  (3)定时器(timers )
  (4)取样器(Sampler)
  (5)后置处理程序(Post-processors) (除非Sampler 得到的返回结果为空)。
  (6)断言(Assertions)(除非Sampler 得到的返回结果为空)。
  (7)监听器(Listeners)(除非Sampler 得到的返回结果为空)。

 
关于执行顺序,有两点需要注意,避免踩坑:
  * 前置处理器、后置处理器和断言等元件只能对取样器作用,如果在它们的作用域内没有任何取样器,则不会被执行
  * 如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序一次执行

三、接口设计,断言设计

1、接口设计,测试字段(Field to test):表示在何种内容中匹配预期字段,一般选择响应文本。
① 响应文本:接口的Response的全部数据
② 响应代码:取样器结果中的Response code,常见的有200(成功)、302(重定向)、404(不存在)、400(参数错误)、500(服务器错误)等。但当我们要验证404,501等http响应代码时,需要勾选 ignore status,因为当http响应代码为404、500时,JMeter会默认这个请求是失败的。
③ 响应信息:取样器结果中的Response message
④ 响应头:响应数据的Response headers
⑤ 请求头:请求的Request headers
⑥ URL样本:有跟随重定向时,URL样本包含了请求的URL和重定向的URL,否则只包含请求URL。

额外知识点:

模式匹配规则(Pattern Matching Rules):即响应数据与预期值的对比方式。
① 包括(Contains):响应数据包含预期值(相当于String的contains方法),则判定接口成功。支持正则匹配。
② 匹配(Matches): 用正则表达式匹配返回结果,且必须能匹配整个返回值,而不是返回值的一部分。
③ 相等(Equals):响应数据与预期值完全相同才判定接口成功。不支持正则表达式。
④ 字符串(Substring):与【包括】类似,但不支持正则匹配。
⑤ 否(Not):取反,也就是前面【包括】等判定结果为true,断言结果为false。反之,前面判定为false,断言结果为true。
⑥ 或者(Or):勾选此项后,可以设置多个预期值,只要有一项判定成功,则断言判定成功。

⑦ 测试模式(Patterns to test):预期值表达式,可以是正则表达式,也可以是字符串。可以通过【添加】按钮添加一个或多个,有多个的话,不勾选【模式匹配规则】中的【或者】,则为并集模式,即全部匹配成功才断言成功。
⑧ 自定义失败消息(Custom failure message):当判断返回值为错误的时候,自定义的失败消息会在断言结果中显示。

实战例子:

① 请求百度
在这里插入图片描述
② 响应数据
在这里插入图片描述
③ 在【百度一下】请求下添加响应断言:
在这里插入图片描述
④ 执行请求,查看结果树:
在这里插入图片描述
结果被标红,接口判定为失败。可见,你预设的断言决定了接口是否被判定成功。把上面断言中的“百度两下”改为“百度一下”,再次执行,则接口判定为成功。

⑤ JSON断言针对响应结果是applicaton/json格式的请求进行断言。
在这里插入图片描述
⑥ 在取样器下右键–>添加–>断言–>JSON断言,就创建了一个JSON断言,界面如下:
在这里插入图片描述

下面进行一个实例演练

首先,创建一个Beanshell取样器模拟接口,返回JSON数据。
在这里插入图片描述

return "{\"code\":0,\"message\":\"操作成功\",\"data\":{\"student\":[{\"name\":\"zhangxu\",\"age\":18},{\"name\":\"zhoushuang\",\"age\":18},{\"name\":\"changhua\",\"age\":17}]}}";

在该取样器下添加JSON断言
在这里插入图片描述

这里解释一下【JSON Path expression】的写法,首先$.这部分是固定写法,后面根据层级关系去逐级获取数据。

1、$.data表示在JSON串以"data"为key获取value,也就是{“student”:[{“name”:“zhangxu”,“age”:18},{“name”:“zhoushuang”,“age”:18},{“name”:“changhua”,“age”:17}]}。
2、$.data.student对应的是[{“name”:“zhangxu”,“age”:18},{“name”:“zhoushuang”,“age”:18},{“name”:“changhua”,“age”:17}],因此要通过索引定位到数组中的具体对象,也就是$.data.student[0]获取到了{“name”:“zhangxu”,“age”:18}
3、$.data.student[0].name就定位到了“zhangxu”这个值。

运行脚本,察看结果树显示接口成功。

如果我们把Expected value改为"zhangxuhahha",再次运行,发现接口被判定失败:
在这里插入图片描述

BeanShell断言

这种断言是应对复杂校验的利器,为什么这么说呢?因为BeanShell断言可以写较复杂的逻辑判断来对结果进行校验。

还以上边接口中的模拟接口为例,创建一个Beanshell断言:
在这里插入图片描述
运行脚本,察看结果树:
在这里插入图片描述
上边只是一个非常简单的示例

大小断言 & 断言持续时间

大小断言:判断响应结果选定部分的字节大小是否与预期的值相符。

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

断言持续时间:判断接口的响应时间是否小于等于设定值。

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

四、数据依赖,关联处理

举例说明:系统的其他功能需要登录接口返回的token或者sessionid(后面的接口需要用到前面接口返回的信息)
  1. json格式信息提取
    ①将返回的数据使用json path tester转化为json格式,使用JSON Path Expression,提取返回json数据的表达式有绝对路径和相对路径之分:

绝对路径: . 变 量 名 相 对 路 径 : .变量名 相对路径: .…变量名

如果是嵌套的数据,使用.一级级往里面取就行了,例如:{“key1”:{“key2”:{“key3”:“xxxxx”}}},提取式:$.key1.key2.key3,如果是这种格式的{“data”:[{“key1”:“value1”,“key2”:“value1”},
{“key3”:“value1”,“key4”:“value1”}
]}

提取表达式需要根据下标取提取:$data[下标值].key
在这里插入图片描述

上面的数据格式如果使用绝对路径提取表达式写为: . d a t a [ 1 ] . k e y 3 相 对 路 径 的 提 取 表 达 式 写 为 : .data[1].key3 相对路径的提取表达式写为: .data[1].key3…key3

在这里插入图片描述
②将数据提取出来后,在需要依赖上个接口数据的接口请求中,添加–后置处理器–JSON取样器
在这里插入图片描述
③提取单个值:在需要提取返回数据的接口下添加json提取器(例如充值接口需要提取登录接口中需要的数据,那么就需要在登录接口中添加json提取器,自己第一次将json提取器添加到充值接口中,导致提取不到数据,实际就是json 提取器添加错了)
在这里插入图片描述
将json提取器添加到登录接口,就可以提取登录后的token值了(注意:要提取哪个接口的返回的数据,就添加在哪个接口下)
在这里插入图片描述
json表达式相对路径和绝对路径,第一种方式 . d a t a . t o k e n i n f o . t o k e n ; 第 二 种 .data.token_info.token ;第二种 .data.tokeninfo.token;…token
在这里插入图片描述
将登录接口中提取的token值,将表达式放在充值接口中,下次充值接口发送请求就会携带token信息
在这里插入图片描述
充值接口发送请求后会携带token信息,请求成功
在这里插入图片描述
④提取多个值:提取表达式之间使用;间隔开,一定要设置默认的值,不然会导致数据提取不出来,如果取不到值那么就会返回设置的默认值。
在这里插入图片描述
在这里插入图片描述
2.正则表达式提取器
经常有接口可能返回这种类型数据,我们需要提取data中的某个key的值,因为data对应的值是字符串格式的,那么这时候就只能使用正则表达式提取器提取其中的信息。
在这里插入图片描述
在这里插入图片描述
例如要提取返回相应数据中的code的值
在这里插入图片描述
在正则表达式提取器中,设置引用名称,填写正则表达式,模板: 1 1 1代表去第一个括号的值

在这里插入图片描述
在这里插入图片描述
提取多个值
在这里插入图片描述
提取成功,但是提取的两个值进行拼接后赋值给了recode,如果要将两个值单独拿出来使用,使用:变量名_g1,变量名_g2方式获取值,使用recode_g1和recode_g2,这两个数据是将recode的数据进行拆分所以可以单独使用
在这里插入图片描述

五、常用插件应用

以下插件都需要自己百度下载安装成功后才会在Jmeter展示

1、jmeter-plugins.org

启动jemter,点击选项,最下面的一栏,如下图所示:
在这里插入图片描述
打开后界面如下:
在这里插入图片描述

Installed Plugins(已安装的插件):即插件jar包中已经包含的插件,可以通过选中勾选框,来使用这些插件;

Available Plugins(可下载的插件):即该插件扩展的一些插件,可以通过选中勾选框,来下载你所需要的插件;

Upgrades(可更新的插件):即可以更新到最新版本的一些插件,一般显示为加粗斜体,可以通过点击截图右下角的Apply Changes and Restart Jmeter按钮来下载更新;

PS:一般不建议进行更新操作,因为最新的插件都有一些兼容问题,而且很可能导致jmeter无法使用(经常报加载类异常)!!!

2、Transactions per Second

即TPS:每秒事务数,性能测试中,最重要的2个指标之一。该插件的作用是在测试脚本执行过程中,监控查看服务器的TPS表现————比如整体趋势、实时平均值走向、稳定性等。

jmeter本身的安装包中,监视器虽然提供了比如聚合报告这种元件,也能提供一些实时的数据,但相比于要求更高的性能测试需求,就稍显乏力。

通过上面的下载地址下载安装好插件后,重启jmeter,从监视器中就可以看到该插件,如下图所示
在这里插入图片描述
某次压力测试TPS变化展示图:
在这里插入图片描述

3、Response Times Over Time

即TRT:事务响应时间,性能测试中,最重要的两个指标的另外一个。该插件的主要作用是在测试脚本执行过程中,监控查看响应时间的实时平均值、整体响应时间走向等。

使用方法如上,下载安装配置好插件之后,重启jmeter,添加该监视器,即可实时看到实时的TRT数值及整体表现。

某次压力测试TRT变化展示图:
在这里插入图片描述

4、PerfMon Metrics Collector

即服务器性能监控数据采集器。在性能测试过程中,除了监控TPS和TRT,还需要监控服务器的资源使用情况,比如CPU、memory、I/O等。该插件可以在性能测试中实时监控服务器的各项资源使用。
在这里插入图片描述
将ServerAgent-2.2.1.jar上传到被测服务器,解压,进入目录,Windows环境,双击ServerAgent.bat启动;
linux环境执ServerAgent.sh启动,默认使用4444端口。

如出现如下图所示情况,即表明服务端配置成功:
在这里插入图片描述
①、服务端启动校验
CMD进入命令框,观察是否有接收到消息,如果有,即表明ServerAgent成功启动。
②、客户端监听测试
给测试脚本中添加jp@gc - PerfMon Metrics Collector监听器,然后添加需要监控的服务器资源选项,启动脚本,即可在该监听器界面看到资源使用的曲线变化。如下图所示:
在这里插入图片描述
在脚本启动后,即可从界面看到服务器资源使用的曲线变化,Chart表示主界面显示,Rows表示小界面以及不同资源曲线所代表的颜色,Settings表示设置,可选择自己需要的配置。

PS:注意测试脚本需要持续运行一段时间,才可以看到具体的曲线变化,否则ServerAgent端会断开连接!

六、常用的逻辑控制器(事务控制器,循环控制器)

1、事务控制器
1.1 打开方式:
鼠标右键)线程组—>(鼠标悬停)添加—>(鼠标悬停)逻辑控制器—>(左键点击)事务控制器。 如下图所示:
在这里插入图片描述
1.2 参数详解
我们在控制器里面会看到2个勾选框,我们来一起看下这个框有什么作用,如下图所示:
在这里插入图片描述
Generate parent sample :

   不勾选:当不勾选的时候,这里就是会和平常执行http请求没啥2样,在我们通过聚合报告查看结果的时候,有多少个http请求上面就有多少个结果,互补干预
   
    勾选:将逻辑处理器下面的http请求当成一个整体来统计,我们在聚合报告或其他的一些监控功能的时候,看到的就只有一条数据,哪怕你在处理器下添加了100条http请求,在统计的时候也是算一条
    
    lnclude duration of timer and pre-post processors in generates sample:
    
    不勾选:啥事没有
    
    勾选:问题就来了,当勾选后,我们执行的时候,可能会加一些计时器啊等一些占用时间的插件,但是,这个时间是属于接口的执行时间吗,当然不是,但是,当你勾选后,jmeter就会把这个时间统计成接口执行的时间了,所以,这里如果没有特殊需求的话,还是别选好。

2、循环控制器
2.1打开方式
鼠标右键)线程组—>(鼠标悬停)添加—>(鼠标悬停)逻辑控制器—>(左键点击)循环控制器。 如下图所示:
在这里插入图片描述
2.2 参数详解
里面就2个参数,勾选永远的话,控制器下面的请求一直都在执行,如果不勾选永远,选择输入数字,那控制器下的请求就根据你输入的次数来执行多少次。很简单的控制器。运用场景很广
在这里插入图片描述

天才有两种,一种是天生的,一种是像我这么努力的。

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

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

相关文章

计算机网络——第六章笔记(1)

传输层 传输层是层是整个协议栈(TCP/IP)的核心。 任务:是提供可靠的、高效的数据传输。 面向连接的服务 1、端到端的连接管理 建立连接 数据传输 释放连接 2、流控制 3、差错控制 传输环境:通信子网、物理信道。 传输服务和网络服务的两个主…

网络了解编程五层协议

一:了解 1.了解一下网络: 局域网(LAN),一个上课的机房,多个连在同一个路由器上的设备,就是在一个局域网中---打游戏 (局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的) 广域网(WAN) ,…

无线 LAN 服务概述

无线 LAN 服务是 Windows Server 2008 R2 和 Windows Server 2008 中的一项功能,可用于启用无线 WLAN 自动配置服务,以及配置 WLAN 自动配置以自动启动。一旦启用后,WLAN 自动配置会动态选择计算机将自动连接的无线网络,并配置无线…

项目管理的四大模型,PM必懂的事半功倍模型!

瀑布模型、迭代模型、增量模型、原型模型,是项目管理常见的四种模型。每种模型都有其优缺点和适用的项目类型。项目经理针对不同的项目用对模型,才能起到事半功倍的作用。 今天就讲讲这四种模型及其优缺点: 如果你需要项目管理相关资料可拉…

代码质量与安全 | “吃狗粮”能够影响到代码质量?来了解一下!

“dogfooding”是什么?乍一看,这就是“吃狗粮”的意思,但其实这来源于一句俚语:“Eat your own dog food”,直译过来就是“吃自己的狗粮”,常用于描述公司使用自己产品的这一种情况。 “吃自己的狗粮”实践…

(更新中)【后端入门到入土!】Java+Servlet+JDBC+SSM+SpringBoot+SpringCloud 基础入门

目录 第一部分:Java 基础语法(已完结) 第二部分:Java 高级(已完结) 第三部分:Servlet(待更新……) 第四部分:JDBC(待更新……) 第…

如何搭建一套指标体系?

一、引言 (1)为什么指标体系这么重要? (2)什么是指标体系? (3)指标体系的衡量标准是什么? (4)如何去搭建一套好好的指标体系? 只要弄清楚了这4个问题,指标体系的搭建工作就迅速地开展、快速地落地,精准地产生业务价值。以上是对于数据同学而言的工作。此外,对于…

漏洞练习环境搭建笔记

Docker 安装(ubuntu) 1.常归删除操作 sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd runc 2. 删除docker其他没有没有卸载 dpkg -l | grep docker dpkg -l |grep ^rc|awk ‘{print $2}’ |sudo xargs dpkg -P # 删除无…

雷神MixBook Air笔记本系统故障怎么重装?

雷神MixBook Air笔记本系统故障怎么重装?有用户使用的雷神MixBook Air笔记本系统出现了故障,导致无法正常的使用电脑了。这个情况我们可以使用U盘来重装一个系统,恢复正常的使用。那么具体要怎么去进行操作,看看具体的方法吧。 准…

python多维数组切片

1、数组a第0个元素(二维数组)下的所有子元素(一维数组)的第一列 import numpy as np bnp.arange(24) ab.reshape(2,3,4) print a print a[0,:,0] 2、取所有二维数组下的每个二维数组的第0个元素(一维数组) …

会计部门通过数字化工作流程提高生产力

会计部门通过数字化工作流程提高生产力 基于纸张的会计流程令人担忧,在一些企业中,基于纸张的会计流程正在削弱企业的竞争力。 现在,企业高管们比以往任何时候都更想知道哪些技术在数字业务战略中作用最大,在简化会计流程方面&…

机器学习模型评价指标

前文:https://www.cnblogs.com/odesey/p/16902836.html 如果图不能加载,请查看原文:https://www.cnblogs.com/odesey/p/16907351.html 介绍了混淆矩阵。本文旨在说明其他机器学习模型的评价指标。 1. 准确率(Accuracy-Acc&#xf…

企业新闻媒体资源有哪些类型?从哪里找?

互联网时代,人们获取信息的来源主要就是网络。企业想要将自己的品牌或是产品推广出去,互联网宣传是很重要的步骤。 企业新闻媒体发稿推广是打响品牌知名度、做好全网营销的第一步。新闻媒体宣传不仅仅性价比很高,同时持续时间长,…

细说智能家居新标准-Matter,蓝牙在智能家居中发挥的作用

Matter是在连通性标准联盟(CSA)下开发的互操作性协议。其联盟成员包括最大的智能家居技术制造商,如Amazon、Apple、Google、Samsung和其他400多家企业。Matter的通用性和开放性使物联网设备能够安全地连接和交互,无论制造商。例如&#xff0c…

Linux终端上传、下载文件命令 lrzsz

一、什么是lrzsz? lrzsz是一款在linux里可代替ftp上传和下载的程序。 二、为什么要用它? 一般来说我们自然是用不着的,上传下载ftp工具都很方便,前提是你账户拥有最高权限,但如果你不是ROOT,做创建删除上传…

使用 ISAR 数据库提供离线 Flutter 支持

使用 ISAR 数据库提供离线 Flutter 支持 译文 https://medium.com/tkarmakar27112000/flutter-offline-support-using-isar-database-b79f5006d3a 前言 这是我的口头禅,我试图遵循我的 应用 application 。对于那些针对二三线城市的面向客户的应用程序,应…

Model Fusion via Optimal Transport论文阅读+代码解析

论文地址点这里 一. 论文基本介绍 最近2023ICLR中的一篇论文被曝抄袭一事,而进行举报的作者就是本次要将的论文的作者之一,可以发现本篇论文的工作是非常不错的。本篇论文也是第一个从最优运输地角度考虑模型之间地融合技术,通过排列神经元…

Snort搭建以及规则编写

目录 Snort IDS Snort搭建 安装web服务,方便设置sonrt后期访问 Mysql安装 PHP安装 安装 Snort Snort配置 创建snort专用的用户和组 配置目录 配置规则 修改配置文件 规则编写 Snort IDS Snort IDS(入侵检测系统)是一个强大的网…

Airtest自定义启动器支持批量运行脚本,并兼容在AirtestIDE中使用

小编注:上期详细讲了Airtest启动器的原理,以及在最后给出了2个实现方案。本次是第2个方案的另一个实现案例,供大家学习参考。 Python v3.7.0 / Airtest: 1.1.1 / PocoUI: 1.0.78 自定义的启动器主要实现了以下功能: 将一些公共…

浙大医疗健康产业管理MBA提面经验分享

各位潜在的学弟学妹们好,很高兴和各位分享下我参加2022年浙大医疗产业管理MBA的提前批面试经验。在经过材料的撰写提交、面试备考各环节后顺利拿到优秀资格,为后面的笔试备考减轻了很大压力,回忆起去年的面试过程,我的面试以及备考…