【测试经验】网关中间件测试

为解决域名泛滥、升级成本高、流量管理困难、需要web服务格外封装等问题,中间件组计划提供一套中心化网关用于解决以上业务痛点。

一、测试方案

  • 计划从业务功能、高可用、性能,这3大方向切入,进行测试点拆分、测试用例的编写;
  • 开发与测试均介入测试流程,开发主要负责提测前主流程自测,并在提测后分担部分需要通过debug进行测试的用例;
  • 测试周期为2周左右;

二、测试难点

  • 黑盒测试无法确保网关的高可用性,至少需要进行灰盒测试,从内部实现逻辑中拆分测试点;
  • 需要考虑db、zk对网关的影响;
  • 需要获取内存缓存的数据进行一致性的校验;
  • 实际使用场景较复杂,用例难以覆盖到所有场景。

三、测试细节

1、功能

  • 测试左移:参与方案评审,了解业务逻辑、实现逻辑、库表关系、外部依赖等,勇于提出自己的质疑与疑问,将不清楚的疑点都弄清楚;
  • 保持怀疑:拆分测试点时,每步逻辑操作都对前置操作与产物不信任,且可以再开发提供的逻辑图上继续细分;
  • 数据闭环:校验数据流转链路中每一节的数据一致性;
  • 大胆提出小心求证:先大胆提出异常场景,再考虑如何处理与预期结果。不要内心想当然的认为某些异常场景不可能出现,实际使用的场景远比我们想象的复杂;
  • 追根究底:明确每一个BUG的根因,时常可以从中获得启发,挖掘出新的测试点或同类的BUG。

2、高可用

  • 无状态性:网关自身无状态,遇到峰值流量,可快速横向扩容;
  • 容量规划:压测探知网关性能瓶颈,根据业务流量计算出网关集群容量,防止被流量峰值打崩;
  • 慢请求熔断:创建默认的Sentinel 熔断规则,防止下游服务过慢,请求积压,拖垮网关;
  • 独立性:数据会缓存到网关内存中,对db、zk均为弱依赖,外部依赖异常时,不影响网关当前业务运行;
  • 原子性:关键步骤异常,需要对网关启动或者发布流程进行阻断&回滚,避免产生脏数据影响后续的操作或将残缺的业务&数据发布成功;
  • 防网络抖动:异步定时任务,轮询刷新缓存;
  • 异常处理:除了业务异常外,还需要考虑对关键数据缺失、数据重复的处理,并添加相应的告警与日志
  • 可恢复性:对数据进行灾备,遇到数据丢失的情况可快速恢复;

3、性能

主要关注指标有RT、QPS、CPU、内存、GC、线程、Network I/O

压测的场景有:

  • 性能瓶颈:找到网关单POD性能瓶颈。用于网关容量的计算,压测过程中可对性能进行探索性调优;
  • 负载运行:保持80%以上的负载,持续运行12~72小时;
  • 下游慢请求:下游RT=2000ms,找到该场景下网关的瓶颈,并且对熔断的效果进行验证。

posted on 2020-09-15 09:58  周文星  阅读(538)  评论(0编辑  收藏  举报

导航