优酷质量保障系列(一)——服务端稳定性保障实践

文娱妹导读:质量保障贯穿所有研发流程,测试做为质量的构建者和守护者,须要保障的不只仅是提测后的功能质量,而是整个研发过程的质量和效率。分享优酷经过质量保障建设提高研发效率和质量的实践过程。
本系列文章将陆续发布,感兴趣的朋友持续关注!_

服务端质量保障作什么?

回答这个问题以前,先要看看影响服务端质量的因素有哪些?从当前服务端研发流程来看一个需求上线的所有阶段以及每一个阶段的主要活动:
image
能够看到质量相关的活动贯穿所有研发流程,测试做为质量的构建者和守护者,须要保障的不只仅是提测后的功能质量,而是整个研发过程的质量和效率。程序员

定义每一个阶段影响质量的主要因素:安全

•    需求确认:需求的有效性以及业务价值
•    方案审计:方案的合理性以及变动致使的质量风险
•    代码开发:代码逻辑和编码规范
•    线下验证:回归测试的效率和质量;新功能测试的效率和质量
•    安全生产:留观流量的有效性;质量验证的充分性
•    线上发布:线上稳定性保障机制和异常检查能力

结合优酷业务特性和研发现状,肯定测试当前须要重点关注的保障内容:app

•    代码开发:经过创建静扫、单元测试,实现开发提交代码后的持续验证
•    线下验证:保障提测代码质量、线下验收质量;
•    安全生产:保障安全生产验证有效性
•    线上发布:保障线上服务稳定性

总结成一句话:服务端质量保障体系就是要构建贴合业务特性的自动化测试保障能力,并融入研发流程关键质量阶段(测试准入冒烟测试提测回归测试安全生产验证线上发布),保障应用变动可持续集成、可持续部署、可持续发布。框架

如何构建质量保障体系?

推流程

保障能力只有嵌入到研发流程,才能真正的发挥做用,为此,经过自定义应用发布流程和组件,构建了优酷线下部署、线上发布的流程,借助发布流程的统一升级,实现保障体系升级:
image
准入测试性能

•    保障内容:验收单元测试结果、静态代码扫描结果,保障进入测试阶段的代码基本质量;避免无效部署(代码调试、开发自测)触发测试任务执行
•    准出条件:静扫无Block问题;单元测试经过

冒烟测试单元测试

•    保障内容:构建自动化测试实验室,验收应用基本功能,阻断低级问题流入提测阶段以及集成测试阶段,保障后续测试活动的质量和效率
•    准出条件:冒烟测试完成;完成失败用例分析;

提交测试测试

•    保障内容:经过自定义“提测”组件打通发布平台和优酷研发效能平台,开发在发布流程中一键提测,自动收集提测相关信息并生成提测单,保障提测信息有效性,阻断低质量提测流入测试环节
•    准出条件:冒烟测试结果知足业务提测基线;提测单包含代码变动、功能说明、影响接口等测试信息;

集成测试优化

•    保障内容:构建贴合业务特性的回归测试任务,对变动进行全量回归测试,保障变动代码不影响原有功能
•    准出条件:回归测试完成;完成失败用例分析;没有影响线上发布的问题

安全生产验证编码

•    保障内容:对接安全生产验证组件,为应用发布提供安全生产环境的验证能力,保障安全生产留观期间内的流量有效性、质量稳定性。
•    准出条件:安全生产验证完成;完成失败验证点分析;没有影响线上发布的问题

灰度验证spa

•    保障内容:在微灰环境创建压测分组,经过引流的方式对压测分组机器自动压测,并和历史压测基线作对比,提供性能评估能力,保障变动代码的性能稳定性
•    准出条件:对比性能基线,压测评估结果经过

线上部署

•    保障内容:经过构建线上巡检任务,定时巡检核心接口的核心场景,及时发现由于配置变动、代码变动、依赖变动致使的线上问题
•    准出条件:无

建能力、搭平台

统一应用发布流程后,如何快速协助业务构建流程中须要的各类保障能力,也是质量保障体系必须解决的问题。在“不重复造轮子”的原则下,经过整合阿里在服务端测试领域的能力和服务,造成了一套能适合优酷业务特性的质量保障能力,并经过平台化向各个业务提供接口,协助业务团队快速构建质量保障体系的能力。
image
研发流程

经过自定义发布流程组件,打通发布流程和优酷效能平台,实如今发布流程上一键提测,主要为提供提测承载页、提测代码变动分析、提测卡口功能。

基础能力
基于JVM-Sandbox提供的能力、平台实现了采集模块自动部署、模块状态自动维护、请求采集自动调控、加强类自动解析,支持应用一键接入保障体系所须要的基础能力:

•    全环境数据采集能力(请求入参和返回结果、应用内部方法链路)
•    全环境、全接口协议、多方式请求回放能力(实时回放、mock回放、泛化回放)
•    线下环境Mock能力(模拟返回结果、模拟异常、模拟超时)

自动化测试任务
不一样业务须要的保障能力可能来自集团不一样平台,业务的接入和分析成本比较高,为此,自动化测试页面提供了各类任务的接入配置、调度执行、结果回收、失败分析功能,实现了任务调度、分析处理的闭环能力,目前支持的任务类型和配置以下:

•    支持任务类型:自动化实验室、智能回放、安全生产验证、单机性能评估
•    支持任务配置:持续集成配置、结果通知配置

自动化测试框架
优酷自研接口测试框架,经过提供远程接口调用、Wrapper断言、自定义测试报告、中间件跨环境访问、Pandora类隔离机制等能力,业务团队能够低成本完成测试脚本开发,有效支撑优酷所有业务场景的冒烟测试、回归测试、线上巡检脚本开发和维护,框架主要模块以下:

•    远程接口调用模块:提供集团经常使用协议接口的跨环境调用能力
•    断言模块:无需编写任何断言方法,提供所见即所得的断言机制
•    报告模块:自动记录测试脚本中的接口调用、断言等信息,生成完整的测试报告
•    类隔离模块:实现经过容器运行测试脚本,解决测试工程的包冲突问题

智能回放
阿里已有的回放测试平台都是基于线下mock回放的子调用对比测试,但优酷的业务形态决定了服务端读接口偏多,更适合作实时回放,既能够规避配置变动致使的返回结果不一致,又下降了业务接入和使用成本。

为此,基于JVM-Sandbox提供的链路采集能力和回放能力,优酷实现了基于线上热度链路推荐的实时回放能力,相比集团已有回放平台,具有如下特性:
•    更有效的请求推荐能力:经过聚合线上采集的应用内部方法链路,有效识别出线上热度链路,基于热度链路推荐回放请求,相比基于子调用链路推荐请求,能更有效的覆盖应用内部代码链路和真实业务场景
•    更稳定的对比回放测试(只适用读接口的回放):采起实时非Mock回放,同时请求目标环境和回放环境,对比接口返回结果,有效规避了因为子调用变动和配置数据变动致使的对比失败
•    更低的接入和使用成本:基于JVM-Sandbox实现应用无侵入部署;对只读接口,不须要配置子调用对比逻辑,指定接口后就能够开始回放,即配即用

安全生产
优酷构建了针对安全生产环境的验证机制和能力,能有效保障安全生产留观期间的流量有效性和质量稳定性,目前主要提供的验证能力以下:

•    业务质量规则验证:经过配置接口返回结果的质量规则,全量验证安全生产留观期间内接口的返回结果,保障接口返回结果的业务质量
•    智策告警:监控和分析安全生产留观期间内产生的业务告警,保障常规业务指标监控、中间件监控提早在安全生产阶段发现
•    接口RT对比:对比留观时间段内,核心接口在安全生产的平均RT和线上的平均RT,提早发现接口性能相关的问题
•    接口自动化验证:经过自动化脚本验证安全生产环境接口质量,及时发现接口调用失败、无数据返回等重大接口问题
•    智能回放:经过智能回放,对比安全生产和线上的接口返回结果,保障读接口功能稳定性
•    业务场景覆盖率:经过创建核心接口的业务场景规则,保障留观期间内的流量能覆盖到核心业务场景

如何度量保障体系质量?

构建服务端保障体系主要是为了提高服务端发布质量和研发效率,优酷将下降服务端故障数和提高变动发布效率定义为主要须要解决的问题。基于这2个问题,对目标的定义以下:
业务质量

•    发布致使的故障数:应用发布致使的线上问题数。评估拦截发布致使故障的价值
•    线上突发故障数:线上突发故障数。用来评估线上服务稳定性

研发效率

•    变动无人值守率:评估持续集成体系对提高回归测试效率的价值
•    变动验证停留时长:评估持续集成体系对提高变动发布效率的价值

肯定保障体系各项指标后,就要经过收集须要的基础数据,按照不一样维度聚合,造成准确可靠的度量指标。能让业务团队、专项负责人、测试负责人经过指标数据发现问题,为后续优化提供方向,这个就是保障体系的度量能力。
优酷服务端保障平台经过和各个外部系统打通,并提供了通用失败分析能力,造成了数据收集、失败分析、聚合指标的度量闭环。
image
通过过去半年的能力建设和持续推动,已经有几百个应用接入服务端测试平台,其中核心场景应用接入率 100%,用户活跃度高,保障效果明显,能有效发现质量问题,而且实际拦截了若干次会引起回滚甚至是线上故障的问题,极大的提升了服务端上线质量和研发效率。

本系列文章将陆续进行发布,感兴趣的朋友必定要关注!


阿里文娱技术开通视频号了,将经过多种形式来分享咱们的技术经验和技术人平常
但愿能在视频号“娱乐圈程序员”里和你一块儿看点有趣的!
image

相关文章
相关标签/搜索