写点什么

爱奇艺 QA 测试环境管理平台初探

2020 年 9 月 07 日

爱奇艺QA测试环境管理平台初探

背景

测试环境是项目测试的关键环节,其部署效率、稳定性、连通性直接影响项目的迭代效率。在测试环节中测试环境一直是行业中的较为薄弱一环,面临很多的问题,比如:

  • 搭建成本高: 复杂业务的梳理成本高;搭建测试环境,需要经过申请资源、部署组件、连通性测试等一系列流程,路径长、成本高;搭建完成后需要持续人力投入等;

  • 复制成本高: 绝大部分系统的测试环境无法一键 0 成本复制,也无法快速满足多项目多套测试环境的需求,影响项目进度;

  • 联调成本高: 涉及多个系统的联调项目,整体可用性较差,经常阻碍项目,且一旦出问题,排查耗时;

  • 使用成本高: 无法快速找到所依赖系统的测试环境,尤其是站在客户端角度。

  • 测试环境的治理已经迫在眉睫,所以,爱奇艺测试团队立项测试环境平台, 实现如下几个目标

  1. 统一测试环境管理方案,整合资源,减少各业务环境的开发、维护成本;

  2. 解决各业务联调测试环境部署、问题定位等带来的人力投入;

  3. 方便用户使用,按需随时使用,减少等待、使用成本。


测试环境管理要素

面对各业务的不同测试环境部署流程、不同类型系统架构,如何提炼通用的测试环境管理方案,是首要解决的难点。因此测试团队提炼出测试环境的通用性部署流程,从下图中可以看出,测试环境平台需要支撑的关键能力包括: 支持人工梳理的业务拓扑及部署脚本的集中管理和对用户透明的资源使用,以及方便的动态部署和问题自动定位、恢复。



爱奇艺测试环境管理方案


测试环境梳理流程清晰后,聚焦到测试环境部署环节提炼出不同种类系统的测试环境拓扑,并得出了测试环境管理的五要素:存储、中间件、应用、组件、依赖,而其中,应用就是测试环境管理的最小单元。



爱奇艺测试环境拓扑


测试环境平台方案

综合测试环境的痛点、治理目标、核心要素,我们提炼出了爱奇艺测试环境平台的核心设计理念: 用户一次性梳理测试环境核心要素,0 成本任意搭建测试环境,测试环境问题自动定位和恢复。 并提出了测试环境产品方案,如下:



爱奇艺测试平台产品方案


难点攻坚

随着测试环境平台产品架构的明确,后续的落地也遇到了很多难点,我们将一些关键问题进行了详细解读。


一、资源的高效管理

搭建测试环境依赖众多资源,诸如虚机、容器、mysql、redis、rocketMQ、zookeeper 等,如果全部由测试环境平台来统一管理,那将是一项非常大的维护成本,结合行业经验,我们采取了一种合作模式:与公司各资源管理的服务合作,各服务负责提供各类资源的动态创建、更新、销毁机制,测试环境平台统一集成,并创建自己的资源池,预留小部分资源来支撑实时部署,同时可根据部署资源需求动态扩容资源池,如下图所示:



二、测试环境的安全保障

各业务之前测试环境全部部署在生产网络下,存在干扰线上服务的安全隐患,此次测试环境治理目标之一也包括将 QA 测试环境部署在隔离网络。在与公司服务治理团队的一起努力下,共建了测试环境迁移整体方案,已完成一期 QA 测试环境的迁移试点,同时也加速了 RD 测试环境的隔离迁移进度。


隔离网络方案如下图所示:



隔离网络方案


目前,测试环境平台支持同时在生产区、测试区部署测试环境,我们的最终目标是测试环境只在测试区部署。


三、测试环境的高效部署

随着越来越多的系统接入测试环境平台,整体性能逐渐吃紧,单个应用部署耗时最高达到了 60 分钟,所以测试团队将之前架构进行优化,逐步拆解成了微服务架构,并通过削峰、缓存、重试、及时丢弃的组合方案,逐步将单个应用部署耗时由最高 60 分钟降低到 10 分钟、平均 4 分钟,部署成功率由 60%提升到 95%以上,基本上搭建一套测试环境在 5 分钟左右完成。


同时,为降低不同类型业务、系统架构的接入成本以及平台开发成本,采用工作流模式,灵活编排不同的测试环境部署流程。


四、资源的高利用率

一套测试环境搭建完成后,首要目标是保证该套测试环境连通、可用,因为不能连接线上服务,所以在部署完成所需的系统后,所依赖的系统如何部署,直接决定了资源的利用率。因此,我们采取智能链路判断的方案,一方面保证新的测试环境连通、可用,一方面最大程度复用现有的基准测试环境保证资源利用率最大化。



当前已具备一级依赖的判断,可尽量复用基准测试环境,下一步将进行全链路的智能环路判断,可完整保证测试环境连通、可用,同时资源利用率相对最大化。


五、测试环境建设标准明确

面对各业务测试环境错综复杂的现状,一步到位完成高质量的测试环境搭建可行性较低,再综合考虑测试环境的治理目的是解决项目测试的 block 问题,我们制定了 QA 测试环境成熟度:


  1. 环境搭建能力(不具备,部分可搭建,全部自主搭建)

  2. 数据管理能力(不具备,部分可搭建,全部自主搭建)

  3. 问题定位与恢复能力(天级,小时级,分钟级,秒级)

  4. 环境安全程度(与线上混用,逻辑隔离,物理隔离)


环境成熟度一方面可以帮助各业务 QA 摸清现状,一方面可以帮助更准确的制定测试环境治理的短、中、长期目标,同时我们联合端 QA,从上到下倒退关键链路系统的测试环境治理。


经过以上内容的讲解,我们将环境平台的整体架构呈现如下:



平台功能简介

平台初期定位是解决 QA 同学的测试环境高成本问题,当前也有部分 RD 同学在使用,实际上,同一个系统,无论是 RD 还是 QA,只要有一方接入环境平台,另一方都可以 0 成本使用,此处关键的功能就是模板,即一次性组装应用,可重复使用 0 成本搭建多套测试环境,如下图:



未来规划

目前环境平台日均部署次数约 1000 次,部署成功率高于 95%,平均部署耗时 4 分钟,支撑了爱奇艺会员、播放、支付等关键业务线 QA 的 100+系统、700+应用的日常测试环境部署。


测试环境管理平台初见成效,最重要的是实现了单业务测试环境的快速搭建复制,保证了业务自身的迭代效率和质量。后续规划主要围绕跨业务测试环境的快速部署,为项目联调、集成测试验收提供坚实基础。关键要点如下:


  • 基于业务链路的交互测试环境一键部署;

  • 最小链路部署,保证环境联通性的同时,减少资源使用;

  • 健康检查,智能运维,自动恢复,进一步保证测试环境的整体可用性和稳定性。


本文转载自公众号爱奇艺技术产品团队(ID:iQIYI-TP)。


原文链接


爱奇艺QA测试环境管理平台初探


2020 年 9 月 07 日 14:001607

评论

发布
暂无评论
发现更多内容

☕️【系统设计】如何设计出优雅且实用的API接口

码农架构

架构设计 架构设计实战 JAVA;、

用5W1H告诉你如何规划合理的测试策略

华为云开发者社区

敏捷 敏捷开发 测试 测试策略 缺陷

Java大厂74道高级面试合集,附面试题

Geek_f90455

Java 程序员 后端

缓存使用的一些问题

旺仔大菜包

redis

啊哈!这段时间的学习感受

Nydia

8月日更

从 Druid 控制台(Druid console)中进行查询

HoneyMoose

招商银行信用卡卡号识别项目(第一篇),Python OpenCV 图像处理取经之旅第 53 篇

梦想橡皮擦

8月日更

Linux中Shell重定向

入门小站

Linux

大数据训练营 -0725 课后作业

cc

徒手撸一个记账本(附源码)

村雨遥

Java 8 月日更

Java多线程从基础到并发模型统统帮你搞定!面试总结

Geek_f90455

Java 程序员 后端

【Vue2.x 源码学习】第二十二篇 - dep 和 watcher 关联

Brave

源码 vue2 8 月日更

手撸二叉树之最小高度树

HelloWorld杰少

数据结构与算法 8 月日更

几百行代码写个Mybatis,原理搞的透透的!

小傅哥

Java spring 源码 mybatis 代理

架构实战营-毕业设计

En wei

架构实战营

docker部署redis记录,楼主亲测无异常

小黄鸡1992

8 月日更

【Flutter 专题】79 图解 Android Native 集成 FlutterBoost 小尝试 (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8 月日更

分布式存储系统可靠性:系统量化估算

vivo互联网技术

分布式存储

在线短视频缩略图剪切工具

入门小站

工具

Seldon 使用 (五): engine & graph

托内多

tensorflow kubeflow seldon

Java多线程实现方式及并发与同步,写的太详细了

Geek_f90455

Java 程序员 后端

外包学生管理系统架构设计文档

君子意如何

架构师训练营第 1 期 「架构师训练营第 1 期」

ECMAScript 2020(ES11)新特性简介

程序那些事

JavaScript ecmascript nodejs ES11 程序那些事

FastApi-01-初识

Python测试和开发

FastApi 8月日更

十大排序算法--选择排序

阿粤Ayue

排序算法 8 月日更

Pandas入门教程-Series类型数据

皮大大

Python 数据分析 数据 pandas

架构实战营毕业总结

En wei

架构实战营

Rust从0到1-模式-使用场景

rust 模式 Patterns Matching

波宝TronLink钱包APP系统开发介绍

橙子区块链l53o56oloo3

钱包系统开发 DAPP智能合约交易系统开发 波宝钱包

Pandas入门教程-开篇之作

皮大大

Python pandas 数据分析师 #python

02-架构图

Lane

低代码的认知误区与落地实践

低代码的认知误区与落地实践

爱奇艺QA测试环境管理平台初探-InfoQ