快速上手

快速上手 #

本节帮助你在 5 分钟内理解 Loadgen 的工作方式并运行第一个测试。

核心文件 #

Loadgen 运行只需要两个文件:

文件作用
loadgen.yml全局配置:环境变量、默认连接信息
loadgen.dsl测试定义:变量、请求、断言、变量注册

最小示例 #

loadgen.yml

env:
  ES_ENDPOINT: http://localhost:9200
  ES_USERNAME: admin
  ES_PASSWORD: admin

loadgen.dsl

GET $[[env.ES_ENDPOINT]]/_cluster/health
# request: {
#   basic_auth: {
#     username: "$[[env.ES_USERNAME]]",
#     password: "$[[env.ES_PASSWORD]]",
#   },
# },
# assert: {
#   _ctx.response.status: 200,
# },

运行

loadgen -run loadgen.dsl -config loadgen.yml -d 10 -c 1

这条命令会以 1 并发持续 10 秒请求集群健康接口。

DSL 语法结构 #

一个 DSL 文件由以下部分组成(从上到下):

# env: { ... },              ← 环境变量默认值(可选)
# runner: { ... },           ← 运行控制参数(可选)
# variables: [ ... ],        ← 变量定义(可选)

METHOD /path                  ← 请求行(必须)
{request body}                ← 请求体(可选,紧跟请求行)
# request: { ... },          ← 请求级配置(可选)
# assert: { ... },           ← 断言(可选)
# register: [ ... ]          ← 动态变量注册(可选)

注释块约定 #

DSL 中所有配置块均写在 # 注释内,使用类 JSON5 语法:

# runner: {
#   total_rounds: 1,
#   no_warm: true,
# },

这种设计使 DSL 文件本身就是合法的 HTTP 请求描述,配置信息作为元数据嵌入。

变量引用 #

使用 $[[变量名]] 引用变量值:

  • $[[env.ES_ENDPOINT]] — 引用环境变量
  • $[[uuid]] — 引用 variables 中定义的变量
  • $[[token]] — 引用通过 register 动态注册的变量

多请求编排 #

一个 DSL 文件可以包含多个请求,按顺序执行:

POST /account/login
{"email":"admin@mail.com","password":"$[[env.PASSWORD]]"}
# assert: (200, {}),
# register: [
#   { token: "_ctx.response.body_json.access_token" },
# ]

GET /api/data
# request: {
#   headers: [
#     {Authorization: "Bearer $[[token]]"},
#   ],
# },
# assert: {
#   _ctx.response.status: 200,
# },

前一个请求通过 register 注册的变量可被后续请求使用,实现请求编排。

YAML 配置(loadgen.yml) #

YAML 配置提供全局设定,和 DSL 中的 runner/env 等价但优先级更低(DSL 中的定义会覆盖 YAML 中的同名项)。

env:
  ES_ENDPOINT: http://localhost:9200
  ES_USERNAME: admin
  ES_PASSWORD: admin

runner:
  total_rounds: 1
  no_warm: true
  assert_invalid: true
  assert_error: true
  default_endpoint: "$[[env.ES_ENDPOINT]]"
  default_basic_auth:
    username: "$[[env.ES_USERNAME]]"
    password: "$[[env.ES_PASSWORD]]"

variables:
  - name: id
    type: sequence
  - name: uuid
    type: uuid

两种运行模式 #

模式行为适用场景
性能测试模式(默认)在指定时间内循环执行所有请求压测、基准测试
轮次模式执行固定轮次后退出功能验证、集成测试、CI

切换方式:设置 runner.total_rounds 即进入轮次模式。

下一步 #

Edit 编辑本页