【问题标题】:Can I run some code after a user ends with error in Gatling? [duplicate]我可以在用户以 Gatling 错误结束后运行一些代码吗? [复制]
【发布时间】:2021-10-18 10:01:56
【问题描述】:

我正在使用 Karate + Gatling 来测试一个异步后端系统。

测试中的用户

  1. 向后端提交工单
  2. 等待工单开始处理(最多 10 个工单正在并行处理,其余工单在队列中等待)
  3. 处理开始时,等待它完成(~ 1 分钟)
  4. 处理完成后,检查结果并结束测试

问题是,如果在第 2 步或第 3 步测试失败(GET 请求超时,随机流量失败),票证仍然停留在后端,需要时间来处理,干扰以下用户。

如果在第 2 步或第 3 步测试失败,我想手动删除票证。加特林可以吗?如果用户以失败告终,是否有某种方法可以执行一些 after 钩子?我可以知道测试失败的地方吗?

【问题讨论】:

    标签: karate


    【解决方案1】:

    我建议您在这个领域进行一些研究并将您的发现回馈给社区。​​p>

    空手道有钩子的概念:https://stackoverflow.com/a/59080128/143475

    因此,如果您实施RuntimeHook,您应该可以完全控制检测错误并执行一些自定义逻辑。

    也就是说,团队通常会进行预清理,因为正如您刚刚发现的那样,进行“后清理”要困难得多 - 如果失败也会发生什么。也许您应该只记录一些事务 ID 并手动进行清理。参考:https://stackoverflow.com/a/60944060/143475

    这个答案可能会给你一些创意。例如,您可以运行一个持续轮询数据库中任何状态更改的 Java 线程:https://stackoverflow.com/a/69406420/143475

    请注意,有一些 Gatling 特定的方法可以解决这个问题:

    https://stackoverflow.com/a/56729198/143475

    End Gatling simulation when scenario fails BUT generate a report

    【讨论】:

    • 当然我预先清理了我的数据库——问题是我正在运行的模拟在运行期间会产生数据库混乱——所以我需要在运行期间也清除它。数据库不知道正在轮询它的 Gatling 用户已经结束,因此 Java 线程也不是办法。 RunetimeHook 可能是这样,我会调查的。
    • 最后,afterScenario = ... 确实是解决方案
    猜你喜欢
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多