--
:
--
:
--
第三阶段:JMeter实战
最后更新于:
第三阶段:JMeter实战
一、JMeter简介
1.1 什么是JMeter?
JMeter是Apache基金会的开源性能测试工具,最初用于Web应用测试,现在已扩展到数据库、消息队列、FTP等多种协议的性能测试。
1.2 JMeter特点
- 功能强大:支持多种协议和场景
- 可视化界面:图形化界面,易于操作
- 插件丰富:拥有丰富的插件生态
- 报告美观:支持多种报告格式
1.3 安装JMeter
1# 下载JMeter
2# https://jmeter.apache.org/download_jmeter.cgi
3
4# 解压后运行
5bin/jmeter.sh # Linux/Mac
6bin/jmeter.bat # Windows二、测试计划设计
2.1 测试计划结构
1测试计划
2├── 线程组
3│ ├── HTTP请求默认值
4│ ├── Cookie管理器
5│ ├── HTTP信息头管理器
6│ ├── 采样器
7│ │ ├── HTTP请求
8│ │ ├── JDBC请求
9│ │ └── ...
10│ ├── 控制器
11│ │ ├── 简单控制器
12│ │ ├── 循环控制器
13│ │ └── ...
14│ ├── 断言
15│ │ ├── 响应断言
16│ │ ├── JSON断言
17│ │ └── ...
18│ └── 监听器
19│ ├── 聚合报告
20│ ├── 查看结果树
21│ └── ...
22└── 配置元件2.2 线程组配置
| 参数 | 说明 |
|---|---|
| 线程数 | 并发用户数 |
| Ramp-Up时间 | 启动所有线程的时间(秒) |
| 循环次数 | 每个线程执行的次数 |
| 调度器 | 配置测试开始和结束时间 |
2.3 HTTP请求默认值
1协议: http
2服务器名称或IP: localhost
3端口号: 8080
4路径: /api三、常用组件
3.1 采样器(Samplers)
HTTP请求
1名称: 获取用户列表
2协议: GET
3路径: /api/users
4参数:
5 page = 1
6 size = 10JDBC请求
1JDBC连接配置:
2 变量名: db
3 JDBC驱动类: com.mysql.cj.jdbc.Driver
4 JDBC URL: jdbc:mysql://localhost:3306/test
5 用户名: root
6 密码: password
7
8JDBC请求:
9 变量名: db
10 查询类型: Select Statement
11 查询语句: SELECT * FROM users LIMIT 103.2 控制器(Controllers)
循环控制器
1名称: 循环10次
2循环次数: 10条件控制器
1名称: 根据响应判断
2条件: ${__jexl3(${response_code} == 200,)}随机控制器
1名称: 随机选择
2随机种子: 1233.3 断言(Assertions)
响应断言
1名称: 检查响应状态码
2响应字段: 响应代码
3模式匹配规则: 包含
4要测试的模式: 200JSON断言
1名称: 检查JSON响应
2JSON路径: $.code
3预期值: 03.4 前置处理器(Pre-Processors)
用户定义的变量
1名称: base_url
2值: http://localhost:8080CSV数据文件设置
1文件名: test_data.csv
2文件编码: UTF-8
3变量名称: username,password
4分隔符: ,3.5 后置处理器(Post-Processors)
JSON提取器
1名称: 提取用户ID
2引用名称: user_id
3JSON路径表达式: $.data.id
4匹配数字: 1正则表达式提取器
1名称: 提取Token
2引用名称: token
3正则表达式: "token":"(.*?)"
4模板: $1$
5匹配数字: 1四、高级场景
4.1 数据库性能测试
1测试计划
2├── JDBC连接配置
3└── 线程组
4 ├── JDBC请求 - 查询用户列表
5 ├── JDBC请求 - 查询订单详情
6 ├── JDBC请求 - 更新用户信息
7 └── 聚合报告4.2 消息队列性能测试
1测试计划
2├── JMS连接配置
3└── 线程组
4 ├── JMS发布者 - 发送消息
5 ├── JMS订阅者 - 接收消息
6 └── 聚合报告4.3 自定义协议测试
1测试计划
2└── 线程组
3 ├── Java请求 - 自定义协议
4 └── 聚合报告五、测试报告
5.1 聚合报告
| 指标 | 说明 |
|---|---|
| Label | 请求名称 |
| #Samples | 请求总数 |
| Average | 平均响应时间(ms) |
| Median | 中位数响应时间(ms) |
| 90% Line | 90%请求的响应时间(ms) |
| 95% Line | 95%请求的响应时间(ms) |
| 99% Line | 99%请求的响应时间(ms) |
| Min | 最小响应时间(ms) |
| Max | 最大响应时间(ms) |
| Error% | 错误率 |
| Throughput | 吞吐量(请求/秒) |
5.2 生成HTML报告
1# 执行测试并生成HTML报告
2jmeter -n -t test_plan.jmx -l results.jtl -e -o report
3
4# 参数说明
5# -n: 非GUI模式
6# -t: 指定测试计划文件
7# -l: 指定结果文件
8# -e: 生成HTML报告
9# -o: 指定报告输出目录5.3 报告分析
1关键指标分析:
21. 响应时间是否在可接受范围内
32. 吞吐量是否达到预期
43. 错误率是否在允许范围内
54. 是否存在性能瓶颈
65. 系统资源使用情况六、实战练习
6.1 练习1:创建HTTP测试计划
创建一个JMeter测试计划,测试以下接口:
- GET /api/users
- POST /api/users
- GET /api/users/{id}
- PUT /api/users/{id}
- DELETE /api/users/{id}
6.2 练习2:数据库测试
创建一个JMeter测试计划,测试MySQL数据库性能:
- 查询用户列表
- 查询订单详情
- 插入新用户
- 更新用户信息
6.3 练习3:参数化测试
使用CSV数据文件设置实现参数化测试:
- 准备测试数据文件
- 配置CSV数据文件设置
- 在HTTP请求中使用变量
下一章:04-性能监控与分析.md
📡
👤
作者:
阿海
🌐
版权:
本站文章除特别声明外,均采用
CC BY-NC-SA 4.0
协议,转载请注明来自
阿海 Blog!
- 01JMeter界面详解 2026-07-11
- 02性能测试学习路线 2026-07-11
- 03JMeter线程组配置详解 2026-07-11