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

零基础学习性能测试第三章:jmeter构建性能业务场景

目录

      • **一、性能场景构建核心四要素**
      • **二、四步构建电商性能场景(含截图级配置)**
        • **场景需求**:模拟100用户并发操作,其中:
        • **步骤1:创建基础结构**
        • **步骤2:设置用户比例(吞吐量控制器)**
        • **步骤3:添加操作间隔(高斯随机定时器)**
        • **步骤4:参数化关键数据(CSV驱动)**
      • **三、增强场景真实性的关键技巧**
        • **1. 处理动态Token(关联提取)**
        • **2. 模拟热点数据(80/20法则)**
        • **3. 混合场景监控(事务级监听)**
      • **四、零基础调试清单(执行前必查)**
      • **五、实战示例:秒杀场景特殊配置**

掌握用JMeter构建真实性能业务场景是性能测试的核心技能。以下针对零基础学习者的 极简实操指南,结合电商案例逐步拆解,含可直接运行的配置示例:


一、性能场景构建核心四要素

要素JMeter实现组件作用避坑提醒
业务流事务控制器(Transaction Controller)将多个操作组合成完整业务流程确保包含所有关键步骤(登录→搜索→下单)
用户行为节奏定时器(Timers)模拟用户操作间隔(思考时间)随机延时更真实(如高斯随机定时器)
用户比例吞吐量控制器(Throughput Controller)控制不同操作的发生频率按比例分配权重(如浏览:加购=3:1)
真实数据驱动CSV数据文件配置(CSV Data Set Config)参数化用户名/商品ID等动态数据数据量需>并发用户数×循环次数

二、四步构建电商性能场景(含截图级配置)

场景需求:模拟100用户并发操作,其中:
  • 30%用户执行:登录 → 浏览商品
  • 50%用户执行:搜索 → 加购
  • 20%用户执行:下单支付

每个步骤间有3-5秒随机等待

步骤1:创建基础结构
测试计划
线程组-100用户
事务控制器-30%用户流
事务控制器-50%用户流
事务控制器-20%用户流
HTTP请求-登录
HTTP请求-浏览商品
HTTP请求-搜索
HTTP请求-加购
HTTP请求-下单
HTTP请求-支付

操作

  1. 右键测试计划 → 添加 → 线程组 → 设置线程数100,持续时间300秒
  2. 右键线程组 → 添加 → 逻辑控制器 → 事务控制器(命名“30%用户流”)
  3. 重复添加另两个事务控制器(50%/20%用户流)
步骤2:设置用户比例(吞吐量控制器)
线程组
吞吐量控制器-30%
吞吐量控制器-50%
吞吐量控制器-20%
事务控制器-30%用户流
事务控制器-50%用户流
事务控制器-20%用户流

配置

  • 在每个事务控制器上方添加吞吐量控制器:
    • 30%控制器:百分比模式 → 30
    • 50%控制器:百分比模式 → 50
    • 20%控制器:百分比模式 → 20

原理:JMeter按比例分配请求到不同业务流

步骤3:添加操作间隔(高斯随机定时器)

每个HTTP请求后添加

  1. 右键HTTP请求 → 添加 → 定时器 → Gaussian Random Timer
  2. 参数设置:
    • Deviation (偏差):1000毫秒
    • Constant Delay Offset (基础延迟):3000毫秒
# 效果: 每次请求后等待 3秒 ± 1秒 的随机时间(模拟真实用户操作间隔)
步骤4:参数化关键数据(CSV驱动)

1. 创建数据文件 user_data.csv

username,password,product_id
user1@test.com,Pass123!,101
user2@test.com,Pass123!,205
...(至少200行,>2倍并发用户数)

2. 添加CSV配置

  • 右键线程组 → 添加 → 配置元件 → CSV Data Set Config
  • 参数设置:
    • Filename:user_data.csv
    • Variable Names:username,password,product_id
    • Recycle on EOF?:True(循环使用数据)

3. 在请求中使用参数

# 登录请求体示例:
{"email": "${username}","password": "${password}"
}# 加购请求路径示例:
/cart/add?product_id=${product_id}

三、增强场景真实性的关键技巧

1. 处理动态Token(关联提取)

在登录请求后添加

  1. 右键登录请求 → 添加 → 后置处理器 → JSON提取器
  2. 参数设置:
    • Names of created variables: auth_token
    • JSON Path expression: $.data.token
# 后续请求在Header中添加:
Authorization: Bearer ${auth_token}
2. 模拟热点数据(80/20法则)
// 在商品ID参数处使用JMeter函数:
${__RandomFromMultipleVars(101|102|103|104|105,hot_product)} 
// 其中101-105是热门商品ID(占80%请求)
3. 混合场景监控(事务级监听)

添加监听器:

  1. 聚合报告(Aggregate Report) → 查看整体TPS/响应时间
  2. 事务控制器(Transaction Controller) → 生成每个业务流的独立报告
  3. 响应时间图(Response Time Graph) → 定位性能拐点

四、零基础调试清单(执行前必查)

  1. CSV文件路径是否正确?避免绝对路径(建议用相对路径../data/user_data.csv
  2. 所有动态参数(如${auth_token})是否已关联提取?
  3. 定时器是否添加到每个操作步骤后?
  4. 吞吐量控制器权重和是否为100%?
  5. 线程组持续时间是否>预热时间+稳定测试时间?

五、实战示例:秒杀场景特殊配置

线程组-5000用户
同步定时器-Synchronizing Timer
HTTP请求-秒杀接口

关键配置

  • 同步定时器:模拟瞬间并发
    • Number of Simulated Users to Group by: 5000(所有用户同时释放)
  • 秒杀请求
    • 添加随机商品ID参数(但80%指向秒杀商品ID)
    • 添加队列等待超时断言(响应内容包含“排队中”)

下一步行动

  1. 下载JMeter(官网https://jmeter.apache.org/)
  2. 按上述步骤创建电商测试计划
  3. 用10用户试运行 → 查看结果树验证流程
  4. 逐步增加到100用户执行5分钟

避坑提醒:首次运行常见报错解决方案:

  • 403 Forbidden → 检查Token是否传递
  • NullPointerException → 检查CSV变量名拼写
  • TPS异常低 → 关闭JMeter自带监听器(消耗资源)

通过业务场景的真实模拟,性能测试结果才具有参考价值。从简单流程开始构建,逐步叠加复杂度,你会快速掌握JMeter场景设计精髓!

http://www.xdnf.cn/news/1192591.html

相关文章:

  • java网络请求工具类HttpUtils
  • 智慧水库管理系统中标签工厂的建立方案
  • HTTP 协议的基本格式和 fiddler 的用法
  • PHP语法高级篇(六):面向对象编程
  • 可调谐激光器原理与设计 【DFB 与 DBR 激光器剖析】
  • 详解力扣高频SQL50题之1141. 查询近30天活跃用户数【简单】
  • 【区块链安全】DeFi协议安全漏洞深度分析:从闪电贷攻击到MEV套利
  • Nuxt 4:前端开发的全新篇章
  • java集合框架面试点(2)
  • 【C语言进阶】程序环境和预处理
  • 各种前端框架界面
  • HighlightingSystem
  • 精密全波整流电路(四)
  • Linux 如何统计系统上各个用户登录(或者登出)记录出现的次数?
  • python 检测蜂窝网络,实现掉网自动拨号
  • 自定义定时任务功能详解
  • SGLang 核心技术详解
  • GO 从入门到精通2
  • TCP如何解决网络切换问题
  • 简单实现支付密码的页面及输入效果
  • @PathVariable与@RequestParam的区别
  • Zama+OpenZeppelin:将机密智能合约带入 DeFi 和数字资产领域
  • 拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 热词数量分析日期统计功能实现
  • 【数据结构】二叉树初阶详解(二):实现逻辑与代码拆解(超详版)
  • STL——vector
  • [Linux入门] 初学者入门:Linux DNS 域名解析服务详解
  • React入门学习——指北指南(第四节)
  • 雨雪雾冰全预警:交通气象站为出行安全筑起“隐形防护网”
  • 零基础学后端-PHP语言(第二期-PHP基础语法)(通过php内置服务器运行php文件)