微服务架构的测试自动化

时间:2016-03-09 11:16:13

标签: automated-tests microservices

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

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

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

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

3 个答案:

答案 0 :(得分:1)

  • 使用微服务实现保持单元和合同测试
  • 组件测试在复合微服务的上下文中是有意义的, 所以让他们在一起
  • 进行集成和E2E测试 单独的回购,按用例分组

答案 1 :(得分:0)

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

从外面进行测试,您可以使用the proxy component - 希望这至少可以为您提供一些想法。

答案 2 :(得分:0)

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

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

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

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

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

如果开发人员更改了某项功能,他将需要在同一时间更改测试,以确保两者完美结合。将代码和测试保存在同一个存储库中会使两者保持同步。