Gatling : session.isFailed 即使先前执行的请求已成功返回 true

Gatling : session.isFailed returning true even the previously executed request has succeeded

我的任务是 运行 一些性能测试,以便对我们的系统进行基准测试。我设计的场景如下:

var scn: ScenarioBuilder = scenario("Sample Scenario")
    .exec(
      forever(
        exec(<first request>)
          .pause(2, 5)
          .doIf(session => !session.isFailed) {
            randomSwitch(
              70d -> exec(<second request>),
              15d -> exec(<third request),
              15d -> exec(<fourth request>)
            )
          }
      )
    )

我在系统中执行故障转移测试时遇到了这个问题。我注意到在模拟过程中,一旦系统出现故障,所有请求都会在“第一个请求”之后停止执行。

我检查了日志,“第一个请求”成功了,据我所知,!session.isFailed 条件应该为真,允许进一步执行场景。

任何人都可以分享为什么条件被标记为 false 而不是 true 吗?

根据 Gatling.io 团队:


会话即使在多次请求后仍保持其状态。

如你所说,a failure was introduced in the system

主要目标之一是在您的场景中有一些点,虚拟用户可能会离开(因为失败)exitHereIfFailed

如果您想恢复,您应该将会话标记为成功。

var scn: ScenarioBuilder = scenario("Sample Scenario")
    .exec(
      forever(
        exec(session => session.markAsSucceeded) // <---- reset the status
          .exec(<first request>)
          .pause(2, 5)
          .doIf(session => !session.isFailed) {
            randomSwitch(
              70d -> exec(<second request>),
              15d -> exec(<third request),
              15d -> exec(<fourth request>)
            )
          }
      )
    )