当前位置: 首页 > 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.dtcms.com/a/299219.html

相关文章:

  • [C/C++内存安全]_[中级]_[再次探讨避免悬垂指针的方法和检测空指针的方法]
  • 《从零开始学 JSSIP:JavaScript 实时通信开发实战》
  • QT核心————信号槽
  • Qt 多线程编程最佳实践
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——6. 传统算法实战:用OpenCV测量螺丝尺寸
  • 基于粒子群算法优化高斯过程回归(PSO-GPR)的多输出回归
  • 数据科学与大数据技术专业的核心课程体系及发展路径全解析
  • Jenkins运行pytest时指令失效的原因以及解决办法
  • Java集合体系详解
  • docker常用命令集(3)
  • 【守护】同为科技SPD:AP-20D/4P产品解析
  • C语言--青蛙跳台阶问题
  • 《聪明人的个人成长》读书笔记
  • DAY31 整数矩阵及其运算
  • FitCoach AI:基于React+CloudBase的智能健身教练应用开发全解析
  • LeetCode 1074:元素和为目标值的子矩阵数量
  • Qt 网络编程进阶:网络安全与加密
  • Spring Cloud Gateway:微服务架构下的 API 网关详解
  • GRE及MGRE应用综合实验
  • ICMPv4报文类型详解表
  • OpenCV学习探秘之二 :数字图像的矩阵原理,OpenCV图像类与常用函数接口说明,及其常见操作核心技术详解
  • 生猪产业新生态:结构调整与种养结合,筑牢农业强国根基
  • Linux内核设计与实现 - 课程大纲
  • Android WorkManager 详解:高效管理后台任务
  • Ruby 数据库访问 - DBI 教程
  • 基于深度学习的胸部 X 光图像肺炎分类系统(七)
  • 基于POD和DMD的压气机叶片瞬态流场分析与神经网络预测
  • java8 List常用基本操作(去重,排序,转换等)
  • 联表实现回显功能
  • 经典IDE之Turbo C