首页 > 其他分享 >浅谈测试环境治理在Devops中的应用

浅谈测试环境治理在Devops中的应用

时间:2022-12-20 11:00:57浏览次数:36  
标签:浅谈 虚拟化 环境 Devops base 模块 测试环境


文章目录

  • ​​浅谈测试环境治理在Devops中的应用​​
  • ​​测试环境治理​​
  • ​​基于物理机/VM的环境编排​​
  • ​​基于openstack/KVM的虚拟化编排​​
  • ​​基于docker的容器化编排​​
  • ​​基于服务虚拟化的环境治理​​
  • ​​新书推荐​​

浅谈测试环境治理在Devops中的应用

近年来Devops可以说是比较火的概念,几乎一夜之间全部大公司都在谈Devops,谈CI/CD流水线,谈效能提升;如果哪个公司没有实施Devops实践,那么肯定会在心里被鄙视到!

其实Devops之所以能火起来,还是因为现在的互联网公司迫于竞争的压力,想要能够先于竞争对手、市场发布自己的产品或需求。而剩下的一部分公司则可能是跟随主流,且不想在前沿的技术实践上太过落后,才实践的Devops。

不管Devops是因为什么原因火起来,终归它还是一个好的实践,可以给团队和公司带来研发流程和效率上的提升。而今天我们就来说说测试环境治理在Devops中的几种应用方式。

测试环境治理

测试环境治理是软件测试过程中对被测对象软件环境的管理和调度的总称。简而言之,就是在测试过程中提供简单、方便、高效的软件测试环境的手段。

为什么测试环境治理跟Devops能扯上关系呢?因为Devops的环节中其中必不可少的就是自动化测试,而自动化测试自然就要涉及到自动化测试环境的搭建和维护,因此就需要有一个针对性的解决方案 – 测试环境治理。

其实对测试环境的管理和维护,是要更早于Devops实践;但是对测试环境的关注和投入,却是因为Devops才被放大的。所以才有了多种形式的测试环境治理方案。

基于物理机/VM的环境编排

在这种情况下并没有真正的使用到虚拟化技术,因为这里的物理机和VM都是提前搭建好的固定操作系统,不是那种可以动态创建和还原的虚拟机镜像。因此可以直接认为是在固定的物理环境中搭建和管理测试环境。

对于这种实际情况,最简单的实现方式就是通过Jenkins来配置每一个模块,直到把所有的模块都配置完成,这样一套完整的测试环境就可以在Jenkins中被管理起来,任意一个模块有更新时,直接触发该模块对应Jenkins部署任务就可以了。

优点:可以基于开源的框架直接上手,管理方式简单清晰

缺点:同时管理全套的所有模块则不够灵活,每一个分支都需要单独写一套搭建的流程

除了上面的jenkins的方式,还有一种就是开发环境搭建的编排工具。同样的它会负责每一个模块的具体搭建工作,另外它还可以统一管理一套环境中的所有模块。并且提供各模块间的依赖搭建编排功能,甚至可以提供模块状态的监控功能。

优点:统一管理一套环境,提供编排、监控、并发能力

缺点:需要一定的开发工作量

基于openstack/KVM的虚拟化编排

选用第一种方式来管理测试环境,通常是因为迫于现状才选择的。如果公司的运维能力相对比较好点,那么你们可能已经使用上了openstack等云平台基础架构,并能够提供动态创建虚拟机的服务。

对于这种实际情况,对于测试环境的治理就相对的容易点了,因为你可以把所有模块的基础环境都做成镜像,每次部署模块时可以通过基础镜像来新建或者恢复一个虚拟机,然后再部署好最新的模块即可。

优点:能够提供非常干净的基础搭建环境

缺点:需要一定的运维基础能力支持(公司需要有搭建私有云的技术能力)

基于docker的容器化编排

如果公司的运维能力再进一步,你们可能已经使用上容器化技术了。那么恭喜你!在测试环境治理的路上,你又可以更进一步了!通过docker的容器化技术,不仅可以实现基础环境的还原,而且是快速的。

对于这种情况,如果配合K8S使用,那么还可以同时拥有全套环境统一管理,编排和监控能力。配置完成一套环境后,可以快速搭建一套一模一样的基础环境。

优点:能够快速搭建全套环境,同时提供编排、监控能力

缺点:需要运维的支持、需要k8s、docker的实践经验

基于服务虚拟化的环境治理

上面提到的3种测试环境治理方案,虽然都能够管理一套环境的搭建,甚至可以快速的复制另一套测试环境。但还是不能覆盖实际工作中的主要场景需求。

比如:开发者A因为开发模块A需要联调,他可能需要一套环境来自测;同样的开发者B、C都会有同样的需求,甚至测试A,产品D都需要一套特定的测试环境来进行测试或者验收。

值得注意的是,上述场景并不是假设的,而是真实存在的;尤其是对于功能模块比较庞大的被测对象。比如:现在比较流程的微服务架构,动辄成百上千的服务模块;想搭建一套完整的服务实属不易,况且还要有空余的机器支持!

所以说上面的3种解决方案,最多只能解决单套测试环境的问题,而不能解决多套测试环境并行的问题。对于这种情况就需要使用服务虚拟化技术来解决了。

所谓的服务虚拟化,是相对于容器技术的进程虚拟化而言。即指的是对服务进行隔离和互通的一种技术实现方式。

服务虚拟化的概念是​​阿里​​提出的,但是类似的技术方案在其它公司也有实现,且具体技术方案也不一样,但是其基础的思想都是一致的。下面就来介绍下服务虚拟化的测试环境治理方案。

服务虚拟化的前提是,保证已经拥有了一套基础版本的全套模块服务,这里暂且称之为base环境。base环境通常是与线上版本保持一致的线下全套服务环境。

有了base环境之后,理想状态下如果其中一个模块被修改了,直接用该模块的测试版本替换掉原来的base版本,就可以拥有一套完整的测试环境了。但这里仍然会有几个问题:

  1. 替换测试模块的方式会破坏原来的base环境
  2. 不能同时支持多个模块并发替换和测试

所以服务虚拟化的概念就有了,如何才能实现不同服务间的隔离和共享,来达到环境服务的虚拟化。下面来看一张服务虚拟化的图示。

浅谈测试环境治理在Devops中的应用_测试环境

上图中假设一套环境只有ABC3个模块组成,而上面5个模块却已经拥有了3套环境:一套base环境(ABC),2套虚拟环境(A’BC,ABC’)。依据上面的假设可以推理出,服务虚拟化可以提供任意的一个或多个模块的动态替换,快速的组建起一套基于base环境的虚拟环境。

该方案可以说是环境治理的终极方案,但是它的实现依赖于2个关键技术点:

  • 一是如何实现动态替换base环境中的模块,且不影响其它虚拟环境使用该base模块
  • 二是如何去识别被处理的请求的意图,即请求本身希望被测试模块处理还是被base模块处理

关于这2点的技术实现,阿里、有赞都已经有了各自的实现方式,感兴趣的同学可以去他们的公众号上查阅相关文章;当然还可以有其它的实现方式,大家也可以自己思考下,欢迎来共同探讨该技术话题!

新书推荐

浅谈测试环境治理在Devops中的应用_测试环境_02

获取更多关于Python和自动化测试的文章,请扫描如下二维码!

浅谈测试环境治理在Devops中的应用_测试环境治理_03


标签:浅谈,虚拟化,环境,Devops,base,模块,测试环境
From: https://blog.51cto.com/u_15918230/5954470

相关文章

  • 3《Redis DevOps》三:小功能大用处-常用工具
    ##概述1.慢查询分析,找到有问题的命令进行优化2.RedisShell3.Pipeline,提高客户端性能4.事务与Lua脚本,自定义原子命令5.Bitmaps,字符串的位操作,节省内存6.HyperLogLo......
  • 浅谈入行Qt桌面端开发程序员-从毕业到上岗(1):当我们说到桌面端开发时,我们在谈论什么?
    谈谈我自己大家好,我是轩先生,是一个刚入行的Qt桌面端开发程序员。我的本科是双非一本的数学专业,22年毕业,只是部分课程与计算机之间有所交叉,其实在我毕业的时候并没有想过会......
  • K8s-发布方式浅谈
    K8s-发布方式浅谈蓝绿发布环境存在两个版本,蓝版本和绿版本同时存在,部署新版本然后进行测试,将流量切到新版本,最终实际运行的只有一个版本(蓝/绿)。好处是无需停机,并......
  • 前端布局之浅谈BFC
    大家好,我是CoderBin1.文档流在介绍BFC之前,需要先给大家介绍一下文档流。我们常说的文档流其实分为定位流、浮动流、普通流三种。2.绝对定位(Absolutepositioning)......
  • Azure Devops进行PowerPlatform Soluion版本管理
    1,先建好source存储的Repos2,然后创建Pipeline或releasepipeline都可以,创建方式有所不同,但后边设定job的地方是相同的​(1)Pipeline创建点击Newpipeline后要选择Usetheclass......
  • 痞子衡嵌入式:浅谈i.MXRT10xx系列MCU外接24MHz晶振的作用
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT10xx系列MCU外接24MHz晶振的作用。痞子衡之前写过一篇关于时钟引脚的文章​​《i.MXRT1xxx......
  • Auzre DevOps webhook
    目录概述实现web项目配置C#示例代码AzureDevops配置概述使用微软官方的类库(Microsoft.AspNet.WebHooks.Receivers)使用说明:https://docs.microsoft.com/en-us/asp......
  • 持续交付2.0 业务引领的DevOps精要
    背景从最初的瀑布模型,到后来的敏捷开发,再到今的DevOps,这是现代开发人员构建出色产品的技术路线。随着DevOps的兴起,出现了持续集成,持续交付(CI/CD)和持续部署的新方法,而......
  • 一起来浅谈一下科技的产生吧!
       现阶段,手机、电脑、电视、空调、汽车等等,这些都是科学技术给人类带来的便利,科技在我们身边无处不在,无所不能,可以说我们的生活就离不开科技!   那我们现阶段的......
  • 【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述
    如何评判一个训练集的好坏如果我们希望得到一个训练集,并且用该训练集所训练出来的模型,在训练集上的误差和在整个数据空间上的误差相距较小,即写成如下表达式:\[L(h^{train}......