测试环境及自动化建设

原创:王东升 张少华


环境建设的背景

早期的测试环境本身并不复杂是典型的单服务加数据库的结构,主要由开发同学在本地搭建供调试及测试使用。但是随着系统更多的模块和更多的中间件在本地搭建服务已经变的难以控制了。雪上加霜的是问题总是在这种环境中随时出现,为了确认究竟是环境问题还是代码问题常常需要花费大量。在这个上面花费的烦琐投入成为了很多同学在研发过程中的痛。罗马不是一天建成的,环境作为研发过程的基础也需要持续的建设与完善,早期建设的基本逻辑对长期的发展至关重要。这次我们主要介绍下环境早期建设的基本思路、使用的方案和遇到的问题,以及后续升级的思路。

基于vagrant环境建设方案

为了满足开发调试、系统测试等目标我们需要快捷、稳定的测试环境,那导致环境不好用的拦路虎有哪些呢?我们把之前的问题大概分成了几类:

1.基础环境底操作比较复杂

2.需要大量的基础组件知识

3.复杂的系统拓扑让问题的跟进变的异常复杂

为了解决这类问题我们在规范化和工具化的药方中给出了以下的解决方案:

1.使用统一的底层基础系统,解除由于底层基础不一致导致的问题,由于当时Docker本身对基础组建支持和操作系统的支持尚不够完善,所以在最早的版本中我们使用的支持虚拟化技术的Vagrant工作+和线上完全一致的CentOS作为基础环境。如果对Vagrant本身感兴趣可以参考开源社区的文档——http://club.shopex.cn/b2b2c/dev/700.operator/100.deploy/400.vagrant-install.html

2.在基础环境内配置一套包含MySQL、Redis、Mongo、Nginx等,以保证在环境能使用的基础组件均与线上一致且处于可用的状态。

3.对于第三方依赖例如对阿里云的MNS等依赖进行统一的MOCK,并提供随时可以配置使用的HTTP类MOCK系统作为环境的重要组件。

4.环境系统以及子系统的拓扑由环境管理平台统一管理,系统中模块采用有限的几种模式开发(包括Django、Go、Node、Flask几种架构)并提供基础环境使用的统一的管理接口(我们通过Makefile进行封装管理)。

5.提供整个环境系统可视化的管理平台,以方便任何角色的同学快速确认环境的状况并提高环境定位的效率。

6.建设统一的业务操作系统,方便快制造场景以进行测试。

有了基础系统后接下来就是要支持支持研发迭代流程,迭代流程支持主要包括开发环境和测试环境的支持。以下是新模块接入和基础环境更新的流程:

对于开发以及测试的同学在申请环境的时候,第一步拿到的是今天凌晨生成的一个基础环境,该基础环境生成时已经经过功能测试保证基础环境是可用的状态。第二步,环境管理工具对基础环境进行更新。更新的原则是在子系统中除指定模块更新到指定的分支和版本外,其余模块更新到已经经过持续集成测试的lastStable状态的代码。例如我们可以通过以下命令执行其中一个模块

upp moduleA -r xxx -b yyy  #将moduleA更新到xxx仓库的yyy分支

另外也可以通过环境管理控制平台对模块进行更新等操作

基础MOCK系统建设

为了保证测试顺利进行MOCK在测试环境中非常重要。MOCK按照使用的状况可以分为两大类:第一类是测试环境一直要使用的外部模块MOCK,第二种是在不同子系统中需要切换真实系统和MOCK系统的内部模块MOCK。对于第一种我们完全模拟第三方行为,并通过API以及可视化管理平台进行管理。例如阿里云的MNS在我们的测试环境通过域名重定向到本机MOCK的服务中,该服务除性能外基本与线上MNS无差异,这保证了用户在测试过程中既要真实又要安全高效的目标。另外还根据测试环境对重复场景验证的要求提供了快照保存等功能。

另一类一般在初始化环境时确定选择真实模块或者是MOCK模块,替换过过程由环境系统管理工具统一操作,例如:

python preparenv.py -k xmodule #将xmodule替换成mock模块

MOCK本身管理交给环境管理系统来做,在我们的环境中大多数模块都存在一个MOCK的支持快速测试的替换模块。

测试工具模块

测试工具系统是另外一个效率提升的实践,该模块的目标是将提高达到目标场景的速度,举例说如果我们要测试一个注册过的用户我们一般可以通过APP一步步注册达到这个状态,但是除了测试注册过程外注册本身我们并不需要特别关注。因此在我们的环境工具系统中,我们将业务场景进行分类聚合,形成一系列的可以快速达到的可以操作的场景,如下:

测试工具系统可以非常有效的提高业务测试操作的效率,此外业务系统外也有一些列需要测试同学关注的测试,这些操作平时也占用来的大家大量时间,好比说系统时间修改,数据库恢复等等。对于和业务无关的操作我们也抽象出了公用的操作模块以提高测试过程的效率。


收益与问题

通过系列的环境系统建设开发和测试的效率有了明显的提升同时也带来了另外一个好处——测试同学可以以更大的自由度参与到不同方向项目测试过程中来,经验告诉我们随着团队规模的扩大有效的并发工作模式是提高效率非常关键的因素。在看到收益的同时存在的问题也不能忽视,测试环境系统建设过程中主要存在两个问题:首先,在环境集中管理后对机器资源的需求急剧增大,即便是我们不断的扩大自己测试机器的小机房的规模依然承受了比较大的压力。另外,环境系统本身变复杂后如何去管理和维护也成了一个挑战。对于第一个问题我们探索了一些列的方案,其中一个措施是将底层环境从Vagrant迁移到Docker中去,迁移过程却是带来效率的提升。另外一个问题我们尝试了拆分模块与封装底层的方式进行优化。即使经过了很长时间发展,系统仍然不能称为完美,希望未来能把这块儿逐渐开放出来,有更多的同学一起参与持续改进。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容

  • 1. Vagrant 的介绍 虚拟开发环境 平常我们经常会遇到这样的问题:在开发机上面开发完毕程序,放到正式环境之...
    斐波那契额阅读 1,821评论 1 12
  • 一、Vagrant 介绍 Vagrant 是一个软件,可以自动化虚拟机的安装和配置流程,用来管理虚拟机,如 Vir...
    zpei0411阅读 3,916评论 0 7
  • 几种咳嗽的精油用法——多特瑞~又到了季节交替易感天候,遇到了过敏性咳嗽、小感冒咳嗽,抑或陈年老咳的我们该如何用油?...
    MISSGUANGUAN阅读 1,504评论 0 2
  • 最近看的一季《奇葩说》,辩题是“生活中的暴击,到底值不值得感激?”一半的比例的人选择了值得感激。我的天呢?难不成一...
    小碴子阅读 421评论 0 1
  • 基本上,经历过多轮牛熊的老韭菜都相信,比特币会再创新高,币市会再创新高。那下一波到底什么时候来呢? 一、有人说:2...
    Carykive阅读 2,707评论 19 131