当前位置: 首页 > news >正文

性能测试-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​​:分析测试结果并生成报告。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d9ac61c2c1334bcdb6061ef08838e21b.png) # 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安装步骤

  1. 下载JDK:
    • Oracle JDK官网下载
    • OpenJDK下载
  2. 配置环境变量:
    • 新建系统变量JAVA_HOME,值为JDK安装路径(如C:\Program Files\Java\jdk-17
    • 编辑系统变量PATH,新增%JAVA_HOME%\bin
  3. 验证安装:
   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
  1. 安装插件(可选)
    下载Plugins Manager
    将下载的plugins-manager.jar放入lib/ext/目录
    重启JMeter后,通过菜单安装插件:
    路径:Options > Plugins Manager
    推荐插件:
    Custom Thread Groups
    PerfMon(服务器监控)
    WebDriver(浏览器驱动)
  2. 验证安装
    创建测试计划:
    右键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安装步骤

  1. 下载JDK:
    • Oracle JDK官网下载
    • 或OpenJDK下载
  2. 配置环境变量:
    • 新建系统变量JAVA_HOME,值为JDK安装路径(如C:\Program Files\Java\jdk-17
    • 编辑系统变量PATH,新增%JAVA_HOME%\bin
  3. 验证安装:
    java -version
    

Linux(Ubuntu/Debian)安装

sudo apt update
sudo apt install openjdk-17-jdk
java -version
  1. 下载JMeter
    访问Apache JMeter官网
    下载Binary版本(如apache-jmeter-5.6.2.zip)
    解压到指定目录:
    Windows示例:C:\jmeter
    Linux示例:/opt/jmeter
  2. 配置环境变量(推荐)
    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
  1. 启动JMeter
    GUI模式(测试设计用)
jmeter

Windows用户可直接双击bin/jmeter.bat

https://jmeter.apache.org/images/screenshots/jmeter.png

命令行模式(压测用)

jmeter -n -t test.jmx -l result.jtl
  1. 安装插件(可选)
    下载Plugins Manager
    将下载的plugins-manager.jar放入lib/ext/目录
    重启JMeter后,通过菜单安装插件:
    路径:Options > Plugins Manager
    推荐插件:
    Custom Thread Groups
    PerfMon(服务器监控)
    WebDriver(浏览器驱动)
  2. 验证安装
    创建测试计划:
    右键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中查看响应结果
  3. 分布式测试配置(可选)
    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.propertiesJVM参数配置调整内存参数(如-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. 避免不必要的全局配置影响
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d9951e19b86946bd82a72d3e106fd9e9.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d453ad518646411d8d05d61910cc4053.png)
# 实践是检验这里的唯一标准
http://www.lqws.cn/news/510535.html

相关文章:

  • 【Spring底层分析】AOP的cligb代理和jdk代理
  • go语言 *和
  • 基于StarRocks的指标平台查询加速方案
  • sqlserver怎样动态执行存储过程,并且返回报错
  • 解决ptmalloc2内存过大的三种方案
  • 使用GDB调试程序方法
  • 02-Linux内核源码编译
  • java语言中的XML解析
  • 解决Fedora21下无法使用NWJS网页透明效果的问题
  • mybatisPlus动态表前缀
  • 磁悬浮轴承遇上“热浪”挑战:多参数自适应补偿策略揭秘
  • [学习] C语言编程中线程安全的实现方法(示例)
  • day041-web集群架构搭建
  • 棋盘格标定板和圆形标定板的优劣性
  • windows 上 build 时,微软给出的 vcpkg 工具,如何使用
  • MySQL 8.x配置MGR高可用+ProxySQL读写分离(三):配置ProxySQL主从分组信息
  • [3D-Portfolio] docs | js集中式配置 | React组件 | 组件嵌套
  • [附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的超市库存商品管理系统,推荐!
  • 16、nrf52840蓝牙学习(唯一ID加密与解密)
  • 华为认证预约考试、考试时长、取消/改期、补考时间汇总
  • C++ <vector>
  • Redis 乱码和LocalDateTime类型缓存问题
  • 鸿蒙开发深入解析:Data Ability 数据共享机制全面指南
  • 工业弧焊机器人气保焊节气装置
  • 搭建智能问答系统,有哪些解决方案,比如使用Dify,LangChain4j+RAG等
  • 【Altium】原理图位号自动标注
  • spring中的切面类实践
  • WPF CommunityToolkit.Mvvm
  • 【技术难题】el-table的全局数据排序实现示例,不受分页影响,以及异步请求带来的页面渲染问题
  • 针对基于深度学习的侧信道分析(DLSCA)进行超参数的贝叶斯优化