Gatling:场景中的并发执行
Gatling: Concurrent execution within a scenario
我正在尝试测试主页的加载时间。
加载主页时浏览器发出的 HTTP 请求顺序如下
A -> B -> [C, D, E]
也就是说
- B 在收到 A 的响应后执行并且
- 收到B的响应后,C、D、E同时启动
我尝试了以下方法来模拟:
方法一
A, B, C, D, E
各有一个场景。
所有场景都配置了 50 个用户。我试过这个:
A.inject().andThen(B.inject.andThen(C.inject(), D.inject(), E.inject()))
问题在于,B 只有在 A 的所有用户都停止后才会启动。这并不能准确地模拟主页加载,因为我希望完成 A 的用户无需等待其他用户就可以开始 B。
方法二
我创建了一个包含所有 HTTP 请求的场景。
exec(A).exec(B).exec(C).exec(D).exec(E)
这意味着,例如,D 仅在收到 C 的响应后才执行。这是不对的。
解决问题的最佳方法是什么?
这不是 Gatling 的工作方式,您的实际 Web 客户端也不是。
您应该有 1 个场景,其中用户执行请求 A,然后请求 B,然后使用 resources 并发请求 C、D 和 E。
val scn = scenario("foo")
.exec(requestA)
.exec(requestB
.resources(requestC, requestD, requestE)
)
我正在尝试测试主页的加载时间。 加载主页时浏览器发出的 HTTP 请求顺序如下 A -> B -> [C, D, E]
也就是说
- B 在收到 A 的响应后执行并且
- 收到B的响应后,C、D、E同时启动
我尝试了以下方法来模拟:
方法一
A, B, C, D, E
各有一个场景。
所有场景都配置了 50 个用户。我试过这个:
A.inject().andThen(B.inject.andThen(C.inject(), D.inject(), E.inject()))
问题在于,B 只有在 A 的所有用户都停止后才会启动。这并不能准确地模拟主页加载,因为我希望完成 A 的用户无需等待其他用户就可以开始 B。
方法二
我创建了一个包含所有 HTTP 请求的场景。
exec(A).exec(B).exec(C).exec(D).exec(E)
这意味着,例如,D 仅在收到 C 的响应后才执行。这是不对的。
解决问题的最佳方法是什么?
这不是 Gatling 的工作方式,您的实际 Web 客户端也不是。
您应该有 1 个场景,其中用户执行请求 A,然后请求 B,然后使用 resources 并发请求 C、D 和 E。
val scn = scenario("foo")
.exec(requestA)
.exec(requestB
.resources(requestC, requestD, requestE)
)