质量保障设计的三位一体
水平:通用的平台测试方案,不限于具体行业,通过技术手段形成通用化能力。
行业:具有特定业务形态的业务测试方案,结合业务特点形成针对性解决方案。
专项:对具体问题深挖解决方案,专项保障的测试方案,例如资损、预案、全链路压测等
全链路压测是以全链路业务模型为基础,将前端系统、后端应用、中间适配层、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可用,不需要重复修改 |
每年全民预演都是最耗人力的一项测试任务,需要各种行业的PD运营跟测试一起参加。所以提高全民预演的有效性发现更多有效bug,提高组织效率非常重要。每年大促,在所有业务需求整体发布之后,会邀请产品、运营、开发、测试、CCO等多种角色集合到一起,对整个大促期间核心玩法进行全民的测试和验收。
预演组织管理
预演执行引导
预演问题排查
预案每个BU都有,预案是最保命的,但是有时候预案也是最致命的,集团有各种灰度方案,发布过程中有各种灰度的策略,现在能够引起故障,除了系统问题还有一个最高风险就是错误的预案被推送。所以预案是我们风险非常高的东西,大促各个BU在协同的时候,一个预案可能影响到很多上下游系统。所以是绝对不允许有一个人没有作战规律去执行的。但是我们强调了很多次作战纪律,仍然因为人的因素或者是新老团队交接而犯错。所以一个安全的预案平台是至关重要的。在预案执行时对权限和AB角的流程机制也是非常重要的。
目标:了解大促需求和目标,制定资损专项目标,跟各业务域接口人KO,KO内容包括时间计划,资损目标,纪律;
梳理:梳理各域历史遗留资损问题,跟进修复进度;
模版:制定资损点梳理模板,跟集团资损专项总负责人review,给各业务域接口人进行梳理;
Review:损梳理模板review,资损点测试,监控项补全,资损用例可沉淀到天启资损专项用例组;
跟进:核心项目资损链路梳理及review,预演资损问题跟进,进行记录及风险评估,同步大促项目组;
作战计划:大促值班计划,资损监控问题(如bcp)反馈群,跟进goc反馈问题,进行记录及风险评估;
复盘:大促复盘,当天问题分析,后续改进建议。
提高系统,流程,人员在面对突发状况的应对能力,真正实现故障快速发现,快速止损,快速恢复,提升系统的整体的健壮性。
准备方法
流量模拟
演练需要在安全生产环境通过压测流量模拟出故障,需配置故障注入流量的策略配置。
监控报警
业务域同学要判断出服务会导致的故障监控报警,新版应急场景。
故障模拟