智汇 IT
城启新篇

自动化测试中的环境治理别把临时凑数当正经事

上周跟一个做了七年测试开发的老同事吃夜宵,他说现在团队写自动化用例的时间只占日常工作量的三成,剩下七成全在跟环境扯皮。

扯到什么程度?

前一天晚上跑全量回归还全绿,第二天早上点一下执行,三个接口超时,两个依赖服务返回500。翻日志翻半小时,发现是隔壁组的同学在测试环境调自己的功能,把公共的消息队列名改了,连个通知都没发。

环境脏的代价从来不是跑错用例

很多人觉得环境出问题就是多花点时间排查的事,顶多多等半小时就能继续跑。

不对。

最坑的是那种偶发的、没有明确报错的环境问题。比如跑10次用例,有3次失败,查日志查不到任何异常,你以为是用例写得不稳,改了三次断言,加了两重等待,最后发现是环境里的缓存服务器连接数满了,每次请求随机被拒。

自动化测试环境服务依赖关系排查现场截图
自动化测试环境服务依赖关系排查现场截图

这种问题的代价从来不是多花的那几十分钟。是测试同学会慢慢对自动化结果失去信任。本来自动化是帮人省时间的,结果每次跑完都要花半小时筛哪些是真的业务bug,哪些是环境抽风,时间长了,大家宁愿去手工点核心流程,自动化脚本就成了放在仓库里没人维护的摆设。

说真的,这种内耗太磨人了。之前见过一个团队,自动化用例写了快两千条,最后实际使用率不到两成,问原因,大家说跑一次要花三个小时,还要花一个小时排查非业务问题的失败,还不如直接手工测核心模块来得快。

很多人聊自动化测试中的环境治理,总觉得是要搞个大工程,其实根本不是那回事。

别上来就买最贵的环境隔离方案

很多团队一提到环境治理,第一反应就是搞全链路隔离,每个分支一套独立环境,每个测试同学独占一套容器资源。

听着很完美对吧?

算算账呢?一套完整的测试环境要跑十几个中间件,十多个业务服务,按现在的云资源成本,就算是给每个迭代分支配一套,光资源成本每月就够招半个初级开发了。更麻烦的是,隔离完了,数据怎么办?你总不能每个环境都从头造一遍全量的业务数据吧?到最后还是要从生产环境脱敏导数据,导一次就是几个小时。

测试环境Docker容器资源占用监控面板
测试环境Docker容器资源占用监控面板

说白了,这事没那么玄。很多团队环境乱,根本不是资源不够,是没有最基本的边界。比如谁能改公共环境的配置,改之前要走什么流程,哪些服务是公共依赖,哪些是自己分支可以随便动的。之前见过一个不到二十人的小团队,没买任何高级的隔离工具,就做了一件事:所有公共依赖的配置文件存在一个单独的代码仓库里,改配置必须提MR,至少两个人review,改完在群里发个公告。就这一件事,环境导致的用例失败率直接掉了七成。

当然,如果你团队规模够大,分支并行开发的需求多,上隔离方案当然没问题。但别一上来就追求一步到位的完美架构,先把最容易踩的坑堵上,比什么都强。

把环境健康度纳入日常的巡检列表

很多人觉得环境治理是一次性的事,把当前的问题解决了就完事了。

不对。

环境是会慢慢脏掉的。比如服务运行久了产生的日志垃圾,连接池没释放的空闲连接,定时任务跑出来的脏数据,这些东西不会一下子让环境完全挂掉,但是会慢慢把响应时间拉得越来越长,让用例的失败率一点一点往上爬。等你发现的时候,可能已经攒了一两个月的问题了。

之前跟一个做金融系统测试的团队聊,他们每天早上上班第一件事,不是马上跑全量自动化,而是先跑一个只有20条用例的核心健康检查集,覆盖最基础的接口连通性、中间件连通性、数据库读写权限。这个检查跑不过,当天就先停下手头的需求开发,先修环境。一开始大家还觉得这是浪费时间,坚持了三个月,全量回归的平均排查时间从之前的四十分钟,降到了五分钟以内。

有人问,环境治理有没有一劳永逸的办法?

没有。

你总不能把环境锁在玻璃柜里不让人碰对吧?毕竟测试环境本来就是给人随便折腾的地方。要的不是绝对的干净,是出了问题能快速定位,能把那种无意义的扯皮时间压到最低。

说白了,自动化测试里最贵的从来不是脚本编写的成本,是大家对着不稳定的结果反复内耗的时间。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:自动化测试中的环境治理别把临时凑数当正经事
文章链接:https://m.itcdj.com/it/316.html