在没有API的情况下测试异步微服务



我们有5个微服务(还有更多(可以异步通信。其中3个微服务没有任何API。它们使用消息队列中的数据,进行一些处理,并将数据写入另一个队列。其中2个微服务确实有API,它们也消耗队列中的数据,但将响应发送回调用者。

鉴于此,为了测试服务交互、合同的正确性和端到端流:

  • 测试从队列读取和写入队列的异步服务的最佳方法是什么
  • 消费者合同测试在任何地方都适用吗
  • 我觉得端到端的生产测试是可能的,但能做一些更精细、更有效的事情吗

首先,让我们纠正一件事——您确实有API。";无API";读取的服务必须具有一些定义的内容或格式。这是API。你应该检测它,包括阳性和阴性。

在进行整个系统测试之前(在模拟生产环境的测试或阶段环境中(,您的测试可能应该是分层的,就像在任何其他系统中一样。

  • 单元测试来测试每个类的行为。例如,在消息处理类中,使用提示特定操作的消息来调用每个类,并测试它是否正常工作。这些通常可以很快运行,因此在开发代码时经常运行它们很容易
  • 集成测试,以确保您与下一级外部系统的交互工作正常。例如,您可以使用testcontainers来运行与服务交互的排队系统的独立实例

这些测试的具体形式取决于系统使用的语言和框架。我简要地看了一下你提到的《公约》工具,它正在采取类似的方法。

看起来使用Pact可以进行基于消息的合同测试。我想我有一条前进的道路。

最新更新