Gatling:场景中的并发执行

Gatling: Concurrent execution within a scenario

我正在尝试测试主页的加载时间。 加载主页时浏览器发出的 HTTP 请求顺序如下 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)
  )