新人手册系列:思考篇-稳定性&大促保障

时间:2022-07-25
本文章向大家介绍新人手册系列:思考篇-稳定性&大促保障,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

质量保障设计的三位一体

  • 如何思考
水平:通用的平台测试方案,不限于具体行业,通过技术手段形成通用化能力。
行业:具有特定业务形态的业务测试方案,结合业务特点形成针对性解决方案。
专项:对具体问题深挖解决方案,专项保障的测试方案,例如资损、预案、全链路压测等

大促质量保障

  • 全链路压测

全链路压测是以全链路业务模型为基础,将前端系统、后端应用、中间适配层、DB等整个系统环境,完整得纳入到压测范围中,以http请求为载体,模拟真实的用户行为,在线上构造出真实的超大规模的访问流量,以全链路压测模型施压,直至达到目标峰值,在压测过程中发现系统瓶颈和验证系统能力。全链路压测自2013年诞生至今,一直稳居大促质量保障核武器地位。

基本原理:

入口:前端http请求,如detail页面、确认订单页面、提交订单等。

媒介:以中间件技术为主线,将全链路压测标识(见名词解释),通过HSF、tddl、notify等,进行传递

终点:影子表,当流量执行到存储层时,tddl会进行判断,带全链路压测标记的数据流量走影子表,影子表为正式表前加“__test_”,即__test_表名

压测标传递原理:

http请求中加上标记(tb_xxxxx_t=1);tbsession中的埋点将该标记映射到中间件中(t=1);而后随系统调用,通过上下文和各个中间件将t=1标记一直传递下去,业务逻辑根据此标识判断是否走全链路逻辑,最终直到各个系统依赖的DB层,通过tddl判断eagleeye中全链路标识,若带有t=1,则走影子表,若t=null,则走正式表。

登录和非登录会做业务支持上的区分,登录用户会通过login集体登录预热,携带打标cookie。

全链路名词解

名称

内容

备注

影子表

全链路压测数据归属;和正式表同库;命名规则:__test_正式表名

全链路压测标识

tb_xxxxx_t=1

对应中间件上下文中是t=1

全链路功能标识

tb_xxxxx_f=1

对应中间件上下文中是f=1,f标为t标的子标,用于压测绕过,但是功能不绕过的逻辑判断

流量构造接口提供

由于全链路压测主要执行载体为HTTP请求,因此对于构造复杂,需要动态获取http参数的http请求构建,需要提供对应的接口,来完成该http请求的构建。条件:具有动态参数的http请求流量构建。入参:基础数据,商品、买家、卖家以及通过这三个基础数据可查询到的信息(商品SKU、收货地址等)产出:可执行的http请求

单链路链路http请求提供标准

URL自身要求可执行;使用条件标识清楚(是否需要带中间件的标等、是否需要用户登陆、请求方式(get or post));URL量级提供到位,URL量级>=2*压测量级;提供时间要求URL<5:提前0.5天;5<URL<10:提前一天;10<URL<20:提前两天;URL>20:提前3天提供;若是实时的URL,则需要尽可能将URL合并缩减,并保证各个URL可用,不需要重复修改

  • URL自身要求
  1. 可执行;
  2. 使用条件标识清楚(是否需要带中间件的标等、是否需要用户登陆、请求方式(get or post));
  3. URL量级提供到位,URL量级>=2*压测量级;
  • 提供时间要求
  1. URL<5:提前0.5天;5<URL<10:提前一天;
  2. 10<URL<20:提前两天;
  3. URL>20:提前3天提供;
  4. 若是实时的URL,则需要尽可能将URL合并缩减,并保证各个URL可用,不需要重复修改
  • 功能预演

每年全民预演都是最耗人力的一项测试任务,需要各种行业的PD运营跟测试一起参加。所以提高全民预演的有效性发现更多有效bug,提高组织效率非常重要。每年大促,在所有业务需求整体发布之后,会邀请产品、运营、开发、测试、CCO等多种角色集合到一起,对整个大促期间核心玩法进行全民的测试和验收。

预演组织管理

  • 用例录入、任务分配。
  • 数据构造。
  • 账号分配。
  • 业务设置。
  • 进度大盘

预演执行引导

  • 预演任务、执行账号自动领取
  • 业务执行。
  • 问题跟踪

预演问题排查

  • 问题复现&排查。自动填充更多bug信息。
  • 预案专项

预案每个BU都有,预案是最保命的,但是有时候预案也是最致命的,集团有各种灰度方案,发布过程中有各种灰度的策略,现在能够引起故障,除了系统问题还有一个最高风险就是错误的预案被推送。所以预案是我们风险非常高的东西,大促各个BU在协同的时候,一个预案可能影响到很多上下游系统。所以是绝对不允许有一个人没有作战规律去执行的。但是我们强调了很多次作战纪律,仍然因为人的因素或者是新老团队交接而犯错。所以一个安全的预案平台是至关重要的。在预案执行时对权限和AB角的流程机制也是非常重要的。

  • 资损防控

大促资损防控怎么做?

目标:了解大促需求和目标,制定资损专项目标,跟各业务域接口人KO,KO内容包括时间计划,资损目标,纪律;

梳理:梳理各域历史遗留资损问题,跟进修复进度;

模版:制定资损点梳理模板,跟集团资损专项总负责人review,给各业务域接口人进行梳理;

Review:损梳理模板review,资损点测试,监控项补全,资损用例可沉淀到天启资损专项用例组;

跟进:核心项目资损链路梳理及review,预演资损问题跟进,进行记录及风险评估,同步大促项目组;

作战计划:大促值班计划,资损监控问题(如bcp)反馈群,跟进goc反馈问题,进行记录及风险评估;

复盘:大促复盘,当天问题分析,后续改进建议。

  • 故障演练

提高系统,流程,人员在面对突发状况的应对能力,真正实现故障快速发现,快速止损,快速恢复,提升系统的整体的健壮性。

演练流程规范

攻防演练实战

准备方法

  1. 分析链路和监控报警关系,设计演练场景。
  2. 在预发环境模拟注入验证,关注点 故障可以生效。
  3. 在安全生产环境注入验证,关注点 故障点可以触发监控报警。
  4. 将演练场景在mk平台归档到演练空间

流量模拟

演练需要在安全生产环境通过压测流量模拟出故障,需配置故障注入流量的策略配置。

监控报警

业务域同学要判断出服务会导致的故障监控报警,新版应急场景。

故障模拟

  1. 首先在预发环境验证故障和预案,确认故障注入能生效。
  2. 在安全生产环境验证演练方案是否能触发监控报警

预期恢复动作

预期恢复动作会考核开发的处理,蓝军提供的方案需要准确。