原创作者: 九宸@到家 DeepTesting 测试过程中,一套合理的环境管理流程是发布过程中很重要的一环。如何在测试过程中让环境为你服务而不是在环境维护过程投入过多人力,其实还是挺重要的一个工作。 在现在互联网模式下,微服务化架构盛行,毫不夸张的说,好的环境管理流程是事半功倍的。 环境管理的分类 一般的互联网公司环境分为三套: 环境管理角色之坑 以上三种环境基本上都是互联网公司的必备的开发测试流程中很重要的三套环境。其实这里面有几个坑点需要特别注意 按照上面来说,看起来开发、测试、运维三个角色好像都不合适对测试环境进行管理,那怎么是一个合适的方案呢? 我认为合适的方案要有如下要素: 所以,其实对于测试环境的管理来看,合理的方案是要有一套可标准化的管理工具、部署模板。 认识测试环境的部署方案的发展 测试环境为了方便部署,一般在项目部署过程中一般有如下几种方案: 测试环境部署方案一:每个项目相关的测试应用都单独部署环境
这种部署方案一般适用于小型项目团队快速开发,且并行度不高的情况,因为部署应用的数量和深度都不高,所以通过Jenkins等定义好部署脚本,随时使用新agent就可以快速重新部署一套环境。 但是,如果环境复杂度增高之后,这种成套的部署方案会出现如下几个问题点: 此时,我们需要寻求解决方案: 测试环境部署方案二: 一套统一的标准环境,所有其他项目环境都依赖标准环境进行测试
以上这种方案通过增加标准环境解决了环境依赖的问题,也是基本上互联网公司使用的标准化测试环境的方案。不过,这里面还是有一些问题点存在: 项目之间的环境互相依赖,需要一套系统解决环境指向问题。(这就是配置中心存在的原因) 环境中的每个应用部署方案,都必须要有部署脚本统一进行。(这就是测试环境部署平台存在的原因) 测试机器上部署的应用要做好规划,减少因环境依赖和资源冲突等问题。
如上,为了解决这两个问题,整个针对环境管理需要两个新的工具平台来承载。好在一般的发展到一定规模的公司,开发这两个平台的实力还是有的。 但是时间长了,第三个问题就会越来越痛,以至于随着测试团队规模的增加,我们需要出一个子团队(1~2个人)长期对环境进行管理维护,随时应对各种环境问题导致的部署失败和冲突问题。苦不堪言~ 因此测试环境在近几年进入第三套部署探索方式 测试环境部署方案三: 基于Docker的标准化测试环境部署方案
Docker的引入,让环境的标准化问题解决了,环境的维护成本会减少,但这个方案是不是最后的方案了,其实我认为也不是因为其实docker解决了环境问题,又引入了几个新问题: 其实环境随着一步步的解决问题,技术的复杂度是越来越高了。有时候其实考虑如果完全docker生成一套隔离环境,可能会是更好的方案,在不计成本的情况下完全抛弃测试标准环境。 所以测试环境管理和维护这条路,其实是随着解决的问题深入,需要有很深入的思考和解决问题能力的,而且对技术的要求也越来越高。
今天就先写这两个点的环境问题,其实对于测试环境来说,如何和持续集成更好的互动、配置中心、环境监控、日志收集等等都会是可以深入讨论的问题点。 但,考虑到此账号会持续更新,因此关于测试环境就先写这一篇,以上提到的问题,待以后再逐一深入分析下。
|