多场景并行执行

Parallel execution of multiple scenarios

多场景并行执行的最佳实践是什么?例如,30% 的用户执行场景 1,70% 的用户执行场景 2。

下面的代码是正确的方式还是有条件地执行 REST 调用的场景更好?

class MySimulation extends Simulation {

  val userIdsData = csv(userIdsCSV).queue



  ...



  val scenario1 = scenario("Scenario 1")

    .feed(userIdsData)

    .get(...)



  val scenario2 = scenario("Scenario 2")

    .feed(userIdsData)

    .get(...)

    .post(...)



  setUp(scenario1.inject(rampUsers(30) over (ramp seconds))

      .protocols(HttpConfig.value(baseURL)),

    scenario2.inject(rampUsers(70) over (ramp seconds))

      .protocols(HttpConfig.value(baseURL))

  )

}

无论你做什么都很好。

您的方式 运行 您将看到请求是 运行 并行的设置。

Gatling 将 运行 SetUp 中的每个项目并行进行,因为场景中定义的每个项目将是 运行 sequentially。从 link

可以看出

The definition of the injection profile of users is done with the inject method. This method takes as argument a sequence of injection steps that will be processed sequentially.

所以你上面的代码将 运行 scenario01 ramp to 30 over x secondsscenario02 ramp to 70 over y seconds 并行。

您也可以尝试使用以下代码。

scenario1.inject(rampConcurrentUsers(0) to (6) during(10),constantConcurrentUsers(6) during(60 seconds)),

scenario2.inject(rampConcurrentUsers(0) to (4) during(10),constantConcurrentUsers(4) during(60 seconds))