Gatling is an open-source load testing tool that simulates many users hitting your API or website at the same time, then reports response times, throughput, and errors. This generator turns the form below into a reviewable Simulation.scala starter file: configure the target URL, how users arrive, the requests they make, and the pass/fail checks, then download, review, compile, and run only against an authorized target.
Who it's for
Backend / SRE / QA engineers who need real load numbers without writing Scala from scratch. Beginners and Gatling pros alike.
输出内容
A starter Simulation.scala with HTTP protocol, scenarios, requests, checks, and an injection profile. Edit further if needed.
Privacy
Generation occurs in this browser tab. Do not paste live credentials, and review browser/site telemetry policy first.
exec(http(...)) call inside every scenario. Reorder, duplicate, or load a template.import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
class GeneratedSimulation extends Simulation {
val httpProtocol = http
.baseUrl("https://example.com")
.acceptHeader("application/json")
.contentTypeHeader("application/json")
val scn1 = scenario("User Journey")
.repeat(1) {
exec(http("Home Page")
.get("/")
.requestTimeout(10.seconds)
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
.pause(1)
exec(http("Login")
.post("/api/auth/login")
.requestTimeout(10.seconds)
.body(StringBody("""{\"username\":\"${username}\",\"password\":\"${password}\"}"""))
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
.pause(1)
exec(http("Get Products")
.get("/api/products")
.requestTimeout(10.seconds)
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
.pause(1)
exec(http("Product Detail")
.get("/api/products/${id}")
.requestTimeout(10.seconds)
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
.pause(1)
exec(http("Add To Cart")
.post("/api/cart")
.requestTimeout(10.seconds)
.body(StringBody("""{\"productId\":\"${id}\",\"qty\":1}"""))
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
}
val scn2 = scenario("Browse Products")
.repeat(2) {
exec(http("Home Page")
.get("/")
.requestTimeout(10.seconds)
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
.pause(1)
exec(http("Login")
.post("/api/auth/login")
.requestTimeout(10.seconds)
.body(StringBody("""{\"username\":\"${username}\",\"password\":\"${password}\"}"""))
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
.pause(1)
exec(http("Get Products")
.get("/api/products")
.requestTimeout(10.seconds)
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
.pause(1)
exec(http("Product Detail")
.get("/api/products/${id}")
.requestTimeout(10.seconds)
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
.pause(1)
exec(http("Add To Cart")
.post("/api/cart")
.requestTimeout(10.seconds)
.body(StringBody("""{\"productId\":\"${id}\",\"qty\":1}"""))
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
}
val scn3 = scenario("Checkout Flow")
.repeat(1) {
exec(http("Home Page")
.get("/")
.requestTimeout(10.seconds)
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
.pause(1)
exec(http("Login")
.post("/api/auth/login")
.requestTimeout(10.seconds)
.body(StringBody("""{\"username\":\"${username}\",\"password\":\"${password}\"}"""))
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
.pause(1)
exec(http("Get Products")
.get("/api/products")
.requestTimeout(10.seconds)
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
.pause(1)
exec(http("Product Detail")
.get("/api/products/${id}")
.requestTimeout(10.seconds)
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
.pause(1)
exec(http("Add To Cart")
.post("/api/cart")
.requestTimeout(10.seconds)
.body(StringBody("""{\"productId\":\"${id}\",\"qty\":1}"""))
.check(status.is(200))
.check(responseTimeInMillis.lt(500))
.check(substring("success"))
)
}
setUp(
scn1.inject(
rampUsers(100).during(10.minutes),
constantUsersPerSec(100).during(20.minutes),
rampUsers(100).during(5.minutes)
),
scn2.inject(
rampUsers(100).during(10.minutes),
constantUsersPerSec(100).during(20.minutes),
rampUsers(100).during(5.minutes)
),
scn3.inject(
rampUsers(100).during(10.minutes),
constantUsersPerSec(100).during(20.minutes),
rampUsers(100).during(5.minutes)
)
).protocols(httpProtocol)
}
什么是Gatling 负载测试脚本生成器?
根据注入模型、场景、HTTP/WebSocket 请求、检查、feeder 和协议选项生成可审查的 Gatling Scala Simulation 起始文件。 Base URL/协议设置、用户注入与 ramp/hold/down、场景、请求、检查、CSV feeder、repeat/during 循环和可选 WebSocket。 可下载的 Scala Simulation.scala 起始文件,包含配置的注入、场景、协议、请求、检查和 feeder。
打开工具
这个工具能做什么
- 输入: Base URL/协议设置、用户注入与 ramp/hold/down、场景、请求、检查、CSV feeder、repeat/during 循环和可选 WebSocket。
- 设置与处理: 用户注入/ramp/hold/down、repeat/during 场景、HTTP 请求构建、检查、CSV feeder、协议/WebSocket 选项、预览与下载。
- 输出: 可下载的 Scala Simulation.scala 起始文件,包含配置的注入、场景、协议、请求、检查和 feeder。
使用方法
- 添加输入。 Base URL/协议设置、用户注入与 ramp/hold/down、场景、请求、检查、CSV feeder、repeat/during 循环和可选 WebSocket。
- 检查设置。 用户注入/ramp/hold/down、repeat/during 场景、HTTP 请求构建、检查、CSV feeder、协议/WebSocket 选项、预览与下载。
- 生成、核对并导出结果。 可下载的 Scala Simulation.scala 起始文件,包含配置的注入、场景、协议、请求、检查和 feeder。
主要功能
- 输入: Base URL/协议设置、用户注入与 ramp/hold/down、场景、请求、检查、CSV feeder、repeat/during 循环和可选 WebSocket。
- 设置与处理: 用户注入/ramp/hold/down、repeat/during 场景、HTTP 请求构建、检查、CSV feeder、协议/WebSocket 选项、预览与下载。
- 输出: 可下载的 Scala Simulation.scala 起始文件,包含配置的注入、场景、协议、请求、检查和 feeder。
适用场景
- 根据注入模型、场景、HTTP/WebSocket 请求、检查、feeder 和协议选项生成可审查的 Gatling Scala Simulation 起始文件。
- 适合需要以下输出或诊断结果时使用:可下载的 Scala Simulation.scala 起始文件,包含配置的注入、场景、协议、请求、检查和 feeder。
- 可放在下一项已确认的流程步骤之前:在目标 Gatling 项目中编译、执行获授权 smoke test,并在监控下逐步升压。
限制与安全说明
- 生成器不会执行 Gatling,也不保证编译成功。 Scala DSL 与项目结构随 Gatling 版本和构建工具变化;依赖、导入、feeder、session 变量、检查、TLS、认证与目标授权都需审查。
故障排查
- 从一条已获授权的请求和最小场景开始;在真实项目中确认目标工具版本、语法、import/dependency 与数据引用。
- 把凭据移到环境变量或 secret management,编译或 lint 生成文件,再在升压前执行低负载 smoke test。
- 生成器不会执行 Gatling,也不保证编译成功。 Scala DSL 与项目结构随 Gatling 版本和构建工具变化;依赖、导入、feeder、session 变量、检查、TLS、认证与目标授权都需审查。
常见问题
什么是Gatling 负载测试脚本生成器?
根据注入模型、场景、HTTP/WebSocket 请求、检查、feeder 和协议选项生成可审查的 Gatling Scala Simulation 起始文件。
如何使用Gatling 负载测试脚本生成器?
添加符合要求的输入,检查页面设置,并在复制或下载前核对结果。 预期输出:可下载的 Scala Simulation.scala 起始文件,包含配置的注入、场景、协议、请求、检查和 feeder。
支持哪些输入?
Base URL/协议设置、用户注入与 ramp/hold/down、场景、请求、检查、CSV feeder、repeat/during 循环和可选 WebSocket。
会生成什么输出?
可下载的 Scala Simulation.scala 起始文件,包含配置的注入、场景、协议、请求、检查和 feeder。
有哪些限制?
生成器不会执行 Gatling,也不保证编译成功。 Scala DSL 与项目结构随 Gatling 版本和构建工具变化;依赖、导入、feeder、session 变量、检查、TLS、认证与目标授权都需审查。
相关 AppKiro 工具
先用已验证的示例开始
先生成最小脚本并在目标项目中审查;任何受控升压前,只能对已获授权的非生产系统运行。
打开工具