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

使用jmeter实战测试

Jmeter安装教程

在Jmeter官网下载压缩文件(Apache JMeter - Download Apache JMeter),选择二进制下的.zip文件。

解压后双击bin\jmeter.bat运行程序,有需要也可以配置环境变量。

实战过程

我这里实战测试的是一个拼团业务抢占库存的工程,也就是经典的"防超卖"环节。

测试分为很多种类型,譬如功能测试,压力测试,这里先用10条数据进行功能测试,测试目标是防止“超卖”情况的发生。

Jmeter配置

配置Thread Group

1. Thread Group
先在线程组里设置并发:

  • Number of Threads:比如 10
  • Ramp-up Period:比如 10
  • Loop Count:先填 1

如果你是压测,就后面再慢慢加到 50 / 100 / 200。


2. HTTP Request Defaults
右键 Thread Group -> Add -> Config Element -> HTTP Request Defaults

填:

  • Protocol:http
  • Server Name or IP:你的服务地址
  • Port Number:你的服务端口
  • Path:先空着

3. HTTP Header Manager
右键 Thread Group -> Add -> Config Element -> HTTP Header Manager

这里你只要加一条:

  • Name:Content-Type
  • Value:application/json

如果你有登录态,再加:

  • Name:Authorization
  • Value:Bearer ${token}

4. HTTP Request
右键 Thread Group -> Add -> Sampler -> HTTP Request

填写:

  • Method:POST
  • Path:/api/v1/gbm/trade/lock_market_pay_order
  • Body Data:放 JSON

注:根据controller接收实体类指定JSON body

示例:

{ "userId": "${userId}", "teamId": "${teamId}", "activityId": ${activityId}, "goodsId": "${goodsId}", "source": "${source}", "channel": "${channel}", "outTradeNo": "${outTradeNo}", "notifyConfigVO": { "notifyType": "${notifyType}", "notifyUrl": "${notifyUrl}", "notifyMQ": "${notifyMQ}" } }

配置CSV文件

以上过程中需要用到大量数据,因此需要通过csv文件一次性交给Jmeter处理,我直接用codex给我生成了一个csv文件。

CSV 和请求体的对应关系
你现在 CSV 里字段是:

  • userId
  • teamId
  • activityId
  • goodsId
  • source
  • channel
  • outTradeNo
  • notifyType
  • notifyUrl
  • notifyMQ

那就要保证 Body Data 里变量名和 CSV 完全一致。

csv config配置
  • Filename:指向CSV这个文件
  • Variable Names:
    • userId,teamId,activityId,goodsId,source,channel,outTradeNo,notifyType,notifyUrl,notifyMQ
  • Delimiter:,
  • Recycle on EOF:
    • 想循环压测就 True
    • 想每行只用一次就 False
  • Stop thread on EOF:
    • 一般先 True

开始测试

启动你的springboot工程,

点击Jmeter启动按钮,

可以看到我这里丢出了cn.bugstack.types.exception.AppException: null异常,这个就是我的项目中出现库存库存抢占失败抛出的异常,也就是说成功了。

数据库中也成功了,只有6,7,8三个user成功组队,而9,10虽然配置的同一个team,但是没有入库。

http://www.jsqmd.com/news/804636/

相关文章:

  • 告别命令行:在VSCode中通过可视化Git历史插件,高效管理代码版本与协作
  • 纳米多孔储能材料:从液晶模板法到产业化挑战
  • # 凌晨三点,我终于使用DMXAPI教程和那个Bug说了再见ヾ(•ω•`)o
  • (二)windows下CLIProxyAPI:手动添加ChatGPT账号(个人记录)
  • GetQzonehistory:3步轻松备份你的QQ空间历史说说
  • 01《CMMI AIM概述与战略定位——AI治理的操作系统》
  • 实测Taotoken多模型聚合服务在持续调用中的延迟与稳定性表现
  • 软工5.12
  • 百度网盘macOS版终极提速指南:免费解锁SVIP高速下载体验
  • 瑞德克斯平台:风险管理理念的深度实践
  • Windows下Python包管理权限踩坑实录:从WinError 5到WinError 32的完整解决流程
  • Spring AI 1.0 实战:Java 开发者必须掌握的 AI 开发框架
  • 无人机系留供电方案:从基础原理到工程实践详解
  • 抖音无水印视频批量下载终极指南:免费开源工具完整教程
  • 市面上原木楼梯扶手品牌口碑
  • 无水印视频怎么保存?亲测有效方法,多款工具轻松搞定 - 爱上科技热点
  • ImageGlass:Windows平台轻量级图像浏览器的终极解决方案,免费开源支持90+格式
  • OmenSuperHub:彻底释放惠普OMEN游戏本性能的开源神器
  • AI辅助开发效率革命:AgentBoard原生macOS应用深度解析
  • 数据中心机架内互连新范式:为何PCIe正取代以太网与InfiniBand?
  • RuoYi-Cloud项目实战:如何为Oracle数据库量身定制一套微服务监控与网关方案?
  • 开源工具LMAO:通过浏览器自动化免费调用ChatGPT与Copilot API
  • 四川盛世钢联成都建材销售频道 -螺纹钢|盘螺|盘圆|线材|HRB400E|HR500E高强抗震钢筋 - 四川盛世钢联营销中心
  • 使用python快速接入taotoken调用多个主流大模型
  • Taisaw台硕/tst嘉硕TZ4228BW6414一级代理分销经销
  • 【call aclnnInNegInf failed】晟腾NPU卡上报错
  • AzurLaneAutoScript:碧蓝航线终极自动化脚本,24/7全自动游戏管家
  • C 语言实现海量数据 TopK 问题:小顶堆实战详解
  • iOS越狱防火墙ijfw:从网络流量监控到精细化应用管控实战
  • IDA实战:从ARM指令解析到跨平台二进制动态调试