微服务实战:如何测试基于OAuth认证的微服务

背景

正如微服务实战:基于Spring Cloud Gateway + AWS Cognito 的BFF案例一文中所介绍的,我司的微服务群采用了Spring Cloud Gateway作为API认证网关,利用Spring Security为API认证网关和后端微服务提供了OAuth认证功能。

我们想做什么

  • 想测试单个微服务
  • 想测试OAuth认证流程

我们不想做什么

  • 不想为了测试部署所有的微服务
  • 不想在测试中连接真实的OAuth认证服务器

相关测试类型

当我们尝试测试与其他服务存在通信的微服务程序时,我们可以做以下两件事之一:

  1. 部署所有微服务并执行端到端测试
  2. 在单元/集成测试中模拟其他微服务

两者各有其优缺点。首先,对于端到端测试方式

优点

  • 模拟生产环境
  • 测试服务之间的真实通信

缺点

  • 要测试一个微服务,我们必须部署多个微服务、多个数据库等
  • 执行测试的环境将被锁定,专门为一组测试所占用(即在此期间没有其他人能够运行测试)
  • 测试执行时间很久
  • 很晚才能得到反馈
  • 极难调试(debug)

其次,对于单体/集成测试方式

优点

  • 非常快的反馈
  • 没有基础设施要求

缺点

  • 被测试的微服务的开发人员负责自己打桩(Stub),因此测试桩与真正的实现可能有差异
  • 虽然测试通过但上生产环境之后仍然可能出错

可以看出这两种测试其实是相辅相成,互相补充的。在项目工期和资源允许的情况下,两者都可以安排上。但在人员匮乏,工期紧张的时候,我个人倾向于后者。原因是我们可以快速实施测试,并快速得到反馈,缓解工期的紧张;另外还可以采取一些技术手段尽量避免它带来的缺点。比如:优先开发基于OAS(Open API Specification)的API规格,API Provider和Consumer都基于共同的OAS进行开发。这样可以减少测试桩和真正实现之间的差异。

本文的讨论将侧重于后者。

API网关的测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值