在上一课中,我们讲解了怎么进行单元测试。虽然单独测试微服务内部的各个单元非常重要,但是,测试微服务的模块或者子系统能否正确地与外界交互也同样重要,这项工作可以通过集成测试来完成。这节课,我们将分别探讨在微服务架构下,集成测试的概念和实现方法,并分别以几个实例来说明。
集成测试(Integration Test)的定义有很多。简单来说,集成测试(也叫组装测试、联合测试)是单元测试的逻辑扩展,即把两个或者多个已经测试过的单元(见第三课中对于单元的定义)组合成一个子模块,再把这些子模块组合到一起,构成一个“子系统”。测试的目的就是检查,这些子模块能否以预期的方式互相协作,检查它们之间的通信和交互,核实接口是否工作正常,进而确保整个子系统的稳定运行。
虽然集成测试可以在很多级别上进行,但是在本课程所介绍的微服务架构中,集成测试主要是指:
- 微服务对外的模块(包括 HTTP 终端和 Gateway 部分)与外部服务(例如第三方支付、通知等)的通信;
- 数据库访问模块(Data Mapper/ORM)与外部数据库的交互。
也就是说,把对外模块与外部服务视为一个子系统,把数据库访问模块与数据库视为另外一个子系统,检查这两个子系统能否正常运行,从而确保整个微服务能够与外界正常交互。这两个子系统就是下图中用黄色虚线标出的部分:
对于第一种集成测试,因为服务与服务之间采用轻量级的通信机制互相协作(基于 HTTP 协议的 RESTful API)。所以在测试与外部的通信时,主要目的是
本文介绍了微服务架构中的集成测试重要性,包括对外部服务的通信和数据库访问模块的测试。通过实际外部服务、模拟器和网络故障模拟工具来确保微服务在不同场景下的稳定性。具体工具有WireMock用于模拟外部服务,clumsy用于模拟网络故障,以提高测试覆盖率和应对异常网络条件。
订阅专栏 解锁全文
171万+

被折叠的 条评论
为什么被折叠?



