【问题标题】:Test chain of services in microservices微服务中的测试服务链
【发布时间】:2020-10-14 08:54:50
【问题描述】:

我是微服务新手,在测试服务链方面遇到了一些问题。 我的应用程序是在 Spring Boot 中开发的,包含以下三个服务(每个服务都是一个独立的 Spring Boot 应用程序):

用户向服务 A 请求资源,服务 A 处理请求,然后将其发送给服务 B,服务 B 处理请求然后发送给服务 C。服务 C 最后向第三方发送请求,并随着流程返回响应用户。

我的问题是测试这个流程(服务链)。 我知道这个要求有spring cloud contract。但据我了解,spring cloud contract只测试两个服务(生产者和消费者,例如服务A和B)。 我也可以在暂存环境中部署此服务并测试此链,但我不想这样做。

有没有办法在这个链中进行测试?

【问题讨论】:

    标签: java spring-boot testing microservices


    【解决方案1】:

    这里有很多问题需要解决。

    首先,这样的端到端测试(取决于整个系统的复杂性)可能过于复杂,而且如果不是不可能的话,从长远来看可能会非常昂贵。不仅在环境的初始设置和实施方面,而且在环境的维护方面。这就是为什么我会说使用“分期”可能是你最好的选择。因为该环境将以某种方式在配置更改、版本控制、第三方依赖管理等方面得到维护。

    话虽如此,如果您的系统非常复杂并且无法设置可靠的登台环境,那么我建议您依靠合同测试加上您的内部单元/集成/组件测试并使用“生产”测试和适当的服务版本控制加上“功能切换”的使用。你可以在这里找到一些功能切换的解释https://blog.codecentric.de/en/2019/02/feature-toggles-benefits-drawbacks/和这里版本控制Microservice Versioning

    【讨论】:

      【解决方案2】:

      要进行这种测试,您应该使用端到端测试策略:

      1. cypress 作为端到端框架
      2. 使用 docker (docker-compose) 自动运行服务

      【讨论】:

      • 如果你想从服务而不是前端应用程序开始测试,你可以使用cucumber 作为框架
      猜你喜欢
      • 2017-10-04
      • 2019-08-25
      • 2020-02-04
      • 1970-01-01
      • 2015-01-07
      • 2019-12-10
      • 1970-01-01
      • 2020-05-17
      • 1970-01-01
      相关资源
      最近更新 更多