共计 6187 个字符,预计需要花费 16 分钟才能阅读完成。
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
采样器,各种断言机制,配置机制以及变量提取机制,能够帮忙进行咱们模块化的接口测试,使得零碎更加强壮。
扩大材料
- 随机变量
- 边界提取器
- 正则表达式提取器
- 响应时长断言
-
响应体 JSON 断言
参考文档
- JMeter Get Started
- JMeter 组件阐明
本文由猪齿鱼技术团队原创,转载请注明出处:猪齿鱼官网
对于猪齿鱼
猪齿鱼 Choerodon 全场景效力平台,提供体系化方法论和合作、测试、DevOps 及容器工具,帮忙企业拉通需要、设计、开发、部署、测试和经营流程,一站式进步管理效率和品质。从团队协同到 DevOps 工具链、从平台工具到体系化方法论,猪齿鱼全面满足协同治理与工程效率需要,贯通端到端全流程,助力团队效力更快更强更稳固。戳此处试用猪齿鱼