[转帖]JMeter 接口测试快速入门
https://my.oschina.net/choerodon/blog/5289725
JMeter简介
JMeter 的特性:
对于多种协议的功能测试和性能测试
- Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
- SOAP / REST Webservices
- FTP
- Database via JDBC
- LDAP
- Message-oriented middleware (MOM) via JMS
- Mail - SMTP(S), POP3(S) and IMAP(S)
- Native commands or shell scripts
- TCP
- Java Objects
提供了测试录制
提供
CLI模式提供
HTML报告完全的可移植性和百分百的纯
Java提供多线程支持,模拟多用户
高扩展性 >这一节内容译自
JMeter首页:https://jmeter.apache.org/index.html笔者实验环境
JMeter是Java语言的实现,也就是纯Java应用,所以JMeter理论上可以运行于任何对应的Java环境可用的环境上。 |类型|值| |:—-|:—-| |Java版本|java version “1.8.0_181” (要求Java8及以上)| |JMeter版本|5.4.1| |操作系统|Ubuntu 20.04(GNOME 3.36.5)| |内核版本|Linux version 5.8.0-43-generic|
下载
本文主要介绍 JMeter 的快速入门,故其它环境由读者自行准备
- 进入官网页面(https://jmeter.apache.org/download_jmeter.cgi)选择合适的镜像源,下载二进制分发文件;
- 将压缩文件解压到本地后,
JMeter解压后得到的目录的路径称为JMETER_HOME;
JMeter文件简单介绍
| 文件路径(相对于 JMETER_HOME 目录) | 文件描述 |
|---|---|
| bin | 文件夹,里面存放可执行文件 |
| docs | 帮助文档目录 |
| extras | 扩展插件目录,目录下的文件提供了对ant的支持 |
| lib | JMeter用到的jar包 |
| bin/jmeter | 在linux和unix系统中启动JMeter客户端的可执行文件(本身是shell脚本) |
| bin/jmeter-server | 在linux和unix系统中启动JMeter服务进程的可执行文件(本身是shell脚本) |
| bin/jmeter.properties | JMeter的配置文件 |
| bin/jmeter.bat | Windows下启动JMeter客户端的可执行文件 |
| bin/jmeter-server.bat | Windows下启动JMeter服务进程的可执行文件 |
启动JMeter的用户界面
进入 JMETER_HOME 目录下的 bin 目录,执行以下命令启动 JMeter 的 GUI 模式:
./jmeter
几秒后,界面打开如下:

JMeter主要概念简介
| 概念 | 简介 |
|---|---|
| 测试计划 | 测试计划描述了JMeter需要执行的一系列步骤 |
| 线程组 | 线程组定义了执行的用户池(以并发方式模拟多个用户) |
| jmx文件 | 对应于一个测试计划的以(.jmx)结尾的文件,文件中是以xml格式组织的JMeter程序特定数据结构 |
| 采样器(sample) | 采样器可以对执行的目标进行采样(HTTP,JDBC等类型) |
| 前置处理器(pre-processor) | 对采样器进行前置处理(提供用户参数,等待指定时间等) |
| 后置处理器(post-processor) | 对采样器进行后置处理(结果提取器等) |
| 断言(assertions) | 对采样器得到的结果进行断言(响应时间断言,响应数据断言,响应的结构断言等) |
| 逻辑控制器(Logic controller) | 以逻辑的形式控制测试计划的执行步骤(If, While等) |
| 监听器(listener) | 在采样器执行结束后,监听器会被通知,一般监听器用于处理结果数据(展示结果数据,聚合图表等) |
| 配置元素(config element) | 能够为测试计划进行一些配置(请求头配置,通用请求配置,认证配置,变量配置等) |
JMeter主要功能元素简介(Http测试相关)
JMeter界面操作大部分是单击鼠标右键会弹出下拉菜单进行元素的添加
线程组
右键测试计划添加
组件截图:

组件参数说明:
| 参数名称 | 取值及含义 |
|---|---|
| 错误后的动作 | 继续(继续执行之后的步骤)、启动下一循环、停止线程(仅此线程)、停止测试(等正在执行的采样器执行结束后停止测试)、立即停止测试 |
| 线程数 | 要模拟的用户数量 |
| Ramp-Up时间(秒) | 预热时长。用于在执行的时间内将所有配置的数量的线程启动完毕。例如10s,线程数为10,则每隔1s启动一个线程(第一个线程总是立即启动的,如果总线程数为1,则无论预热时长取值多少,都等效于0) |
| 循环次数 | 永远(循环不停止)、指定数字(指定次数循环之后,停止执行) |
| 每次循环同一用户吗? | 是/否 |
HTTP请求默认值
鼠标右键单击线程组元素,从配置元件(config element)下拉项中添加
这个组件用于为作用范围内的HTTP采样器提供默认值。
组件参数说明:
| 参数名称 | 取值及含义 |
|---|---|
| 协议 | 是http协议还是https协议 |
| 服务器名称或IP | 域名或者IP地址 |
| 端口号 | 服务器的端口号 |
| 路径 | URL中的path部分 |
| 内容编码 | HTTP请求所使用的字符集编码 |
| 参数 | HTTP请求参数 |
| 消息体数据 | 默认的请求体的数据 |
用户定义的变量
鼠标右键单击线程组元素,从配置元件中选择添加
这个组件用于在线程中定义变量,可以在其它地方使用 ${variableName} 的语法进行引用。
在下列界面点击 添加 按钮添加一行变量名和值即可定义一个变量。
HTTP采样器
鼠标右键单击线程组元素,从采样器条目中选择
HTTP采样器可以使用 HTTP 请求的形式对被测系统进行采样(发起请求)。这个组件中很多数据和上文提到的 HTTP请求默认值 组件中的很多属性相同,如果此采样器在 HTTP请求默认值 组件作用范围内,则采样器中为空的属性会填入默认值,不为空的属性会覆盖 HTTP请求默认值 组件中相同的属性(就近)。
组件参数说明:
| 参数名称 | 取值及含义 |
|---|---|
| 协议 | 是http协议还是https协议 |
| 服务器名称或IP | 域名或者IP地址 |
| 端口号 | 服务器的端口号 |
| 路径 | URL中的path部分 |
| 内容编码 | HTTP请求所使用的字符集编码 |
| 参数 | HTTP请求参数(URL中的查询参数) |
| 消息体数据 | 请求体的数据 |
| 请求方法 | GET、POST、PUT、DELETE等HTTP方法 |
| 文件上传 | 用于上传文件 |
| 自动重定向 | 勾选表示自动重定向。表示下游的HTTP协议处理器会自动的重定向,所以重定向中间的过程对JMeter是不可见的。且只能用于GET和HEAD方法。POST和PUT方法会被拒绝。 |
| 跟随重定向 | 勾选后表示跟随重定向(仅当自动重定向未勾选时有效)。如果设置,JMeter的采样器会对响应进行处理,且会追踪过程中的每次重定向,并将最后一个未重定向的请求和响应作为最外层的采样数据,其它的请求的数据作为这个采样数据的附加信息。(最大重定向次数为20) |
| 使用KeepAlive | 勾选后,JMeter会设置请求头 Connection: keep-alive 。但是这个选项是否生效还和JMeter的HTTP实现有关 |
响应断言
鼠标右键单击采样器,点击【添加-断言-响应断言】选项添加
响应断言可以为采样器所得的结果进行断言,以逻辑(等于、包含、正则匹配等)对包括响应头、响应码、响应体等在内的内容进行断言,以校验采样器的输出是否符合测试者的预期。

组件参数说明:
| 参数名称 | 取值及含义 |
|---|---|
| Name | 断言的名称 |
| Apply to | 选定断言的作用范围,一般是用到 Main sample only 选项,Main sample 指的就是这个断言所属的采样器,而 sub samples 指的是由这个采样器产生的子采样器,比如 HTTP 采样器的高级选项 – 获取内置的资源,就会产生子采样器。 |
| Field to Test | 指的是需要进行断言的目标。Text Response 指的是从服务器获得的整个响应作为文本(响应体)。Response Code 是响应码 (例如200)。Response Message 是响应消息(例如OK)。Response Headers 是响应头。Request Headers 指的是请求头。Request Data指的是请求的所有数据作为文本(请求体)。URL sampled 是采样的 URL。Document 指的是 View Results Tree 组件的 Document 部分一样的以特定规则提取出的文档。 |
| Ignore status | 忽略响应的状态码。一般 4xx 和 5xx 是默认认为是失败的。如果不设置,总的 sample 的结果是由状态码的成功失败和断言的结果的结合。如果设置了,就会设置状态为成功,再进行断言(注意:如果设置了这个参数,要把这个断言放在第一个,否则会清除前面的断言的失败结果) |
| Pattern Matching Rules | 对于给定的模式串,使用怎样的规则。Contains 包含模式串 (模式串被看作正则表达式)。Matches 表示正则匹配的 match (模式串被看作正则表达式)。Equals 表示相等(大小写敏感,模式串被看作纯文本)。Substring 表示被测文本包含给定的模式串 (模式串被看作纯文本)。两种逻辑符号: Not 和 Or 。Not 表示对结果取反。 Or 表示匹配规则对于给定的一系列模式串成立一个那断言就是 OK 的。 |
| Patterns to Test | 用来测试的模式串列表。可以点击 Add 按钮添加多个模式串。如果是正则表达式则是 Perl5-style 的正则表达式且没有封闭的括号的形式。 |
JSON变量提取
右键单击请求,Add – Post Processors – Json Extractor 添加 JSON 提取器元素
JSON 提取器可以用于从响应体中的 JSON 结构中提取指定位置的属性为变量。
组件参数说明:
| 参数名称 | 取值及含义 |
|---|---|
| Name | 展示用的描述性的名字 |
| Names of created variables | 创建的变量的一个或多个名称(多个以逗号分隔),数量要对应 JSON Path 表达式 |
| JSON Path Expressions | 一个或多个 JSON path 表达式 (多个以逗号分隔),数量和变量数目要匹配。(表达式的写法参考下文) |
| Default Values | 一个和多个默认值(多个以逗号分隔)。如果某个 JSON path 表达式没有返回值就用对应位置的默认值。数量和变量数一致 |
| Match No. (0 for Random) | 如果 JSON path 表达式可以取得多个值,该取哪个。0 表示随机;-1 表示提取所有的结果(会生成多个变量,名为 _N,N从1开始);X表示提取指定位置的结果,从1开始,如果X大于结果的数量,则返回空(会尝试使用默认值) |
| Compute concatenation var | 如果勾选,表示如果有多个结果得到,会将他们逗号分隔,放入名为 _ALL 的变量 |
JSON path 写法: $ 符号表示根元素,. 表示取属性,[0] 表示取数组对象的第一个元素 ( [1]就是第二个)。
例如:
{
"user": {
"names": ["Jack", "Jacky"],
"age": 10
}
}
对于以上 JSON ,使用表达式 $.user.names[0] 即可提取出 Jack 这个值。 更详细的信息可以参考:https://jsonpath.com/
查看结果树元素
这个元素是用于使用 JMeter 界面进行请求执行时查看请求的执行情况的,他可以查看到请求的请求报文和响应报文以及断言情况等信息。详情参考下文。
JMeter使用示例
接下来,我们使用上面学到的知识,实现这么一个场景:查询 Gitee 上猪齿鱼仓库下的贡献者, 然后提取出指定的一个贡献者名称,用第二个请求获取贡献者的信息。
使用的 Gitee 的两个接口为
GET https://gitee.com/open-hand/choerodon/contributors_count?ref=0.23.0
响应体结构为(我们需要获取的贡献者名称的 JSON path 为 $.contributors[0].username):
{
"status": 1,
"contributors_count": "16",
"contributors": [
{
"username": "example1"
}
]
}
GET https://gitee.com/{贡献者名称}
创建测试计划
打开 Jmeter 会有个默认的测试计划
创建线程组
右键鼠标单击测试计划,点击 Add > Threads (Users) > Thread Group 添加线程组元素。其中填入以下值:
创建 HTTP 默认值配置元素
鼠标右键单击线程组,Add > Config Element > Http Request Defaults 添加配置元素。填入值如下:
创建 HTTP 采样器获取贡献者列表
右键单击线程组,Add > Sampler > HTTP Request 添加采样器(填入path和添加一个parameter):
添加响应提取器
右键单击请求采样器,Add > Post Processors > JSON extractor 添加元素如下,因为某些用户在 gitee 并不存在,这里我们将提取 JSON path 为 $.contributors[4].username (也就是第五个贡献者)的用户名值放入变量 contributorName:
添加查看结果树元素到请求下
右键单击采样器,Add > Listener > View Results Tree 添加查看结果树如下:
添加 HTTP 采样器请求特定的贡献者信息
右键单击线程组,Add > Sampler > HTTP Request 添加采样器(这里在 path 属性填入 ${contributorName} 用于引用上一个请求提取出的变量):
添加查看结果树元素到请求下
右键单击采样器,Add > Listener > View Results Tree 添加查看结果树如下:
点击绿色三角形进行执行
点击执行按钮后,会提示我们先将文件保存后再执行,选择一个合适的目录保存后,点击执行按钮,此时绿色的执行按钮会变成灰色,同时右上角会开始计时,这表明请求正在执行,等按钮再次变成绿色时,说明执行结束了。

查看执行结果
点击第一个请求的 查看结果树 元素可以查看这个请求的执行结果:
可以看到响应体的信息为:

查看第二个请求的请求数据,可以看到请求成功,且可以看到请求路径的 ${contributorName} 已经渲染为第一个请求提取到的值 handchoerodon:
总结
JMeter 提供了 HTTP 采样器,各种断言机制,配置机制以及变量提取机制,可以帮助进行我们模块化的接口测试,使得系统更加健壮。
扩展资料
-
参考文档
本文由猪齿鱼技术团队原创,转载请注明出处:猪齿鱼官网
关于猪齿鱼
猪齿鱼Choerodon全场景效能平台,提供体系化方法论和协作、测试、DevOps及容器工具,帮助企业拉通需求、设计、开发、部署、测试和运营流程,一站式提高管理效率和质量。从团队协同到DevOps工具链、从平台工具到体系化方法论,猪齿鱼全面满足协同管理与工程效率需求,贯穿端到端全流程,助力团队效能更快更强更稳定。戳此处试用猪齿鱼
[转帖]JMeter 接口测试快速入门的更多相关文章
- 使用Jmeter测试快速入门
一 创建线程组 1.1.2. 线程组主要包含三个参数:线程数.准备时长(Ramp-Up Period(in seconds)).循环次数. 1.1.3. 线程数:虚拟用户数.一个虚拟用户占用 ...
- 使用JMeter进行负载测试快速入门
相信JMeter是很多测试人员必备技能之一,今天简单讲一下开发人员如何使用JMeter进行简单的压力测试快速入门. 安装JMeter Jmter官方地址 按提示下载JMeter,然后直接解压就可以用了 ...
- [转帖] YAML 快速入门
https://www.jianshu.com/p/97222440cd08 原始文档更加易读. YAML快速入门 叩丁狼教育 关注 2018.02.18 19:19* 字数 1776 阅读 876评 ...
- [转帖]Hive 快速入门(全面)
Hive 快速入门(全面) 2018-07-30 16:11:56 琅琊山二当家 阅读数 4343更多 分类专栏: hadoop 大数据 转载: https://www.codercto.com/ ...
- Jmeter压力测试入门操作
Jmeter压力测试入门 1. 前言 Jmeter 是Apache组织开发的基于Java的压力测试工具,开源并且支持多个操作系统,是一款很好的HTTP测试工具.本篇文章主要的目的是帮助没有接触过J ...
- jenkins+ANT+jmeter 接口测试环境搭建
目的 jmeter很早就接触了,最近又在接触项目的时候整了一下.写这篇博客主要有两个目的 1,为了给自己搭建jmeter做一个总结. 2,在部署过程中遇到过一些坑,在这分享出来,也希望能给需要的人一个 ...
- Spring Boot快速入门(二):http请求
原文地址:https://lierabbit.cn/articles/4 一.准备 postman:一个接口测试工具 创建一个新工程 选择web 不会的请看Spring Boot快速入门(一):Hel ...
- jmeter5.0生成html报告 快速入门
JMeter性能测试5.0时代之-多维度的图形化HTML报告 快速入门 1.确认基本配置 在jmeter.properties或者user.properties确认如下配置项: jmeter.save ...
- Postman 快速入门之脚本
1.学习中心,官方文档 https://learning.getpostman.com/docs/postman/scripts/test_scripts/ 2.基于Postman的API自动化测试 ...
- Jmeter接口测试(一) Jmeter简介
一.Jmeter介绍 (一)Jmeter简介 Apache JMeter 是 Apache 组织的开放源代码项目,是一个纯 Java 桌面应用,用于压力测试和性能测试.它最初被设计用于 Web 应用测 ...
随机推荐
- mx master 的国产平替 keychron m6 使用体验
背景 之前在 Mac 系统用mx master3遇到的问题 这篇文章中提到过三点问题,前两点在更换了驱动软件,升级了 macOS 系统之后都解决了,但第三点自动休眠的问题一直无法解决,于是一直想找一个 ...
- Spring表达式语言(SPEL)学习(03)
rootObject 在表达式中直接写name和getName(),这时候Expression是无法解析的,因为其不知道name和getName()对应什么意思 @Test public void t ...
- 文心一言 VS 讯飞星火 VS chatgpt (127)-- 算法导论11.2 2题
二.用go语言,位向量(bit vector)是一个仅包含0和1的数组.长度为m的位向量所占空间要比包含m个指针的数组少得多.请说明如何用一个位向量来表示一个包含不同元素(无卫星数据)的动态集合.字典 ...
- 使用 Python 将数据写入 Excel 工作表
在数据处理和报告生成等工作中,Excel 表格是一种常见且广泛使用的工具.然而,手动将大量数据输入到 Excel 表格中既费时又容易出错.为了提高效率并减少错误,使用 Python 编程语言来自动化数 ...
- 带你认识数仓的监控系统TopSQL
本文分享自华为云社区<GaussDB(DWS)TopSQL总结>,作者:nullptr_ . TopSQL 背景 TopSQL为DWS的监控系统,记录DWS中各个作业.算子级别的资源使用数 ...
- 云图说|云上应用监控神器——应用性能监控APM2.0
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 应用性能管理服务 ...
- 小熊派:用OpenHarmory3.0点亮LED
摘要:作为一个代表性的完整的开发,本案例可以分成3大部分:代码文件的规划,LED灯的驱动开发,点亮LED的业务开发. 本文分享自华为云社区<在小熊派Micro上用OpenHarmory3.0点亮 ...
- GIS常用npm包:GeoJSON文件合并与元素过滤\属性过滤\图形合并
GeoJSON文件合并 普通的geoJSON文件合并,只需geojson-merge插件就够了,https://www.npmjs.com/package/@mapbox/geojson-merge ...
- vue2升级vue3:webpack vue-loader 打包配置
如果没有啥特别的需求还是推荐vue-cli! vite vue3 TSX项目 虽然vite 很香,但是vite rollup 动态加载,多页面 等问题比较难搞 vite的缺点 wepback _ ...
- Nginx在windows下常用命令
cmd 进入Nginx解压目录 执行以下命令 start nginx : 启动nginx服务 nginx -s reload :修改配置后重新加载生效 nginx -s reopen :重新打开日志文 ...