实习过程中,使用到了JMeter测试工具,记录一下基本使用。
JMeter 是一个开源的负载测试工具,可以用来测试各种服务的性能,包括 Web 应用、数据库、FTP 服务等。它的界面友好,功能强大,支持多种协议。本文将介绍如何使用 JMeter 进行性能测试。
安装及使用
- 访问 Apache JMeter官网 下载最新版本的 JMeter。
- 解压下载的压缩文件,进入解压后的目录。
- 运行
bin
目录下的jmeter.bat
(Windows)或jmeter.sh
(Unix/Linux)文件启动 JMeter。
基本页面及操作介绍
- 菜单栏:包含文件、编辑、运行、选项、工具和帮助菜单。
- 工具栏:包含常用操作按钮,如新建、打开、保存、运行、停止等。
- 测试计划树:左侧的树状结构,用于组织和配置测试计划的各个组件。
- 工作区:右侧的编辑区域,用于配置选中的测试组件的详细信息。
- 日志视图:显示 JMeter 的日志信息。
创建一个基本的测试计划
1. 添加测试计划
在左侧的测试计划树中,右键点击“测试计划”节点,选择“添加” -> “线程(用户)” -> “线程组”。线程组是 JMeter 中的一组用户,可以模拟并发用户数。
2. 配置线程组
选择刚刚添加的线程组,在右侧的工作区中配置线程属性:
- 线程数:10(模拟 10 个并发用户)。
- Ramp-Up 时间:5 秒(5 秒内启动所有线程)。
- 循环次数:1(每个线程执行一次)。
3. 添加 HTTP 请求
右键点击线程组,选择“添加” -> “取样器” -> “HTTP 请求”。在右侧的工作区中配置 HTTP 请求的属性:
- 名称:HTTP请求名称
- 协议:http
- 服务器名称或 IP:
www.baidu.com
(要测试的目标服务器)。 - 端口号:8082(目标服务器的端口号)。
- HTTP请求:GET
- HTTP 请求路径:
/user/list
(请求的具体路径)。
4. 添加监听器
监听器用于收集和查看测试结果。右键点击线程组,选择“添加” -> “监听器” -> “查看结果树”。结果树可以详细显示每个请求的响应。
5. 运行测试计划
点击工具栏上的“启动”按钮(绿色三角形)开始测试。测试运行后,可以在“查看结果树”中查看每个请求的详细响应信息。
可以选择返回结果的格式,查看是否符合预期结果
6. 分析测试结果
JMeter 提供多种监听器用于分析测试结果,例如:
- 聚合报告:右键点击线程组,选择“添加” -> “监听器” -> “聚合报告”。显示汇总的性能指标,如平均响应时间、
根据需要可自行查看
常用到的一些工具
1. 添加Json提取器
当某个请求的参数需要用到之前的返回结果时,可以通过JSON提取器,提取返回结果中的值。
右键点击“HTTP请求”-“添加”-“后置处理器”-“JSON提取器”
JSON PATH语法可以通过查看结果树获取,选择JSON Path Tester格式。
JSON Path语法格式:
从根元素由上往下提取需要的元素
-
$
:表示根元素 -
.
或[]
:表示子元素
在使用JSON提取器提取到变量后,即可在后续请求中携带。使用${xxx}即可替换为对应的数据。
可以看到在发送请求时,${}自动替换成了提取的值
2. 添加定时器
定时器用于控制两个请求之间的时间间隔,比如在增、删、改这些操作后立即查询,如果不添加定时器,可能会出现请求已经发送,但是数据库没有发生改变的情况。这里就需要添加定时器,在间隔一段时间后再进行查询。
右键点击“HTTP请求”-“添加”-“定时器”-“固定定时器”
可以设置名称、线程延迟等。
3. 添加用户参数
我们可以添加用户参数用于http请求参数
右键点击“线程组”-“添加”-“前置处理器”-“用户参数”
在用户参数中,我们既可以设定固定的值,也可以调用JMeter的函数获取需要的值。
常见JMeter函数可以获取当前时间等,有需要请查阅其他资料
在后续请求中,通过${}的形式调用设置好的用户参数
可以看到,在后续请求中即可引用相关参数
Linux环境JMeter的使用
为什么要非GUI模式运行
jmeter是java语言开发,实际是运行在JVM中的,GUI模式运行需要耗费较多的系统资源,一般来说,GUI模式要占用10%-25%的系统资源。
而使用非GUI模式(即linux或dos命令)可以降低对资源的消耗,提升单台负载机所能模拟的并发数。
1. 环境配置:安装jdk
2. 下载和安装JMeter:
下载JMeter压缩包
解压至linux目录
3. Windows下创建测试计划
Windows环境下启动JMeter,设置好压测环境和场景,保存至.jmx文件中
4. Linux下运行测试计划
移动至JMeter文件夹的bin目录,如果设置了环境变量,可以在任意目录下直接运行 JMeter。
使用以下命令在非GUI模式下运行测试计划:
./jmeter.sh -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
这里的参数解释:
-n:表示非GUI模式(non-GUI mode)
-t:指定测试计划文件(.jmx 文件)的路径
-l:指定结果文件(.jtl 文件)的路径,用于保存测试结果
-e:测试结束后生成报告
-o:测试报告存放目录,必须是空目录
5. 查看测试结果
可以通过文本编辑工具查看.jtl文件
vim工具打开:vi test.jtl
Notepad++打开:
也可以通过Windows下JMeter GUI界面进行查看
右键点击“线程组”-“添加”-“监听器”-“汇总报告”,导入jtl文件
也可以打开指定目录下生成的html格式的测试报告。
涉及到的参数有
- Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
- #样本(#Samples):请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
- 平均值(Average):平均响应时间——默认情况下是单个 Request 的平均响应时间,
- 中位数(Median):也就是 50% 用户的响应时间
- 90%百分位(90% Line):90% 用户的响应时间
- 最小值(Min):最小响应时间
- 最大值(Max):最大响应时间
- 异常%(Error%):错误率——错误请求数/请求总数
- 吞吐量(Throughput):默认情况下表示每秒完成的请求数(Request per Second),
- 发送/接收KB/Sec:每秒向服务器端发送或从服务器端接收到的数据量