《阿里测试之道》
本次以其中涉及电商的测试场景为例,记录一下“大促质量保障”一章的读书笔记。这一章主要讲述了在大促场景下,全链路压测是如何实施的,以及通过什么方式保证最终大促时的生产环境稳定性。
风险与挑战
全链路压测目标:尽可能真实模拟流量洪峰,进行高可用验证
用例场景需要考虑两个方面:
横向多样膨胀:域内行业通用、特殊玩法叠加
交易红包玩法,不同玩法红包叠加,核销打款失败
汽车行业轮胎+服务进到购物车,同店非轮胎商品进入后,购物车无法撤单
纵向长链路顺畅:完整旅程顺畅
一种表达货品重要销售类型的核心数据,由库存中心的系统打在交易订单信息上,通过履约系统传递,在分销系统、物流订单系统层层传递。在预售/相对时间销售情况下有问题,这个场景下数据需要变更,但库存是不管预售尾款的,不会更新这个数据,导致数据传递错误。
后果是消费者预约到了早于货品到仓的时间,商家无法履约
全链路压测
影子体系
流量隔离:压测流量有特殊标识,打在流量入口url上
全链路贯通:压测标识在Web服务器的LogFilter映射到中间件的context,从而透传到整条链路
资源共用:影子体系资源共用线上资源,影子表、正式表在一套数据库中,缓存中通过不同key区分压测和现上数据
压测模型
入口集合:覆盖商品详情、购物车浏览、确认订单、提交订单、订单列表、订单详情、二次付款、付款成功等入口
包含各个后端模型(不是前端流量入口的模型)
预测出各个场景QPS和各个后端元素比例
和大促玩法深度结合,用大促玩法对压测模型修正
构造压测模型
在生产环境产出和双11同等量级数据:包含买家、卖家、商品
根据模型各个元素,完成构造优惠、领取红包、添加购物车操作
根据各流量入口请求规则,构造可行的压测流量
执行策略
千万级施压能力
一个流量平台,包含一个控制节点和上千个worker节点,每个worker节点部署压测引擎
压测引擎部署在cdn上,从外网向内网施压,模拟真实用户行为
执行方法
脉冲压测:按照设定模型脉冲,模拟0点流量
摸高:关闭限流,直接加压,直到扛不住
限流验证:摸高稳定情况下,开限流,看能否生效
破坏性测试:保持系统大促态,压力保持在峰值,执行各个紧急预案,看效果是否满足预期
常态化智能压测:非大促态下,通过智能压测机器人,对系统进行固定频率压测,及时发现系统瓶颈,定位原因