林夏的指尖在机械键盘上敲出最后一个测试用例编号时,窗外的天已经完全黑透。办公区只剩下她这盏工位灯还亮着,屏幕上“电商平台支付模块回归测试报告”的标题旁,红色的“未通过”标记像根刺,扎在密密麻麻的测试结果里——这是她入职互联网公司的第四年,也是这个月第三周为了赶上线,在公司待到后半夜,桌上的外卖盒还没收拾,里面的炒饭已经凉得结块。
“夏姐,支付接口的第三次联调又失败了,开发那边说参数格式没问题,让咱们再查下测试环境的配置。”实习生小满抱着笔记本跑过来,眼眶红红的,“明天就要灰度上线了,要是今晚测不完,肯定要delay(延期)。”
林夏揉了揉发涩的眼睛,接过小满递来的测试日志。文档里“签名校验失败”的报错信息反复出现,她指着其中一行参数值:“你看这里,商户ID的长度是10位,但开发文档里写的是8位,是不是测试数据传错了?”
小满猛地拍了下脑袋:“啊!我昨天改测试用例的时候,不小心把商户ID的位数改了,忘了改回来!”她急得声音都发颤,“我现在就去改,夏姐你别生气。”
“先别慌,改完数据重新跑一遍用例,我帮你盯着日志。”林夏把自己的暖手宝塞给小满,“别着急,咱们还有时间,只要今晚把核心流程跑通,明天上线就没问题。”其实她心里也在打鼓——这次电商平台的支付模块迭代,涉及优惠券叠加、跨店满减等六个新功能,任何一个环节出问题,都会影响用户下单,进而影响平台的月度销售目标。
测试用例重新执行时,林夏点开了开发提交的代码分支。她虽然是测试工程师,但写代码的功底不输初级开发,顺着支付接口的逻辑逐行查看,很快发现了一个隐藏的bug:当用户同时使用两张不同类型的优惠券时,代码里的金额计算逻辑会出现负数。“小满,暂停测试,我找到个代码bug,跟开发说下,让他们赶紧改。”
开发工程师老吴接到电话时,正在楼下抽烟:“夏姐,别这么卷啊,都快十二点了,就不能明天再改吗?”
“这个bug会导致用户支付时金额异常,要是灰度上线时被用户碰到,投诉量肯定爆增。”林夏的声音很平静,却带着不容置疑的坚定,“我把问题代码截图发你,你半小时内改完,我这边等你提交后重新测试。”
老吴叹了口气:“行吧,谁让你是咱们团队的‘测试门神’呢,我这就上来。”
挂了电话,小满小声问:“夏姐,你怎么总能找到开发没发现的bug啊?我跑了好几遍用例,都没测出来这个问题。”
林夏打开自己的测试笔记,里面记满了不同场景的测试思路:“测试不是只按用例走流程,要站在用户的角度想问题。比如这个支付场景,用户可能会同时用店铺优惠券和平台优惠券,也可能只用品类券,甚至会取消支付后重新下单,这些边缘场景都得考虑到。”她指着笔记里的思维导图,“你看,我把每个功能模块都拆成了‘正常场景’‘异常场景’‘边界场景’三类,每个场景下再列具体的测试点,这样就不容易遗漏。”
凌晨一点半,老吴终于提交了修改后的代码。林夏和小满立刻开始重新测试,当支付成功的页面在测试环境里弹出时,小满激动地差点跳起来:“过了!夏姐,支付流程终于通了!”
林夏看着屏幕上的“测试通过”提示,长舒了口气,这时才发现肚子饿得咕咕叫。她从抽屉里拿出两包泡面,递给小满一包:“泡了面再走,不然回去路上该饿了。”
吃泡面的时候,小满好奇地问:“夏姐,你当初为什么要做测试啊?好多人都说测试不如开发有前途。”
林夏喝了口热汤,想起自己刚毕业的时候:“我大学学的是计算机科学,毕业时面试了开发和测试两个岗位。当时的测试经理跟我说,‘开发是把产品做出来,测试是把产品做好’,我觉得这句话特别有道理。你想啊,用户用一个产品,要是总出bug,就算功能再花哨,也没人愿意用。我们测试做的,就是把这些问题挡在用户面前,让产品更靠谱。”
第二天早上九点,项目组召开上线前的最后一次会议。产品经理拿着上线计划,兴奋地说:“支付模块的测试都过了,今天上午十点开始灰度,先放10%的流量,没问题的话,下午五点全量上线。”
林夏却皱了皱眉:“我觉得还得再测下退款场景,昨天只测了支付成功的流程,退款时优惠券的返还逻辑还没验证,万一出问题,用户肯定会投诉。”
开发组的组长立刻反驳:“退款场景之前测过啊,而且这次迭代没改退款的代码,没必要再测了,耽误了上线时间,老板又要骂人。”
“没改代码不代表没问题,支付模块改了优惠券的计算逻辑,退款时要反向计算,很可能会有依赖问题。”林夏打开测试环境,“给我半小时,我快速跑一遍退款的核心用例,要是没问题,咱们再上线。”
小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!