微服务测试要点 | 7 个用于测试的开源利器

2022-08-31 09:43:19 浏览数 (1)

微服务和基于容器的基础设施的混合架构需要不同的测试策略,这是因为微服务架构对远程依赖较多,而对进程内的组件依赖较少。这意味着当有更多的远程通信时,测试微服务之间的连接变得更加耗时。然而,测试微服务架构将帮助企业确保新版本的服务不会影响整个系统。

本文将解释测试微服务时的痛点,应该进行什么样的测试,以及介绍七款开源工具来帮助测试微服务。

上市时间、成本和风险都应该是在选择测试技术时需要考虑的因素。除此之外,进行测试的方式也需要考虑会影响微服务与其依赖项解耦的其他变量 [3]。

在一方面来看,测试微服务在某种程度上不同于测试单体架构。首先,在微服务架构中,去中心化治理意味着每个团队都会选择不同的工具来开发他们的微服务。因此,每个团队都将使用适合他们需求的测试技术,所以微服务测试不需要拥有统一的测试栈。其次,分散式的数据管理允许每个微服务独立管理自己的数据。最后,测试、部署和基础设施通常是自动化的。

另一方面,测试微服务和单体应用程序之间可能存在一些相似之处。例如,测试 REST API 和消息代理(一种调解应用程序之间通信的架构模式)是程序员常见的事情,并且有有完善的测试工具和实践 [1]。

微服务测试存在三个主要痛点:

  • 随着应用程序中的微服务数量增加,测试就越困难;
  • 微服务是相互依赖的;
  • 微服务需要正常工作,即使在依赖的其他服务不可用或无法正常工作的情况下 [1]。

微服务应该被单独地测试,而且需要考虑以下步骤。首先要检查的是微服务是否正常运行。通常,此步骤可以使用 API 测试工具完成,例如 Apache JMeter。然后,测试微服务是否具有可扩展性,因为可扩展性是使用微服务的优势之一。负载测试工具可以测试微服务是否能够承受不断增加的需求或负载 [2]。最后,检查异步通信是否正常工作。微服务中的异步通信使用特定的协议,其中客户端是队列的一部分并会使用可用的数据。

因此,微服务的测试主要分为三种类型 [2]:

  • 功能测试应该用于测试服务的业务逻辑和行为。但是,与单体架构不同的是,要测试的接口是通过协议(例如 HTTP)进行通信的远程客户端。
  • 弹性测试将帮助确定微服务对基础设施可能出现的故障的反应情况,例如如果服务器正在运行不可用的服务会发生什么?
  • 负载测试将测试服务的可扩展性。其目标是通过很多调用测试微服务是否会因为高流量而崩溃。

除此之外,还应考虑其他类型的测试:

  • 单元测试以验证每个微服务的方法和类是否按预期工作。
  • 组件测试包括通过充当客户端的自动化测试来测试 REST 服务,向服务发送许多请求并验证服务返回的响应。组件测试的问题是一个微服务可能依靠部署其他可供测试的服务。为了缓解这个问题,开发人员应该使用服务虚拟化工具,允许测试人员模拟其他微服务并单独测试选定的微服务。
  • 集成测试意味着测试一个微服务是否能与其他相关的微服务在现实中一起工作。在这个测试中,所有需要的服务都部署和结合在一起。
  • 系统测试用于测试微服务与其他平台的交互。例如,电视上的APP将连接到其数据中心内的微服务。要进行这些测试,需要模拟用户界对微服务架构进行的 API 调用。

以下为一些可用于测试微服务的开源测试工具示例:

  1. Apache JMeter是一个用于进行功能测试和性能的开源软件。
    • https://jmeter.apache.org
  2. Selenium是用于 Web 应用程序的自动化测试的工具。
    • https://www.selenium.dev
  3. SoapUI是一个开源 API 测试自动化框架。
    • https://www.soapui.org
  4. K6是一款用于测试云原生应用的负载和性能的测试工具。
    • https://k6.io
  5. Tsung是一个负载和压力测试工具。
    • http://tsung.erlang-projects.org
  6. Testcontainers支持 JUnit 测试来测试数据库、Selenium 浏览器以及可以在 Docker 容器中运行的一切。
    • https://www.testcontainers.org/
  7. TARS Benchmark是一个测试微服务的工具。TARS Benchmark也是结合到TARS 微服务框架中。
    • https://github.com/TarsCloud/TarsBenchmark

参考文献

[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基金会下的非营利性、微服务基金会,致力于建设一个强大而灵活的微服务生态系统。无论你在哪个行业,无论你使用什么技术栈,这里能助你快速实现你的创意。

0 人点赞