|
测试工程师的测试工位,通常不在聚光灯下。工程但产品上线前夜,测试全公司最安静的工程人一定是他们。 我认识一位姓陈的测试测试,他在一家电商公司干了六年。工程有次大促前,测试开发信誓旦旦说支付接口稳如老狗,工程陈工没说话,测试默默用脚本模拟了三千个并发用户同时点击“立即支付”。工程服务器扛住了,测试但数据库里凭空多出几百条订单记录——金额全是工程负数。开发盯着屏幕愣了半天,测试最后发现是工程优惠券模块的边界条件写反了:满100减50,被算成了满50减100。测试那晚陈工没骂人,只说了句“负数订单要是真发出去,仓库得倒贴钱寄货”。 这活儿表面上是找茬,实际上是在跟系统的“侥幸心理”搏斗。开发写代码时默认用户会规规矩矩点按钮,测试却要扮演那个喝多了酒、把手机倒过来扫码、连点十次提交的混蛋用户。我见过最狠的测试案例,是有人用一只真猫踩键盘,验证误触是否会导致订单状态错乱。那只猫后来成了团队吉祥物,但没人记得它踩出的bug具体是什么——大家只记住了,任何“不可能发生的操作”都可能真实发生。 测试工程师的日常,一半是写脚本,一半是当侦探。他们得从海量日志里揪出那一条毫秒级的超时记录,像在稻草堆里找一根生锈的针。有时候bug藏得极深,比如只在特定手机型号、特定网络环境下、用户连续滑动屏幕超过十秒才触发。这种问题没法靠肉眼盯代码发现,得靠穷举、靠概率、靠一种近乎偏执的耐心去复现。陈工有句口头禅:“我测的不是功能,是开发的下限。”这话糙,但理不糙——大部分bug不是逻辑多复杂,而是开发在某个瞬间觉得“差不多得了”。 偏偏“差不多”三个字,在测试这儿是禁语。他们得对着一版新功能问:如果用户断网重连呢?如果服务器返回的数据少一个字段呢?如果用户手机内存满了导致图片加载一半呢?这些问题问多了,人容易变得神经质。有个做地图导航测试的朋友,每次打车都盯着司机路线,看有没有绕路——她不是心疼钱,是想验证自己测过的路径规划算法在真实路况下有没有漏掉那条近道。这种职业病没法根治,只能共存。 行业里有个说法:开发是创造者,测试是毁灭者。这话我不完全同意。好的测试不是把东西弄坏,而是提前知道东西会在哪儿坏。他们像给大坝做压力测试的人,不会等洪水来了才补裂缝。去年有个医疗App上线前,测试团队发现用药提醒的推送时间在跨时区时差一小时。如果没发现,海外用户可能凌晨三点收到“该吃药了”的提醒——那种事故,不是道歉能解决的。 说到底,测试工程师玩的是“可能性”的游戏。他们不写功能,但决定了功能能不能活到用户手上。这份工作不浪漫,甚至有点枯燥,但每次版本平稳发布、用户毫无感知地用完一个功能,那种“什么都没发生”的平静,就是他们最实在的成就感。没人会为没发生的灾难鼓掌,所以他们的名字通常只出现在内部邮件末尾的致谢里——那行小字,往往没人认真读。 |