加特林负载测试和运行方案

问题描述 投票:1回答:1

我正在尝试创建三种方案:

  • 第一个场景将运行30秒的一堆GET请求
  • 第二个和第三个方案将并行运行,直到第一个方案完成。

我希望将第一种情况的请求从报告中排除。

我已经基本实现了要达到的目标,但是没有看到预期的结果:

val myFeeder = csv("somefile.csv")

val scenario1 = scenario("Get stuff")
.feed(myFeeder)
.during(30 seconds) {
  exec(
      http("getStuff(${csv_colName})").get("/someEndpoint/${csv_colName}")
  )
}

val scenario2 = ...

val scenario3 = ...

setUp(
  scenario1.inject(
    constantUsersPerSec(20) during (30 seconds)
  ).protocols(firstProtocaol),


  scenario2.inject(
    nothingFor(30 seconds), //wait 30s
    ...
  ).protocols(secondProt)

  scenario3.inject(
    nothingFor(30 seconds),  //wait 30s
    ...
  ).protocols(thirdProt)

)

我看到第一个方案在整个测试中都在运行。 30秒钟后还不停止吗?

对于第一种情况,我想循环浏览CSV文件并为每行执行一个请求。也许每秒5-10个请求,我该如何实现?

我也希望它在30年代后停止,然后并行运行其他两个。因此,上述最后两种情况下的nothingFor

另外,如何从报告中排除,有可能吗?

谢谢

scala testing qa gatling scala-gatling
1个回答
0
投票

由于注射配置文件和“获取材料”方案之间的设置组合,您可能无法获得预期的结果。

constantUsersPerSec(20) during (30 seconds)

每秒将在场景“获取资料”中启动20个用户,持续30秒。因此,即使在30秒内,也会有20位用户开始“获取资料”。当用户执行“获取材料”方案时,由于.during循环,他们在30秒的过程中反复发出“获取”请求。

因此至少,您将让用户执行“获取资料” 60秒-完全执行其他方案。根据getStuff调用的执行时间,它甚至可能更长。

© www.soinside.com 2019 - 2024. All rights reserved.