Gatling 的启动脚本 gatling.sh (Unix/Linux) 或 gatling.bat (Windows) 位于安装目录的 bin/ 下。执行流程是:启动 -> 选择或指定要运行的模拟类 -> 运行并生成报告。
要查看所有基础参数,可以使用 gatling.sh -h。主要参数可分为两类:
1. 运行控制参数
这些参数直接控制测试的启动和执行,一般需要组合使用。
-s <simulation class>:最重要的参数。指定要运行的模拟类的完全限定名(如 computerdatabase.BasicSimulation),可以跳过交互式选择。
-rf <results folder>:指定结果报告的输出目录。默认是 $GATLING_HOME/results。
-rd <run description>:为本次运行提供一个描述,该描述会显示在生成的报告中。
-m / --mute:以静默模式运行,不输出除错误外的任何信息到控制台。
-nr / --no-reports:仅运行测试,但不生成 HTML 报告。通常用于配合 -ro 参数。
-ro <report folder>:仅针对已存在的、包含日志的结果文件夹(由 -nr 运行产生)生成HTML报告。
2. 配置覆盖参数
这类参数用于在命令行临时覆盖 gatling.conf 配置文件中的设置。
-onn <output directory base name>:覆盖报告文件夹名称的前缀。
-df <data folder>:覆盖存放 csv 等数据文件的目录路径。
-bdf <bodies folder>:覆盖存放请求体的目录路径。
-sf <simulations folder>:覆盖查找模拟类文件的目录。
执行示例
bash
# 方式一:交互式运行(最常用)
$GATLING_HOME/bin/gatling.sh
# 按提示输入模拟类编号和描述[citation:10]
# 方式二:非交互式直接运行(适用于自动化)
$GATLING_HOME/bin/gatling.sh \
-s computerdatabase.BasicSimulation \
-rd "My Baseline Test" \
-rf /opt/tests/results/
实现批量执行的方法
Gatling本身不直接提供批量运行多个模拟类的单一命令,可以通过以下几种方式实现。
方法一:Shell/Batch脚本循环
这是最直接、灵活的方式。编写一个脚本,循环调用 gatling.sh 执行不同的模拟类。
bash
#!/bin/bash
SIMULATIONS=("simulation.A" "simulation.B" "simulation.C")
for SIM in "${SIMULATIONS[@]}"
do
echo "开始运行: $SIM"
$GATLING_HOME/bin/gatling.sh -s "$SIM" -m
# 可以在这里添加每个测试完成后的处理,如移动报告、发送通知等
done
方法二:使用构建工具 (Maven/Gradle/SBT)
对于项目集成,这是首选。通过在构建脚本中配置多个执行目标来实现。
Maven示例 (使用 gatling-maven-plugin):在 pom.xml中配置多个 <execution>,每个指定不同的simulationClass,然后运行mvn gatling:test。
方法三:创建元模拟类
编写一个顶层的Scala模拟类,使用Gatling的 setUp 方法按顺序或逻辑组合多个子场景。这种方法在技术上最“原生”,但需要对Gatling的DSL有更深理解。
方法四:使用专用编排工具
对于更复杂的分布式或容器化环境,可以考虑专门的编排方案。
Gatling Commander:这是一个Kubernetes Operator的CLI工具,可以读取一个定义了多个测试场景的YAML配置文件,自动在K8s集群上按顺序创建和运行分布式Gatling测试任务,并收集结果。
Gatling Pea:这是一个支持多节点分布式压测的包装工具,可以通过其管理功能来编排多个测试任务。
注意事项:
资源路径:保证脚本、数据文件 (csv) 和请求体文件的路径在命令行执行模式下是正确的。可以通过 -df 和 -bdf 参数调整。
结果管理:在批量执行时,为每次运行使用唯一的 -rd 描述和/或使用 -onn 或 -rf 来分隔不同运行的结果,避免覆盖。
环境变量:可以通过 JAVA_OPTS 环境变量为Gatling进程传递JVM参数,如堆内存设置 (-Xmx4G -Xms1G)。
结果后处理:批量自动化运行时,可以编写脚本解析 results 目录下的 simulation.log 文件,或直接处理生成的 index.html 报告,以提取重要指标并生成集成报告。
Gatling的命令行执行重要在于 -s 参数指定模拟类,而批量执行则需通过外层脚本、构建工具或专用编排框架来实现。