使用jmeter实战测试

📅 2026/7/7 12:17:14 👁️ 阅读次数 📝 编程学习
使用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,但是没有入库。