性能测试-jmeter实战4
课程:B站大学
记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师
性能测试-jmeter实战4
- jmeter环境搭建
- 1. 安装Java环境(必需)
- JMeter环境搭建完整指南
- 1. 安装Java(必需)
- Windows/macOS安装步骤
- 下载jmeter
- JMeter环境搭建完整指南
- 1. 安装Java(必需)
- Windows/macOS安装步骤
- Windows用户可直接双击bin/jmeter.bat
- Linux/macOS
- Windows
- jmeter目录作用
- 2. 核心目录详解
- 2.1 bin目录(最重要)
- 语言设置
- 默认保存路径
- RMI设置(分布式测试)
- 安装插件示例
- docs目录(文档资源)
- extras目录
- 生成HTML报告
- printable_docs目录
- jmeter.properties中修改
- JMeter核心配置文件说明
- 配置详解
- 1. jmeter.properties
# 性能测试工具 ## LoadRunner LoadRunner 是一款由 Micro Focus(原惠普企业软件)开发的性能测试工具,广泛应用于软件、Web应用、移动应用及企业系统的负载测试和性能分析。 **主要组件** VuGen:录制和编辑测试脚本。 Controller:管理测试场景和调度虚拟用户。 Load Generator:生成实际负载的机器。 Analysis:分析测试结果并生成报告。  # Jmeter Apache JMeter 是一款开源的 性能测试 和 负载测试 工具,最初设计用于测试 Web 应用程序,但现已扩展支持多种协议,适用于 API、数据库、FTP、消息队列等多种场景。它基于 Java 开发,支持跨平台运行(Windows、Linux、macOS),广泛应用于性能测试、压力测试和功能测试。 ## 主要组件
- 测试计划(Test Plan):测试的顶层结构,包含线程组、采样器、监听器等。 线程组(Thread
Group):定义并发用户数(线程数)、循环次数、启动时间等。 - 采样器(Samplers):发送请求(如 HTTP 请求、JDBC 请求)。
- 监听器(Listeners):收集和展示测试结果(如表格、图形、日志)。
- 配置元件(Config Elements):设置请求头、Cookie、数据库连接等。
- 定时器(Timers):控制请求之间的延迟(如模拟用户思考时间)。
## 适用场景 - Web 应用 & API 测试:模拟高并发 HTTP 请求,测试 REST/SOAP 接口性能。
- 数据库性能测试:通过 JDBC 压测 SQL 查询效率。
- 消息队列测试:如 Kafka、RabbitMQ 的吞吐量测试。
- 文件传输测试:FTP/SFTP 上传下载性能。
- 微服务 & 云原生测试:结合 Docker/Kubernetes 进行动态扩展测试。
jmeter环境搭建
1. 安装Java环境(必需)
JMeter环境搭建完整指南
1. 安装Java(必需)
JMeter基于Java开发,需先安装JDK 8+(推荐JDK 11或17)
Windows/macOS安装步骤
- 下载JDK:
- Oracle JDK官网下载
- OpenJDK下载
- 配置环境变量:
- 新建系统变量
JAVA_HOME
,值为JDK安装路径(如C:\Program Files\Java\jdk-17
) - 编辑系统变量
PATH
,新增%JAVA_HOME%\bin
- 新建系统变量
- 验证安装:
java -version
配置java环境变量即可
下载jmeter
访问Apache JMeter官网
下载Binary版本(如apache-jmeter-5.6.2.zip)
解压到指定目录:
Windows示例:C:\jmeter
Windows配置
新建系统变量JMETER_HOME,值为JMeter解压目录
编辑系统变量PATH,新增%JMETER_HOME%\bin
验证配置:
jmeter -v
命令行模式(压测用)
jmeter -n -t test.jmx -l result.jtl
- 安装插件(可选)
下载Plugins Manager
将下载的plugins-manager.jar放入lib/ext/目录
重启JMeter后,通过菜单安装插件:
路径:Options > Plugins Manager
推荐插件:
Custom Thread Groups
PerfMon(服务器监控)
WebDriver(浏览器驱动) - 验证安装
创建测试计划:
右键Test Plan → Add → Thread Group
右键Thread Group → Add → Sampler → HTTP Request
输入测试URL(如https://example.com)
右键Thread Group → Add → Listener → View Results Tree
点击运行按钮(绿色三角图标)
在View Results Tree中查看响应结果
Master节点配置
修改bin/jmeter.properties:
remote_hosts=192.168.1.101,192.168.1.102
启动分布式测试:
jmeter -n -t test.jmx -l result.jtl -R 192.168.1.101,192.168.1.102
常见问题解决
问题现象 解决方案
报错"Java not found" 检查JAVA_HOME和PATH配置是否正确
GUI界面卡顿 改用命令行模式执行测试
内存不足错误 修改bin/jmeter中的堆内存参数(如-Xms2g -Xmx4g)
中文乱码 修改bin/jmeter.properties中的language参数、
JMeter环境搭建完整指南
1. 安装Java(必需)
JMeter基于Java开发,需先安装JDK 8+(推荐JDK 11或17)
Windows/macOS安装步骤
- 下载JDK:
- Oracle JDK官网下载
- 或OpenJDK下载
- 配置环境变量:
- 新建系统变量
JAVA_HOME
,值为JDK安装路径(如C:\Program Files\Java\jdk-17
) - 编辑系统变量
PATH
,新增%JAVA_HOME%\bin
- 新建系统变量
- 验证安装:
java -version
Linux(Ubuntu/Debian)安装
sudo apt update
sudo apt install openjdk-17-jdk
java -version
- 下载JMeter
访问Apache JMeter官网
下载Binary版本(如apache-jmeter-5.6.2.zip)
解压到指定目录:
Windows示例:C:\jmeter
Linux示例:/opt/jmeter - 配置环境变量(推荐)
Windows配置
新建系统变量JMETER_HOME,值为JMeter解压目录
编辑系统变量PATH,新增%JMETER_HOME%\bin
验证配置:
jmeter -v
Linux/macOS配置
export JMETER_HOME=/opt/jmeter/apache-jmeter-5.6.2
export PATH=$JMETER_HOME/bin:$PATH
source ~/.bashrc # 或~/.zshrc
jmeter -v
- 启动JMeter
GUI模式(测试设计用)
jmeter
Windows用户可直接双击bin/jmeter.bat
https://jmeter.apache.org/images/screenshots/jmeter.png
命令行模式(压测用)
jmeter -n -t test.jmx -l result.jtl
- 安装插件(可选)
下载Plugins Manager
将下载的plugins-manager.jar放入lib/ext/目录
重启JMeter后,通过菜单安装插件:
路径:Options > Plugins Manager
推荐插件:
Custom Thread Groups
PerfMon(服务器监控)
WebDriver(浏览器驱动) - 验证安装
创建测试计划:
右键Test Plan → Add → Thread Group
右键Thread Group → Add → Sampler → HTTP Request
输入测试URL(如https://example.com)
右键Thread Group → Add → Listener → View Results Tree
点击运行按钮(绿色三角图标)
在View Results Tree中查看响应结果 - 分布式测试配置(可选)
Slave节点配置
Linux/macOS
jmeter-server
Windows
jmeter-server.bat
Master节点配置
修改bin/jmeter.properties:
remote_hosts=192.168.1.101,192.168.1.102
启动分布式测试:
jmeter -n -t test.jmx -l result.jtl -R 192.168.1.101,192.168.1.102
常见问题解决
问题现象 | 解决方案 |
---|---|
报错"Java not found" | 检查JAVA_HOME和PATH配置是否正确 |
GUI界面卡顿 | 改用命令行模式执行测试 |
内存不足错误 | 修改bin/jmeter中的堆内存参数(如-Xms2g -Xmx4g) |
中文乱码 | 修改bin/jmeter.properties中的language参数 |
最佳实践建议
生产环境压测务必使用命令行模式
测试脚本建议版本控制(如Git)
长期运行测试建议添加以下监听器:
Aggregate Report
Response Times Over Time
对于复杂测试场景,建议使用:
CSV Data Set Config(参数化)
Regular Expression Extractor(关联)
jmeter目录作用
apache-jmeter-5.6.2/
├── bin/ # 核心可执行文件
├── docs/ # 官方文档
├── extras/ # 扩展功能
├── lib/ # 依赖库
├── licenses/ # 许可证文件
├── printable_docs/ # 可打印文档
└── LICENSE, NOTICE # 法律声明文件
2. 核心目录详解
2.1 bin目录(最重要)
bin/
├── jmeter.bat # Windows启动脚本
├── jmeter.sh # Linux/macOS启动脚本
├── jmeter.properties # 主配置文件(重点!)
├── jmeter.log # 默认日志文件
├── report-template/ # HTML报告模板
├── shutdown.bat # 强制停止脚本
└── system.properties # JVM系统配置
关键文件说明:
jmeter.properties
:500+个可配置参数,包括:
语言设置
language=zh_CN
默认保存路径
save.saveservice.base_directory=/tmp
RMI设置(分布式测试)
remote_hosts=127.0.0.1
lib/
├── ext/ # 扩展插件目录(重点!)
│ └── JMeterPlugins.jar
├── junit/ # JUnit测试支持
└── log4j2.xml # 日志配置文件
自定义jar包放在lib/ext/下
插件管理:
安装插件示例
cp plugins-manager.jar lib/ext/
docs目录(文档资源)
docs/
├── api/ # JavaDoc文档
└── demos/ # 示例测试计划
├── CompoundTest.jmx
└── websocket.jmx
extras目录
extras/
├── ant-jmeter-1.1.1.jar # Ant集成支持
└── beam2graph.xsl # 报表样式表
生成HTML报告
jmeter -g results.jtl -o report/
printable_docs目录
project/
├── testplans/ # .jmx测试脚本
├── datas/ # 测试数据(CSV等)
├── reports/ # 测试结果
└── lib/ # 项目专用jar包
jmeter.properties中修改
默认搜索路径
search_paths=/path/to/your/lib
CSV文件基准路径
csvread.default.path=datas/
JMeter核心配置文件说明
文件路径 | 作用 | 修改建议 |
---|---|---|
bin/jmeter.properties | 主配置文件 | 修改前建议备份原文件 |
bin/system.properties | JVM参数配置 | 调整内存参数(如-Xms1g -Xmx4g) |
lib/log4j2.xml | 日志系统配置 | 修改日志级别(DEBUG/INFO等) |
配置详解
1. jmeter.properties
典型配置项:
# 语言设置
language=zh_CN
# 默认端口
server_port=1099
# 分布式测试节点
remote_hosts=127.0.0.1
# jmeter元件作用域
# JMeter元件作用域详解## 主要作用域类型### 1. 父级作用域
- **定义**:元件只对其直接子级Sampler有效
- **典型元件**:逻辑控制器(如If Controller、Loop Controller)
- **示例**:在Loop Controller下添加的Sampler会受到循环控制 ### 2. 同级作用域
- **定义**:元件对同一层级的所有Sampler有效
- **典型元件**:配置元件(如HTTP请求默认值、HTTP Cookie管理器)
- **示例**:线程组级别的HTTP请求默认值会影响该线程组内所有HTTP请求 ### 3. 全局作用域
- **定义**:元件对整个测试计划中的所有Sampler有效
- **典型元件**:测试计划级别的配置元件
- **示例**:在测试计划根节点添加的User Defined Variables会被所有线程组使用 ## 作用域优先级规则
JMeter遵循以下优先级规则(从高到低):
1. 子级元件配置
2. 父级元件配置
3. 线程组级别配置
4. 测试计划级别配置 ## 常见元件作用域详解### 配置元件
- **作用范围**:取决于放置位置
- **线程组内**:仅影响该线程组
- **测试计划根节点**:影响所有线程组 ### 前置处理器/后置处理器
- **作用范围**:仅对同一父级下的Sampler有效
- **示例**:在某个Sampler前添加的前置处理器只处理该Sampler ### 断言
- **作用范围**:取决于放置位置
- **Sampler子级**:仅验证该Sampler响应
- **父级**:验证所有子Sampler响应 ### 监听器
- **作用范围**:收集其作用域内所有Sampler的数据
- **线程组级别**:收集该线程组所有Sampler数据
- **测试计划级别**:收集所有线程组数据 > **最佳实践提示**:
> 1. 共享配置应放在高层级(如测试计划/线程组级别)
> 2. 特定配置放在最接近Sampler的位置
> 3. 使用模块控制器管理复杂作用域关系
> 4. 避免不必要的全局配置影响


# 实践是检验这里的唯一标准