背景
测试环境是项目测试的关键环节,其部署效率、稳定性、连通性直接影响项目的迭代效率。在测试环节中测试环境一直是行业中的较为薄弱一环,面临很多的问题,比如:
搭建成本高: 复杂业务的梳理成本高;搭建测试环境,需要经过申请资源、部署组件、连通性测试等一系列流程,路径长、成本高;搭建完成后需要持续人力投入等;
复制成本高: 绝大部分系统的测试环境无法一键 0 成本复制,也无法快速满足多项目多套测试环境的需求,影响项目进度;
联调成本高: 涉及多个系统的联调项目,整体可用性较差,经常阻碍项目,且一旦出问题,排查耗时;
使用成本高: 无法快速找到所依赖系统的测试环境,尤其是站在客户端角度。
测试环境的治理已经迫在眉睫,所以,爱奇艺测试团队立项测试环境平台, 实现如下几个目标:
统一测试环境管理方案,整合资源,减少各业务环境的开发、维护成本;
解决各业务联调测试环境部署、问题定位等带来的人力投入;
方便用户使用,按需随时使用,减少等待、使用成本。
测试环境管理要素
面对各业务的不同测试环境部署流程、不同类型系统架构,如何提炼通用的测试环境管理方案,是首要解决的难点。因此测试团队提炼出测试环境的通用性部署流程,从下图中可以看出,测试环境平台需要支撑的关键能力包括: 支持人工梳理的业务拓扑及部署脚本的集中管理和对用户透明的资源使用,以及方便的动态部署和问题自动定位、恢复。
爱奇艺测试环境管理方案
测试环境梳理流程清晰后,聚焦到测试环境部署环节提炼出不同种类系统的测试环境拓扑,并得出了测试环境管理的五要素:存储、中间件、应用、组件、依赖,而其中,应用就是测试环境管理的最小单元。
爱奇艺测试环境拓扑
测试环境平台方案
综合测试环境的痛点、治理目标、核心要素,我们提炼出了爱奇艺测试环境平台的核心设计理念: 用户一次性梳理测试环境核心要素,0 成本任意搭建测试环境,测试环境问题自动定位和恢复。 并提出了测试环境产品方案,如下:
爱奇艺测试平台产品方案
难点攻坚
随着测试环境平台产品架构的明确,后续的落地也遇到了很多难点,我们将一些关键问题进行了详细解读。
一、资源的高效管理
搭建测试环境依赖众多资源,诸如虚机、容器、mysql、redis、rocketMQ、zookeeper 等,如果全部由测试环境平台来统一管理,那将是一项非常大的维护成本,结合行业经验,我们采取了一种合作模式:与公司各资源管理的服务合作,各服务负责提供各类资源的动态创建、更新、销毁机制,测试环境平台统一集成,并创建自己的资源池,预留小部分资源来支撑实时部署,同时可根据部署资源需求动态扩容资源池,如下图所示:
二、测试环境的安全保障
各业务之前测试环境全部部署在生产网络下,存在干扰线上服务的安全隐患,此次测试环境治理目标之一也包括将 QA 测试环境部署在隔离网络。在与公司服务治理团队的一起努力下,共建了测试环境迁移整体方案,已完成一期 QA 测试环境的迁移试点,同时也加速了 RD 测试环境的隔离迁移进度。
隔离网络方案如下图所示:
隔离网络方案
目前,测试环境平台支持同时在生产区、测试区部署测试环境,我们的最终目标是测试环境只在测试区部署。
三、测试环境的高效部署
随着越来越多的系统接入测试环境平台,整体性能逐渐吃紧,单个应用部署耗时最高达到了 60 分钟,所以测试团队将之前架构进行优化,逐步拆解成了微服务架构,并通过削峰、缓存、重试、及时丢弃的组合方案,逐步将单个应用部署耗时由最高 60 分钟降低到 10 分钟、平均 4 分钟,部署成功率由 60%提升到 95%以上,基本上搭建一套测试环境在 5 分钟左右完成。
同时,为降低不同类型业务、系统架构的接入成本以及平台开发成本,采用工作流模式,灵活编排不同的测试环境部署流程。
四、资源的高利用率
一套测试环境搭建完成后,首要目标是保证该套测试环境连通、可用,因为不能连接线上服务,所以在部署完成所需的系统后,所依赖的系统如何部署,直接决定了资源的利用率。因此,我们采取智能链路判断的方案,一方面保证新的测试环境连通、可用,一方面最大程度复用现有的基准测试环境保证资源利用率最大化。
当前已具备一级依赖的判断,可尽量复用基准测试环境,下一步将进行全链路的智能环路判断,可完整保证测试环境连通、可用,同时资源利用率相对最大化。
五、测试环境建设标准明确
面对各业务测试环境错综复杂的现状,一步到位完成高质量的测试环境搭建可行性较低,再综合考虑测试环境的治理目的是解决项目测试的 block 问题,我们制定了 QA 测试环境成熟度:
环境搭建能力(不具备,部分可搭建,全部自主搭建)
数据管理能力(不具备,部分可搭建,全部自主搭建)
问题定位与恢复能力(天级,小时级,分钟级,秒级)
环境安全程度(与线上混用,逻辑隔离,物理隔离)
环境成熟度一方面可以帮助各业务 QA 摸清现状,一方面可以帮助更准确的制定测试环境治理的短、中、长期目标,同时我们联合端 QA,从上到下倒退关键链路系统的测试环境治理。
经过以上内容的讲解,我们将环境平台的整体架构呈现如下:
平台功能简介
平台初期定位是解决 QA 同学的测试环境高成本问题,当前也有部分 RD 同学在使用,实际上,同一个系统,无论是 RD 还是 QA,只要有一方接入环境平台,另一方都可以 0 成本使用,此处关键的功能就是模板,即一次性组装应用,可重复使用 0 成本搭建多套测试环境,如下图:
未来规划
目前环境平台日均部署次数约 1000 次,部署成功率高于 95%,平均部署耗时 4 分钟,支撑了爱奇艺会员、播放、支付等关键业务线 QA 的 100+系统、700+应用的日常测试环境部署。
测试环境管理平台初见成效,最重要的是实现了单业务测试环境的快速搭建复制,保证了业务自身的迭代效率和质量。后续规划主要围绕跨业务测试环境的快速部署,为项目联调、集成测试验收提供坚实基础。关键要点如下:
基于业务链路的交互测试环境一键部署;
最小链路部署,保证环境联通性的同时,减少资源使用;
健康检查,智能运维,自动恢复,进一步保证测试环境的整体可用性和稳定性。
本文转载自公众号爱奇艺技术产品团队(ID:iQIYI-TP)。
原文链接:
评论