会员测试环境治理之路
01
背景
特点1:基础应用服务数量多达数百个,分布在几十个域名下,维护成本高。 特点2:调用关系复杂,应用之间互相调用,并且相互依赖,联调成本高。 特点3:服务之间调用依靠路由转发、服务发现,定位成本高。
问题1:应用数量众多,每个应用基础配置随意,且存在个性化配置,不好管 理。 问题2:测试环境公用情况严重,依赖于各个研发或测试私服,稳定性比较差。 问题3:路由功能无法统一管理,调用关系混乱,环境出现问题时,排查问题时间成本高,需按调用关系逐一排查。 问题4:测试改进基建不稳定,一些基础测试工作稳定性较差,收效甚微。
02
会员测试环境发展史
阶段一:手动阶段
每次在新机器部署应用时需要安装依赖,此依赖无固定版本、使相同的应用在不同机器部署时配置、启动命令等不一致。 一个机器部署多个应用,未避免冲突及后续nginx配置,人为规定相同机器不能部署相同应用,且端口号依靠wiki维护,维护成本高且时效性差,准确率不高。 个人习惯不同导致应用配置、启动脚本不一致,难于统一进行集中管理。 无代码编译过程,部署代码包完全依赖研发,时效性低。 配置类工作较多,操作繁琐、效率低。 对环境部署人员能力要求高。
每个应用在数据库有基础配置,可进行统一管理及维护。 依赖、服务器初始化、应用启动等工作通过脚本统一完成,规范化且版本统一好维护。 代码进行统一管理,接手代码编译打包过程,服务质量可把控。 部署环境实现自动化,提高部署效率。 对部署环境人员要求降低。
配置内容没有页面操作,只能在数据库操作,操作不方便。 机器固定且无法动态扩容,出现问题后无人维护,无法支持个性化部署。 路由配置文件无法统一维护。 环境未按使用方式、场景进行区分。 扩展性差,遇到服务器迁移时成本过高。
阶段三:平台化
动态申请机器部署测试环境,即用即抛。 单应用部署拓展到模板化部署,支持多应用的部署,配置,满足场景级测试诉求。 多角色多用途使用,支持开发联调/测试验证,支持联调环境,测试环境,自动化环境等等。 复杂的路由配置和参数替换,支持不同测试能力的对接等等。 在此背景下,公司测试部基于公司资源搭建环境平台,完成测试环境资源的统一分配、基准环境的统一部署、应用统一管理和部署、环境一键使用等功能,完成测试基础工程能力建设的关键一环,为整体测试效能的提升打下基础,环境平台能力介绍如下图:
每个应用的基础配置在平台维护,页面可操作,集中管理、灵活配置(配置个性化、nginx、依赖host、注册中心)。 会员测试只需要维护自定义脚本,服务器基本依赖托管平台处理。 代码编译等操作托管公司内部CI/CD,流程规范,提高效率,版本可控。 环境按使用方式进行区分,减少因使用混乱导致的环境问题,避免分支与环境冲突。 通过权限控制人员可见系统及可操作范围。 联调环境方便管理,可集中度量。
03
解决业务痛点
1. 测试环境整合
稳定环境:各应用每天定时部署master分支,与线上服务代码保持一致,对内,对外提供联调稳定联调环境、自动化执行环境。 CI环境:当git变更时触发CI模板,进行环境部署后启动个性化脚本,执行自动化和安全测试,确保问题提前暴露。 业务测试:基于稳定分支进行配置和分支信息的修改,部署环境后进行项目测试,测试完成后环境释放,服务器可循环使用。
2. 路由管理
2.1 nginx 管理
2.2.nginx集成guardro
订阅 QAE 应用的实践消息 在本地开启一个小的 web 服务器,用于接收消息 当有消息到来时,根据消息内容,将 template 文件内特定的部分替换,生成相应 nginx 的 upstream 文件 触发 nginx 重新载入配置
2.3.注册中心
3.环境问题智能定位
04