Gatling:是否可以像用户一样完成个别场景的提升?
Gatling: Can ramping up of individual scenarios be done just like the users?
考虑使用 Gatling 测试 API 的示例。对于一些奇怪的要求,我必须为每个用户获得一个场景
var scenarioList // This is of type mutable list
我在这个列表中添加了很多场景,因为我的请求正文应该因每个用户而异,否则请求将不会processed.This个别场景此时配置了以下加特林模拟
Ex: scenarioList += scenario1. inject(rampUsers(1) over (1 minutes)
scenarioList += scenario2. inject(rampUsers(1) over (1 minutes)
scenarioList += scenario3. inject(rampUsers(1) over (1 minutes)
.
.
.
so on
现在在全局设置中调用所有这些场景时如下所示
setUp(scenarioList: _*).assertions(
forAll.successfulRequests.percent.gte(90)
)
假设我有 1000 个用户(scenarioList
大小为 1000),这里的问题是所有 1000 个用户都会同时启动,但我想增加这些用户。所以问题是增加场景而不是 运行 它们并行。
这可能吗?如果没有,还有其他方法可以遵循吗?
当请求正文发生变化时,我无法享受 运行 具有多个用户的相同场景。请告诉我。
我能够通过在场景中使用 feeders
来解决这个问题,所以我不需要创建多个场景。
使用 feeders
Gatling 提供了参数化任何 http 请求的请求主体的选项。
代码示例:
var randomSession = Iterator.continually(Map("randsession" -> ( req.replace("0000000000", randomStringGenerator.randomString(10)))))
val httpConf = http
.baseURL("http://localhost:5000")
.acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
.userAgentHeader("Mozilla/4.0(compatible;IE;GACv10. 0. 0. 1)")
val scn = scenario("Activate")
.feed(randomSession)
.exec(http("activate request")
.post("/login/activate")
.body(StringBody("""${randsession}"""))
.check(status.is(200)))
.pause(5)
setUp(
scn.inject(atOnceUsers(5))
).protocols(httpConf)
}
考虑使用 Gatling 测试 API 的示例。对于一些奇怪的要求,我必须为每个用户获得一个场景
var scenarioList // This is of type mutable list
我在这个列表中添加了很多场景,因为我的请求正文应该因每个用户而异,否则请求将不会processed.This个别场景此时配置了以下加特林模拟
Ex: scenarioList += scenario1. inject(rampUsers(1) over (1 minutes)
scenarioList += scenario2. inject(rampUsers(1) over (1 minutes)
scenarioList += scenario3. inject(rampUsers(1) over (1 minutes)
.
.
.
so on
现在在全局设置中调用所有这些场景时如下所示
setUp(scenarioList: _*).assertions(
forAll.successfulRequests.percent.gte(90)
)
假设我有 1000 个用户(scenarioList
大小为 1000),这里的问题是所有 1000 个用户都会同时启动,但我想增加这些用户。所以问题是增加场景而不是 运行 它们并行。
这可能吗?如果没有,还有其他方法可以遵循吗? 当请求正文发生变化时,我无法享受 运行 具有多个用户的相同场景。请告诉我。
我能够通过在场景中使用 feeders
来解决这个问题,所以我不需要创建多个场景。
使用 feeders
Gatling 提供了参数化任何 http 请求的请求主体的选项。
代码示例:
var randomSession = Iterator.continually(Map("randsession" -> ( req.replace("0000000000", randomStringGenerator.randomString(10)))))
val httpConf = http
.baseURL("http://localhost:5000")
.acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
.userAgentHeader("Mozilla/4.0(compatible;IE;GACv10. 0. 0. 1)")
val scn = scenario("Activate")
.feed(randomSession)
.exec(http("activate request")
.post("/login/activate")
.body(StringBody("""${randsession}"""))
.check(status.is(200)))
.pause(5)
setUp(
scn.inject(atOnceUsers(5))
).protocols(httpConf)
}