【问题标题】:Can I use karate for testing microservices? [duplicate]我可以使用空手道来测试微服务吗? [复制]
【发布时间】:2020-12-30 04:22:05
【问题描述】:

让我介绍一些背景。我们正在尝试在一组写入 kafka、移动文件并与其他服务通信以进行文件移动的 Spring Boot 服务之间进行 e2e 测试。我认为我们在使用模拟和诸如此类的集成测试方面做得很好,但是有没有办法利用空手道或任何其他测试框架来帮助实现少数主要场景的完全 e2e?就像我可以对一个服务进行测试,该服务获取实际数据并发送到下一个服务而不进行模拟?

我希望这是有道理的。谢谢。

【问题讨论】:

  • 空手道绝对可以做到这一点。我们倾向于使用 Wiremock 独立实例来为任何下游服务存根,并记录 SUT 发送的请求。我们编写空手道测试,以便它们命中 SUT,然后通过调用它的 __admin/requests 端点来验证 SUT 是否对下游“服务”(Wiremock)进行了预期的调用,以查看它发送了什么。这比在所有东西都运行的情况下进行测试更便宜,并且可以更清楚地了解 SUT 是否遵守接口合同。像 docker-compose 这样的工具也可以以低廉的成本进行测试。

标签: spring-boot e2e-testing karate


【解决方案1】:

“被测系统”是单个服务还是服务集合并不重要——我们只需要考虑系统的输入和系统的输出。从描述来看,“被测系统”确实......

(a) 与一些下游服务交互:您应该能够使用空手道模拟它们 (b) 向 Kafka 生产:看看https://github.com/Sdaas/karate-kafka 是否可以在这里提供帮助 (c) 做一些文件 i/o

对于最后一个,您可能需要编写一些可以在空手道中调用的自定义 Java 代码。有关示例,请参阅https://github.com/Sdaas/karate-kafka/tree/master/src/test/java/karate/java

【讨论】:

    【解决方案2】:

    正如您所说,空手道用于 e2e 测试。答案很简单:如果您可以根据某些操作的结果评估所有微服务的整体状态变化,那么可以。

    当然,所有这些更改、操作和评估都必须是 HTTP,因为它是空手道的主要协议。

    【讨论】:

    【解决方案3】:

    答案是肯定的。即使在同一个Scenario 中,您也可以调用2 个不同的URL-s。因此,例如,您可以从服务 A 中 GET 并将对 POST 的响应用于服务 B。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多