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

发布于:2025-07-27 ⋅ 阅读:(12) ⋅ 点赞:(0)


掌握用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场景设计精髓!


网站公告

今日签到

点亮在社区的每一天
去签到