谈谈测试环境管理与实践
测试环境这个话题对于开发和测试同学一定不陌生,大家几乎每天都会接触。但是说到对测试环境的印象,却鲜有好评:
- 环境不稳定,测试五分钟,排查两小时
- 功能建设不全,导致验证不充分,遗漏缺陷
- 多人共用,互相踩踏
- 随手改动不入库,消极对待,缺乏敬畏之心
这些问题在行业内其实屡见不鲜。我甚至有听过运维同学"脏乱差"的评价。这里先不说他的评价是否有偏见,但是起码我认为,针对测试环境的管理有较大的改进空间,这是不争的事实。
而本文将重拾这个看起来老生常谈的话题,希望能系统化的阐述我的认知,以期与大家对齐。如果不对或者不完善的地方,欢迎提出,笔者将非常乐于与大家讨论。
首先我们要清晰的认知到,测试环境管理做的不好,不光有严重的质量风险,还会非常影响迭代效率,所以这件事情很重要。那在解决它之前,我们首先要去想想,对于测试环境我们到底有哪些诉求?
我们对测试环境的本质诉求是什么?
很明显,测试环境的定位就是满足产研侧的测试需求,保障产品迭代质量。所以从使用类型上,一般要支撑集成测试,系统测试,压力测试,甚至故障测试等。
而这些环境背后,其实都伴随着 非功能性要求 ,重点体现在:
- 从使用者角度
- 想用就有,不要等待
- 要低维护,高稳定
- 维护角度 - 我只关心我的测试需求,我不想干其他维护性工作
- 稳定角度 - 我依赖的其他服务和业务要稳定,不要影响我测试
- 从企业角度
- 低成本,高效率
- PS: 测试环境管理追求的是更高的研发迭代效率,但是成本是底线
- 低成本,高效率
除此之外,其实还有个非常关键的问题就是,要定义清楚测试环境管理的主体责任人是谁。这点很关键,没有责任人自然会滋生乱象。
- 研发 虽经常使用测试环境,但从投入产出比上,组织一般还是希望研发同学能多投入精力做更多创造性的事情
- 运维 本身负责线上环境的运维,可能有企业也会觉得把测试环境交给他们运维会顺水渠成,且现实确实是有不少企业就是这么干的。不过从人性的角度去分析,相比于线上环境,运维同学对测试环境的重视程度一定不够。而这也是为什么,很多企业的测试环境管理,也只是达到将就能用的水平的原因。
- 测试 测试同学算是测试环境的主要使用者,对测 试环境的管理理应负有直接责任。不过现实中,经常看到的是,测试同学因本身测试任务较多,且测试环境管理也要求具备一定的系统运维能力。导致相对而言,测试同学要想做好测试环境管理,也不容易。
不过,不管是哪个角色负责,其实症结还在 ROI 上。只要有充足的预算和人力,这些都不是问题。反之,就需要不断的优化和调整。
当然人力成本是组织层面的考量,今天我们先按下不表。这里重点聊聊如何从技术上解决这些问题。
业界的思路?
先来看看业界是怎么玩的。
阿里
阿里讲测试环境的文章不少,其中有一篇来自云效的文章,挺有借鉴价值。其重点聚焦了两个方向:
-
通过项目环境复用公共基础环境的模式,来解决资源问题
-
通过链路识别,请求染色,做到联调测试不串流量
当然,这些是借助阿里内部中间件实现的。不过在云原生环境下,其也开源了两个工具 kt-connect 和 virtual-environment,虽产品化程度做的不够,但整体还是比较有想法的。