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


优点:能够快速搭建全套环境,同时提供编排、监控能力
缺点:需要运维的支持、需要k8s、的实践经验
基于服务虚拟化的环境治理
上面提到的3种测试环境治理方案,虽然都能够管理一套环境的搭建,甚至可以快速的复制另一套测试环境 。但还是不能覆盖实际工作中的主要场景需求 。
比如:开发者A因为开发模块A需要联调,他可能需要一套环境来自测;同样的开发者B、C都会有同样的需求,甚至测试A,产品D都需要一套特定的测试环境来进行测试或者验收 。
值得注意的是,上述场景并不是假设的,而是真实存在的;尤其是对于功能模块比较庞大的被测对象 。比如:现在比较流程的微服务架构,动辄成百上千的服务模块;想搭建一套完整的服务实属不易,况且还要有空余的机器支持!

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

文章插图
所以说上面的3种解决方案,最多只能解决单套测试环境的问题,而不能解决多套测试环境并行的问题 。对于这种情况就需要使用服务虚拟化技术来解决了 。
所谓的服务虚拟化,是相对于容器技术的进程虚拟化而言 。即指的是对服务进行隔离和互通的一种技术实现方式 。
服务虚拟化的概念是阿里提出的,但是类似的技术方案在其它公司也有实现,且具体技术方案也不一样,但是其基础的思想都是一致的 。下面就来介绍下服务虚拟化的测试环境治理方案 。
服务虚拟化的前提是,保证已经拥有了一套基础版本的全套模块服务,这里暂且称之为base环境 。base环境通常是与线上版本保持一致的线下全套服务环境 。
有了base环境之后,理想状态下如果其中一个模块被修改了,直接用该模块的测试版本替换掉原来的base版本,就可以拥有一套完整的测试环境了 。但这里仍然会有几个问题:
替换测试模块的方式会破坏原来的base环境不能同时支持多个模块并发替换和测试
所以服务虚拟化的概念就有了,如何才能实现不同服务间的隔离和共享,来达到环境服务的虚拟化 。下面来看一张服务虚拟化的图示 。
上图中假设一套环境只有ABC3个模块组成,而上面5个模块却已经拥有了3套环境:一套base环境(ABC),2套虚拟环境(A’BC,ABC’) 。依据上面的假设可以推理出,服务虚拟化可以提供任意的一个或多个模块的动态替换,快速的组建起一套基于base环境的虚拟环境 。
该方案可以说是环境治理的终极方案,但是它的实现依赖于2个关键技术点:
关于这2点的技术实现,阿里、有赞都已经有了各自的实现方式,感兴趣的同学可以去他们的公众号上查阅相关文章;当然还可以有其它的实现方式,大家也可以自己思考下,欢迎来共同探讨该技术话题!
新书推荐
获取更多关于和自动化测试的文章,请扫描如下二维码!