|
我认识的和测两个同事,一个做运维,区别一个做测试,和测他们同时入职一家电商公司。区别一年后,和测测试同事升职了,区别运维同事还在每天半夜爬起来处理告警。和测不是区别运维不重要,而是和测他们的工作逻辑完全不同。 测试的区别工作是"找茬"。产品上线前,和测他们拿着需求文档,区别一条条核对功能,和测设计各种刁钻场景,区别比如断网、和测弱网、高并发、恶意输入。他们试图证明系统是错的,越能找出隐藏的bug,越说明他们专业。测试的价值在"上线前"体现,他们像质检员,把不合格的零件挑出来,退回给开发返工。 运维的工作是"兜底"。系统上线后,所有问题都是运维的。服务器宕机、数据库连接池爆满、磁盘写满、半夜流量突增——他们得在几分钟内定位问题并恢复服务。运维的价值在"上线后"体现,他们像急诊医生,病人已经休克了,你还得先保命再查病因。有一次大促,订单系统卡死,测试同事早就下班了,运维同事一边手动重启服务,一边在群里喊开发起来改代码。 两者的时间维度完全不同。测试面对的是"确定性"——需求是明确的,功能是固定的,你只要按规则验证对错。运维面对的是"不确定性"——你永远不知道下一个故障是什么,可能是云厂商的网络抖动,可能是某个开发写了个死循环,也可能是黑客正在扫描你的端口。测试可以提前规划用例,运维只能随时准备应对意外。 再说说思维方式。测试喜欢"破坏",他们要想尽办法让系统出错,出错的路径越多,覆盖越全面。运维却最怕"出错",他们要做监控、做备份、做冗余,一切努力都是为了让系统少出错。一个在制造问题,一个在消灭问题,但他们都觉得自己在保护用户。 还有个容易被忽略的点:测试的结果是"报告",运维的结果是"恢复"。测试提交一份bug列表,开发修复后,测试再回归验证,这是一个闭环。运维处理完故障后,要写复盘报告,但报告不是终点,真正的终点是系统稳定运行。测试可以复现bug,运维很多时候没法复现,因为生产环境的故障往往是偶发的、环境相关的,你永远无法在测试环境完美还原那一次内存溢出。 薪资上,运维普遍比测试累,但收入不一定高。因为运维的活"看不见",系统跑得好是应该的,没人会表扬你;一旦出问题,全公司都盯着你。测试至少还有明确的产出——你发现了几个bug,这是可以量化的。运维的产出是"没出事",而这种东西很难在绩效里体现。我那个运维同事,去年做了三次大促保障,熬了十几个通宵,年终考核评语写的是"保障系统稳定运行"。 但你要是问哪个岗位更有前途,我的看法是:测试正在被自动化工具和AI冲击,很多重复性的用例执行已经在逐渐替代人工。而运维,尤其是SRE方向,反而越来越吃香,因为云原生架构越来越复杂,故障处理需要更强的综合能力——懂网络、懂存储、懂应用、懂业务。测试容易入门,运维越做越深。 说到底,测试是防守,运维是救火。防守需要耐心和细致,救火需要胆量和反应。如果你喜欢在规则内找漏洞,去做测试;如果你享受在混乱中恢复秩序,去做运维。两者都在为系统负责,但一个在事前,一个在事后——中间隔着的,是那段最紧张的上线时间。 |