【问题标题】:Test automation for microservices architecture微服务架构的测试自动化
【发布时间】:2016-03-09 11:16:13
【问题描述】:

我负责为使用微服务架构的项目实施 QA 流程和测试自动化。

项目有一个公共 api,可以提供一些数据。所以我将自动化 API 测试。测试将存在于一个存储库中。这部分我很清楚,我之前在其他单体项目中也这样做过。我有一个用于 API 测试的仓库。可能还有另一个用于硒测试的回购。

但是这里整个产品由许多微服务组成,这些微服务通过 restful api 和/或兔子队列进行通信。我将如何对这些单独的服务进行自动化测试?每个单独服务的测试是否会在单独的存储库中?注意:服务是用 Java 或 PHP 编写的。我将使用 Python 自动化测试。在我看来,我最终会得到很多用于测试/存根/模拟的存储库。

社区可以提供哪些建议或好的资源? :)

【问题讨论】:

  • 感谢@PriyanshuShekhar,我在到达这个项目的第一天就浏览了这些幻灯片。它解释了有哪些类型的测试很好,但忽略了如何组织或构建测试。无论如何感谢您的输入:)

标签: automated-tests microservices


【解决方案1】:
  • 在微服务实现中保留单元和合同测试
  • 组件测试在复合微服务的上下文中是有意义的, 所以把它们放在一起
  • 将集成和 E2E 测试放在一个 单独的仓库,按用例分组

【讨论】:

    【解决方案2】:

    对于这种测试,我喜欢使用Pact。 (我知道你说的是 Python,但我在那个领域找不到类似的东西,所以我希望你(或其他正在搜索的人)会发现这个优秀的 Ruby gem 有用。)

    对于从外到内的测试,您可以使用the proxy component - 希望这至少能给您一些想法。

    【讨论】:

      【解决方案3】:

      为每个微服务提供自己的代码存储库,并为跨服务端到端测试添加一个。

      在微服务的存储库中,保留与该服务相关的所有内容,从测试代码到文档和管道:

      root/
        app/
          source-code/
          unit-tests/ (also: integration-tests, component-tests)
        acceptance-tests/
        contract-tests/
      

      将构建步骤使用的所有内容保存在一个文件夹中(此处为:app),可能还有子文件夹以区分源代码与单元测试、集成测试和组件测试。

      将在交付管道后期运行的验收测试和合同测试等测试放在自己的文件夹中。这使它们在视觉上保持分离。它还简化了为它们创建单独的构建/测试步骤,例如在使用 Maven 时包含自己的 pom.xml。

      如果开发人员更改了一项功能,他将需要同时更改测试以确保两者结合在一起。将代码和测试保存在同一个存储库中可以自然地保持两者同步。

      【讨论】:

        猜你喜欢
        • 2018-03-25
        • 1970-01-01
        • 2017-12-31
        • 1970-01-01
        • 1970-01-01
        • 2015-12-26
        • 2018-01-26
        • 1970-01-01
        相关资源
        最近更新 更多