Jmeter 接口工具

Jmeter 接口测试工具
(1)Jmeter 介绍
JMeter是一款 JAVA 桌面应用程序,常常被用来做接口测试、负载测试等等

JMeter是一款开源测试工具:

开源免费软件,不需要任何使用费用
小巧绿色,相比LoadRunner的庞大,它非常小巧并且不需要安装(需要安装 JDK)
功能强大,设计之初只是一个简单的性能测试工具,经过无数次更新已变得非常强大
(2)Jmeter 下载安装
1、Jmeter 下载
Jmeter 安装包下载(解压即可)

链接:apache-jmeter-5.0.rar 下载地址
提取码:njmp

2、JDK 安装
JDK 安装包下载(内含安装教程)

链接:jdk-8u191-windows-x64.exe 下载地址
提取码:q1f8

Jmeter 运行
Jmeter 启动相当简单,双击 bin 目录下的jmeter.bat文件即可
Jmeter 接口工具_第1张图片
Jmeter 启动成功后的界面
Jmeter 接口工具_第2张图片
(3)Jmeter 功能说明
1、接口测试- 示例
新建线程组 => 右键测试计划 => 添加 => 添加 => 线程(用户) => 线程组

线程数:模拟用户请求线程数(单接口用默认值1即可)
Ramp-Up时间(秒):启动设定线程数在设定时间内启动(单接口用默认值1即可)
循环次数:可勾选永远或指定循环次数(单接口用默认值1即可)
Jmeter 接口工具_第3张图片
新建Http请求 => 添加 => 取样器 => Http 请求

名称:接口名称
协议:Http 、 HTTPS
服务器名称或 IP : 请求服务器域名或 IP 地址
端口号:XXXX(默认端口 80 可以省略)
方法:GET、POST 等等
路径:(接口地址名称)
内容编码:UTF-8(支持中文)
参数:添加行参数
消息体数据:JSON 格式数据等
文件上传:测试接口带有文件(文本文件、图片文件等)
Jmeter 接口工具_第4张图片
测试计划
Test Plan (测试计划):用来描述一次接口测试或性能测试相关内容,也就说测试的所有内容是于基于计划完成的
Jmeter 接口工具_第5张图片
3、线程组
Thread Group(线程组):线程组中的每个线程都是一个虚拟用户,线程组中包含的线程数量在测试执行过程中不会发生改变

线程组位置:右键测试计划 => 线程(用户) => 线程组

线程数:模拟用户请求线程数(即虚拟用户数)

Ramp-Up时间(秒):启动设定线程数在设定时间内启动,立即启动可设置0

循环次数:每个线程执行次数,可勾选永远或指定循环次数
Jmeter 接口工具_第6张图片

4、取样器
Sampler(取样器):取样器是接口测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,Jmeter 支持特别多取样器:如 HTTP 请求、FTP 请求、JAVA 请求等等,在这里只介绍 HTTP Request(HTTP 请求),如需要了解更多,请自行百度

取样器位置:右键线程组 => 添加 => 取样器 => Http 请求

名称:接口名称
协议:Http 、 HTTPS
服务器名称或 IP : 请求服务器域名或 IP 地址
端口号:XXXX(默认端口 80 可以省略)
方法:GET、POST 等等
路径:(接口地址名称)
内容编码:UTF-8(支持中文)
参数:添加行参数
消息体数据:JSON 格式数据等文件上传:测试接口带有文件(文本文件、图片文件等)
文件上传:测试接口带有文件(文本文件、图片文件等)
Jmeter 接口工具_第7张图片

5、逻辑控制器
Logic Controller(逻辑控制器):逻辑控制器对其子节点的取样器有效,作用是控制取样器的执行顺序,Jmeter 总数有 17 种逻辑控制器,功能各不相同,但是大概可以分为 2 种类型

第一种类型:控制测试计划节点的执行顺序 (如果(if)控制器、While控制器等)

如果(if)控制器 - 示例

如果(if)控制器:如需要对不同的条件做不同的操作,我们可以使用(if)控制器来实现

条件格式:${__jexl3(条件表达式)}:表达式可使用Jmeter 函数助手(参见12、函数助手)

完成需求:如果登录接口返回参数errno = 0,执行用户信息接口,否则不执行

实现步骤(已知登录接口返回 JSON 数据):

第一步:右键登录接口 => 后置处理器 => JSON 提取器
Jmeter 接口工具_第8张图片
第二步:点击“选项”=> 函数助手 => 选择函数“__jexl3”=>引用变量名“login_judge”

获得函数:${__jexl3(${login_judge},)}

最终函数:${__jexl3(${login_judge}==0,)}(判断的条件为字符串需要加"")

第三步:在(if)控制器下添加用户信息接口
Jmeter 接口工具_第9张图片
While 控制器 - 示例

While 控制器 :一直循环执行子节点内容,直到条件为False(假)

Condition 条件如下:

1、为空:直到请求失败退出循环

2、LAST:直到最后一个请求失败退出循环

3、其他:条件值为False,退出循环

While 控制器 - 示例:登录判断 errno != 0,退出循环
Jmeter 接口工具_第10张图片
第二种类型:统计执行结果以及进行脚本的运行时控制(吞吐量控制器、事务控制器等)

吞吐量控制器 - 示例

吞吐量控制器:它跟吞吐量没有任何关系

两种执行方式:设置百分比行和设置线程数控制执行执行次数
Jmeter 接口工具_第11张图片
前置处理器
Pre Processors(前置处理器):前置处理器用于在实际的请求发出之前,对发出的请求进行特殊处理,Jmeter 提供了 8 种(这里不一一说明,主要说明用户参数)

用户参数 - 示例

添加变量:添加用户参数,支持多参数
添加用户:添加参数使用用户,支持多用户
每次迭代更新一次:勾选后,每次运行都要重新获取参数(针对使用随机函数)
Jmeter 接口工具_第12张图片
7、后置处理器
Post Processors(后置处理器):后置处理器是用于对取样器发出请求后得到的服务器响应进行处理,一般用来提取响应中的特定数据,Jmeter 提供了 11 种(这里不一一说明,主要说明 Json 提取器与正则表达式提取器)

Json 提取器 - 示例

如下 JSON 代码:提取 authToken 的值

{
    "errno": 0,
    "data": {
        "authToken": "37f95bc40fb0ccb0be4e922655d4660b"
    },
    "errmsg": "登录成功"
}

位置:添加 => 后置处理器 => Json 提取器
Jmeter 接口工具_第13张图片
引用变量:${authToken}

Jmeter 接口工具_第14张图片
正则表达式 提取器 - 示例(可以提取任何格式数据,这以JSON数据为例)

如下 JSON 代码:提取 authToken 的值

{
    "errno": 0,
    "data": {
        "authToken": "37f95bc40fb0ccb0be4e922655d4660b"
    },
    "errmsg": "登录成功"
}

位置:添加 => 后置处理器 => 正则表达式提取器
Jmeter 接口工具_第15张图片
断言
Assertions(断言)一般用来设置检查点,用于检测实际数据是否符合预期,Jmeter 总数有13 种断言(这里不一一说明,主要说明:响应断言与 JSON 断言)

响应断言 - 示例

如下 JSON 代码:断言 errno = 0 为接口成功,反之接口失败

{
    "errno": 0,
    "data": {
        "authToken": "37f95bc40fb0ccb0be4e922655d4660b"
    },
    "errmsg": "登录成功"
}

位置:添加 => 断言 => 响应断言
Jmeter 接口工具_第16张图片

JSON 断言 - 示例

如下 JSON 代码:断言 errno = 0 为接口成功,反之接口失败

位置:添加 => 断言 => JSON 断言
Jmeter 接口工具_第17张图片
定时器
Timer(定时器)用于操作之间设置等待时间,也就是我们常说的思考时间,Jmeter 有9 种定时器(这里不一一说明,主要说固定定时器、高斯随机定时器)

定时器作用域:定时器是在每个取样器之前执行,如果希望定时器仅应用于其中一个取样器,则在其子节点中加入,定时器的延时不会计入取样器的响应时间

固定定时器 - 示例

固定定时器:登录请求延迟1000毫秒执行

位置:添加 => 定时器 => 固定定时器
Jmeter 接口工具_第18张图片
高斯随机定时器 - 示例

高斯随机定时器:要求随机时间在200毫秒~300毫秒之间

位置:添加 => 定时器 => 高斯随机定时器
Jmeter 接口工具_第19张图片
配置元件
Config Element(配置原件),用于提供对各种数据支持,Jmeter 有19种配置原件(这里不一一说明,主要说明 CSV 数据文件设置、HTTP 信息头管理器、HTTP 请求默认值、用户自定义变量)

CSV 数据文件设置 - 示例

CSV 数据文件设置:

位置:添加 => 配置元件 => CSV 数据文件设置

准备 CSV 格式数据:
Jmeter 接口工具_第20张图片
配置 CSV 数据:
Jmeter 接口工具_第21张图片
引用 CSV 数据:
Jmeter 接口工具_第22张图片
HTTP 信息头管理器 - 示例

HTTP 信息头管理器:

位置:添加 => 配置元件 => HTTP 信息头管理器
Jmeter 接口工具_第23张图片
行后结果:
Jmeter 接口工具_第24张图片
HTTP 请求默认值 - 示例

HTTP 请求默认值:

位置:添加 => 配置元件 => HTTP 请求默认值
Jmeter 接口工具_第25张图片
使用后的效果:
Jmeter 接口工具_第26张图片
用户自定义变量 - 示例

用户自定义变量:定义变量 phoneNumber = 18589236787

位置:添加 => 配置元件 => 用户自定义变量
Jmeter 接口工具_第27张图片
引用自定义变量:
Jmeter 接口工具_第28张图片
监听器
Listener(监听器),用于对测试结果数据处理和可视化展示的一系列元件,Jmeter 提供了16 种监听器(这里不一一说明,只讲解最常用察看结果树、聚合报告)

察看结果树 - 示例

察看结果树:显示了每一个取样器的结果、请求信息和响应信息,可以分析接口是否存在问题

位置:添加 => 监听器 => 察看结果树
Jmeter 接口工具_第29张图片
聚合报告 - 示例

聚合报告:对于每个请求统计响应信息并提供请求数、平均值、最大、最小值、错误率、大约吞吐量、kb/秒为单位的吞吐量

位置:添加 => 监听器 => 聚合报告
Jmeter 接口工具_第30张图片
报告内容分析:

1、Label:请求名称
2、#Samples:总线程数 = 线程数 * 循环次数
3、Average:单个请求的平均响应时间 = 总运行时间 / 发送到服务器的总请求数
4、Median、90%line、95%line、99%line:分别代表50%的用户响应时间、90%的用户响应时间、95%的用户响应时间、99%的用户响应时间(90%line是性能测试重要的一个衡量指标)
5、Min:最小响应时间
6、Max:最大响应时间
7、Error%:错误率 = 发生错误的请求 / 总请求数

8、Throughput:吞吐量,表示每秒完成的请求数

9、KB/sec:每秒发送的千字节为单位测量数据

12、函数助手
函数助手对话框(Ctrl + Shift + F1),可以参照一定的规则生成数据函数,Jmeter 支持的函数特别多(不一一说明,主要说明随机数、当前时间、唯一ID)

随机数函数 - 示例

随机数函数:可按照一定规则生成需要的随机数
位置:选项 => 函数助手对话框 => 随机数函数 => __Random()
Jmeter 接口工具_第31张图片
当前时间函数 - 示例

随机数函数:可按照一定规则生成时间函数
位置:选项 => 函数助手对话框 => 随机数函数 => __time()
Jmeter 接口工具_第32张图片
时间格式说明:

1、${__time(yyyy-MM-dd HH:mm:ss:SSS,time)} :格式化生成时间格式 2100-01-01 11:08:23:635

2、${__time(yyyy-MM-dd HH:mm:ss,time)} :格式化生成时间格式 2100-01-01 11:08:23

3、${__time(yyyy-MM-dd,time)} :格式化生成时间格式 2100-01-01

4、${__time(,)}:默认该公式精确到毫秒级别, 13位数 1527822855323

唯一ID函数 - 示例

唯一ID函数:可按照一定规则生成需要的唯一表示
位置:选项 => 函数助手对话框 => 随机数函数 => __UUID()
Jmeter 接口工具_第33张图片

你可能感兴趣的:(自动化测试,java)