第4章之4.4 测试环境搭建——京东系统质量保障技术实战(4)

发表于:2017-11-17 16:54

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:商城研发POP平台    来源:51Testing软件测试网原创

分享:
  4.5.2 测试服务器管理
  测试服务器管理是测试环境管理中的一项重要工作。当测试服务器维护量比较大时,需要将这些服务器有效地管理起来。这样既可以合理利用,避免长时间空闲,浪费资源,又可以避免随意部署,导致服务调用关系混乱,服务不稳定。所有的服务器可以资源池化管理,需要时申请,不需要时可以释放。首先,可以统计业务线应用的数量,多个需求并行开发时每天需要测试的分支数量等,评估需要的测试服务器数量,将所有服务器按业务线分组。其次,将应用按照稳定环境、分支环境分组。一般需要有专门的管理员管理服务器。每条业务线可以有一个服务器管理员。
  为避免服务器负载过高、磁盘空间不足、服务器故障等情况出现而影响测试,一般需要监控服务器的运行情况,做到提前预警,提前处理。监控的指标有,服务器是否运行、CPU 使用情况、磁盘空间剩余情况等。应该有预警机制,一旦服务器出现问题,管理员应第一时间知道并排查解决。
  4.5.3 稳定环境每日自动部署
  稳定测试环境为开发环境和测试提供稳定服务。稳定环境一般需要安装所有应用,特别是基础应用服务。其他测试环境可以只安装需要测试的服务。在测试时,被测服务需要调用稳定测试环境的服务。稳定测试环境要保证绝对稳定,以免影响日常测试。如果有自动化部署的方式,稳定测试环境通常可以在夜间进行部署。或者,一个服务可以部署两套,通过Nginx 配置负载均衡策略,稳定环境某个服务实例更新时,可以将流量无缝切换到另一套服务上,当前服务更新后再更新另外一套。这样做的优点是不受时间影响,可以随时部署,并且当一套服务宕掉后可以有备份服务,提高了环境的稳定性。不过缺点是需要有充足的测试服务器资源,并且每次主干代码更新都需要重新部署两套服务,维护量比较大。
  如果从零开始搭建稳定测试环境,则需要先统计应用信息,包括代码地址、配置信息等。笔者所在部门采用Maven 管理项目,针对测试环境和线上环境采用不同的profile 管理配置信息。打包时使用的命令如mvn -U -e -Pdevelopment clean package。所以最简单的办法是梳理应用间的依赖关系,专门配置一套稳定测试环境需要的 profile。如果应用间相互依赖的配置信息是和服务器相关的,如hosts 等,部署系统支持在应用部署前自动修改。稳定环境应用配置信息梳理完成后,即可在测试环境管理平台采用定时部署的方式管理测试环境。
  主干代码是比较稳定的,不需要频繁部署。下面我们介绍一种占用资源少的自动化部署方案。这种方式需要夜间定时部署。应用会在指定的时间进行部署,并进行简单的冒烟测试验证服务是否正常运行。如果在打包、部署任一环节出现问题,系统会依次执行回滚、冒烟测试并记录异常信息供人工处理。
  系统默认支持使用Maven 打包,使用-D 选项设置编译变量和使用的profile。如果需要在编译时修改配置文件,则需要配置相对项目根目录的文件路径、要替换的key 值、预期值。XML 文件采用xpath、Value 方式,property 文件采用Key、Value方式,如图4.5.4 所示。
  配置依赖服务的Host,服务部署前系统会自动更新到服务器,如图4.5.5 所示。
  配置应用的部署时间。域名、ip 代表服务器上的某个应用,在定时配置前已经创建完毕,这里略过,如图4.5.6 所示。
  以上设置完成后,系统会在指定时间部署应用。这种自动化部署方式,可以调用HTTP 接口验证服务是否部署正常。如果验证失败,则会自动进行回滚。如果要更新最新版本,也可以进行手工部署。如图4.5.7 所示。
  4.5.4 日常测试自动部署
  在日常开发测试工作中,每个人可能会参与多个项目和需求。一般会采用敏捷开发方式进行短周期、多次迭代开发。开发会经常提测,如果采用传统的手工部署方式,则步骤为手工编译、打包、上传应用包到服务器上,部署到服务目录下,然后执行;启动脚本启动服务,繁复的操作非常浪费时间,而且不方便管理。我们将这种操作采用自动化方式解决。
  自动部署前的准备工作如下。
  配置应用的代码地址、打包目录、代码仓库的账户信息。设置应用的产品线,如图4.5.8 所示。
  分配应用部署的服务器。在服务器上创建应用服务站点,如图4.5.9 所示。
  部署时只需要选择产品线下的应用、需要部署的服务器、需要部署的分支、代码版本号、profile 及动态设置的变量即可自动部署,如图4.5.10 所示。
  代码的编译、打包、部署工作由系统自动完成。为了出错后方便定位问题,可以在系统中实时查看日志。部署后系统会记录部署情况,方便了解应用当前部署情况。如图4.5.11 所示。
  4.6 小结
  本章主要讲述了测试环境中常用的构建工具、Web 服务软件及自动化方式部署、管理服务器的方法。测试环境管理涉及网络、服务器、应用部署管理等,比较复杂。我们提供了一套比较完整的管理方案,并将其系统化,已经运行了很长时间,每天的访问量非常大。希望能为读者梳理和开拓思路,在测试环境管理工作中提供参考。

本文选自《京东系统质量保障技术实战》第四章,本站经机械工业出版社和作者的授权。
版权声明:51Testing软件测试网获机械工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号