【问题标题】:spring boot microservice end to end testing with cucumber and database verificationspring boot 微服务端到端测试,带有黄瓜和数据库验证
【发布时间】:2020-01-05 11:32:54
【问题描述】:

我的项目基于事件驱动的微服务架构。我们正在尝试对 Cucumber 进行端到端测试,以便测试中的功能以业务可读格式提供。

详情如下。 服务架构:

涉及 4 个微服务。我们向服务 A 发送请求,请求被处理并存储在 DB 中,服务 A 发布事件,服务 B 消费该事件,服务 B 再次处理事件并将结果存储在 DB 中并发布要消费的事件由服务 C 和类似的服务 D。

用户(向服务 A 发布请求)服务 A ->(处理,存储在数据库中并将事件发布到服务 B)-> 服务 b(从 A 消费事件,处理并将结果存储在数据库中,将事件发布到 C )...

测试策略: 作为端到端测试的一部分,我们会将 post 请求发送到服务 A。服务 A 将仅返回响应 200,没有响应正文。

我们需要对每个服务数据库中的数据进行验证,并断言它符合预期。

类似功能文件的东西

鉴于 系统处于预期状态。 什么时候 向服务 A 发送请求 和 服务返回 200 响应 和 验证服务 A 数据库中是否存在已处理的数据 和 验证服务 B 数据库中是否存在已处理的数据 和 验证服务 C 数据库中是否存在已处理的数据

**我想明白, 1.进行这种测试的正确方法应该是什么。

  1. 这是在 DB 中进行端到端测试和验证的正确方法还是应该使用其他方法。**

【问题讨论】:

    标签: spring-boot cucumber microservices bdd spring-test


    【解决方案1】:

    这是你的问题:

    我们需要对每个服务数据库中的数据进行验证,并断言它符合预期。

    这是在单元测试应用程序测试中完成的。

    如果您需要验证每个数据库中的数据是否正确,那么您正在尝试进行单元测试,但您的单元是一组服务组合。

    你正在做一个巨大的单元测试。


    单元测试

    单元测试验证每个服务中的逻辑是否正确

    独立应用测试

    测试 api 是否以正确的状态代码响应正确的错误。它可以正确读取和写入数据库。这里测试一下应用的api。

    端到端

    您将一堆服务组合在一起并发布一些数据,然后验证您返回的数据是否符合预期。 每个服务都做了什么你就不细说了,这在之前的测试中已经验证过了。

    这是对服务基本上可以通信并返回您期望的内容的最后检查。 你对他们的做法不感兴趣


    您的情况

    你在你的服务上发布了一些东西,你会得到 200 的回报。那么你应该很高兴并且测试通过了。因为服务达到了你的预期,你发布了一些东西,它返回了 200。

    早期的测试已经通过(单元测试、应用程序测试),它们告诉您每个服务都遵循给定规范的故事。因此,当您准备好端到端时,您已经测试了到目前为止的所有内容。

    只有在所有东西都被隔离测试到那时,你才会做端到端。

    在端到端测试中,您对它的执行方式完全不感兴趣,您只对它返回的内容感兴趣。


    不要在端到端测试中进行单元测试

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多