当前位置: 首页 > 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.lryc.cn/news/600371.html

相关文章:

  • 论文阅读-RaftStereo
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-27,(知识点:信号完整性,信号反射,串扰,时延,抖动,衰减)
  • Qt 延时处理方法介绍
  • day 36打卡
  • 去中心化时代的通信革命:briefing与cpolar技术融合带来的安全范式革新
  • 明辨 JS 中 prototype 与 __proto__
  • 秋招Day19 - 分布式 - 限流
  • C++11 右值引用 Lambda 表达式
  • 基于深度学习的食管癌右喉返神经旁淋巴结预测系统研究
  • CSS3知识补充
  • git笔记(七)使用代理
  • 从一个“诡异“的C++程序理解状态机、防抖与系统交互
  • 外带服务的温度:藏在包装里的“生活共情力”
  • 从零开始的云计算生活——第三十六天,山雨欲来,Ansible入门
  • Java 注解(Annotation)详解:从基础到实战,彻底掌握元数据驱动开发
  • Containerd简介
  • C++ APM异步编程模式剖析
  • 【AcWing 830题解】单调栈
  • JVM 基础架构全解析:运行时数据区与核心组件
  • OpenCV学习探秘之二 :数字图像的矩阵原理,OpenCV图像类与常用函数接口说明,及其常见操作核心技术详解
  • kafka中生产者的数据分发策略
  • Scrapy分布式爬虫数据统计全栈方案:构建企业级监控分析系统
  • 从0到1学Pandas(七):Pandas 在机器学习中的应用
  • 详解力扣高频SQL50题之1193. 每月交易 I【简单】
  • 深度解析【JVM】三大核心架构:运行时数据区、类加载与垃圾回收机制
  • JAVA算法题练习day1
  • Word文档转HTML查看器(字体颜色、字体背景、超链接、图片、目录等全部转换为html),统计Word文档段落数量、图片数量、表格数量、列表数量
  • 英语中因首字母大小写不同而意义不同的单词表
  • pyskl-Windows系统使用自己的数据集训练(一)
  • 习题5.7 如何分解能使这些数的乘积最大