关于测试:JMeter-接口测试快速入门

27次阅读

共计 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 的疾速入门,故其它环境由读者自行筹备

  1. 进入官网页面(https://jmeter.apache.org/download_jmeter.cgi)抉择适合的镜像源,下载二进制散发文件;
  2. 将压缩文件解压到本地后,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 断言

    参考文档

  1. JMeter Get Started
  2. JMeter 组件阐明

本文由猪齿鱼技术团队原创,转载请注明出处:猪齿鱼官网

对于猪齿鱼

猪齿鱼 Choerodon 全场景效力平台,提供体系化方法论和合作、测试、DevOps 及容器工具,帮忙企业拉通需要、设计、开发、部署、测试和经营流程,一站式进步管理效率和品质。从团队协同到 DevOps 工具链、从平台工具到体系化方法论,猪齿鱼全面满足协同治理与工程效率需要,贯通端到端全流程,助力团队效力更快更强更稳固。戳此处试用猪齿鱼

正文完
 0