加特林,测试并发问题

时间:2020-06-15 14:28:10

标签: testing concurrency gatling

我们的系统中存在并发问题。这主要发生在通过外部系统通过我们的API进行突发加载期间,并且无法手动复制。

因此,我想创建一个加特林测试以 1)在需要时进行重现,并 2)检查我们是否已解决问题。

1)我已经完成了第一点。我创建了两个请求以检查状态 201 ,并与许多用户一起运行它们。

2)此问题允许创建具有相同唯一值的两个资源。预期的行为是创建一个行为,而其他行为应该失败,并显示状态 409 。但是我不知道如何检查任何请求,但至少要检查一次,以 201 完成,而其他所有请求都以 409 失败。

我们可以使用Gatling对所有请求进行某种后检查吗?

谢谢

2 个答案:

答案 0 :(得分:1)

存储已在全局ConcurrentHashMap中看到的结果,并根据CHM中的存在情况(在缺少的情况下为201,在现有的情况下为409)在函数的is检查中计算期望值。

答案 1 :(得分:0)

我认为您无法通过对呼叫本身进行检查来实现您的目标,因为加特林用户无法看到返回给其他用户的结果,因此您无法知道是否成功(201)请求已经进行了(缺少使用校验转换器进行的一些非常凌乱的黑客攻击)

但是您可以使用仿真级别的断言来做到这一点。 因此,您可以在要求中断言您希望获得201响应

http("my request")
  .get("myUrl")
  .check(status.is(201))

这会导致所有这些请求中的一个失败,而模拟失败,您可以使用断言来指定...

setUp(
  myScenario.inject(
    ...
  )
)
.assertions(
  details("my request").successfulRequests.count.is(1))