微服务测试:过程内组件(单个微服务)测试



我正在探索单个微服务测试&遇到了一个很好的指南https://martinfowler.com/articles/microservice-testing/#testing-component-inpocent-in-process-diagram。这篇文章表明,有一种方法可以测试单个微服务"内部"。

这意味着测试&服务将在相同的过程中执行,它还提供可以使用的LIB。但是我无法理解以下内容1)如何在微服务体系结构中确切地"进程"测试2)关于如何使用" Inproctester" lib。

的任何指针

谢谢

这可以通过在过程中托管您的API,在过程中进行交互 - 在您的API边缘使用测试双打,或(换句话说)使用测试双打,外部合作者。

这允许在测试中测试API(及其核心行为)(根据意见,单位/集成),而不会击中网络,数据库或文件系统。

此测试将提供覆盖范围,但显然不是您需要的所有覆盖范围

在.net核心中您可以使用Microsoft.aspnetcore.testhost软件包中包含的TestServer

如果您的API足够简单,则可以减少测试类型(N.B.我不建议减少覆盖范围)
您在第8/25页上提到的幻灯片甲板中提到了这种方法。

释义。如果API中的逻辑很小,则组件测试可能有利于孤立的和社交的单元测试

在Spotify" Honeycomb"样式测试中也建议这种方法。他们调用API集成测试的组件测试(巧合的是,Microsoft在测试中使用testserver时也称其为称为(混凝土示例的第二个链接)

  • https://labs.spotify.com/2018/01/11/testing-of-microservices/
  • https://learn.microsoft.com/en-us/aspnet/core/testing/integration-testing

我认为该方法的推力(无论其特定名称如何)是,在过程测试中是快速的,外部协作者被测试双打补充。

值得注意的一件事是,"失去流程"组件测试基本上是端到最终测试,但所有外部协作者都与测试双打互换。

这些可能比在过程组件测试中要慢一些,但要进行更多的"堆栈"。我建议,如果您无论如何都要进行末端测试,我会尽可能地在过程组件测试中进行。

最新更新