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


    为解决域名泛滥、升级成本高、流量管理困难、需要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,找到该场景下网关的瓶颈,并且对熔断的效果进行验证。
  • 相关阅读:
    objcopy使用
    linux中的strip命令简介
    strace命令详解
    bash执行顺序:alias --> function --> builtin --> program
    Ubuntu下安装docker
    uvm中类继承和phase
    error和exception有什么区别?
    sleep() 和 wait() 有什么区别?
    CSS3实现环形进度条?
    请写出你最常见到的5个runtime exception?
  • 原文地址:https://www.cnblogs.com/6970-9192/p/13671493.html
Copyright © 2020-2023  润新知