微服务和基于容器的基础设施的混合架构需要不同的测试策略,这是因为微服务架构对远程依赖较多,而对进程内的组件依赖较少。这意味着当有更多的远程通信时,测试微服务之间的连接变得更加耗时。然而,测试微服务架构将帮助企业确保新版本的服务不会影响整个系统。
本文将解释测试微服务时的痛点,应该进行什么样的测试,以及介绍七款开源工具来帮助测试微服务。
上市时间、成本和风险都应该是在选择测试技术时需要考虑的因素。除此之外,进行测试的方式也需要考虑会影响微服务与其依赖项解耦的其他变量 [3]。
在一方面来看,测试微服务在某种程度上不同于测试单体架构。首先,在微服务架构中,去中心化治理意味着每个团队都会选择不同的工具来开发他们的微服务。因此,每个团队都将使用适合他们需求的测试技术,所以微服务测试不需要拥有统一的测试栈。其次,分散式的数据管理允许每个微服务独立管理自己的数据。最后,测试、部署和基础设施通常是自动化的。
另一方面,测试微服务和单体应用程序之间可能存在一些相似之处。例如,测试 REST API 和消息代理(一种调解应用程序之间通信的架构模式)是程序员常见的事情,并且有有完善的测试工具和实践 [1]。
微服务测试存在三个主要痛点:
微服务应该被单独地测试,而且需要考虑以下步骤。首先要检查的是微服务是否正常运行。通常,此步骤可以使用 API 测试工具完成,例如 Apache JMeter。然后,测试微服务是否具有可扩展性,因为可扩展性是使用微服务的优势之一。负载测试工具可以测试微服务是否能够承受不断增加的需求或负载 [2]。最后,检查异步通信是否正常工作。微服务中的异步通信使用特定的协议,其中客户端是队列的一部分并会使用可用的数据。
因此,微服务的测试主要分为三种类型 [2]:
除此之外,还应考虑其他类型的测试:
以下为一些可用于测试微服务的开源测试工具示例:
参考文献
[1] https://www.parasoft.com/blog/what-are-different-types-of-tests-for-microservices/
[2] https://www.blazemeter.com/shiftleft/open-source-testing-microservices
[3] https://www.infoq.com/articles/twelve-testing-techniques-microservices-intro/
TARS基金会是Linux基金会下的非营利性、微服务基金会,致力于建设一个强大而灵活的微服务生态系统。无论你在哪个行业,无论你使用什么技术栈,这里能助你快速实现你的创意。