测试工程师的岗位职责
测试工程师的测试工作,很多人以为就是工程岗位点点按钮、找找bug。职责我入行第一年也这么想,测试直到有次线上事故复盘,工程岗位一个支付流程的职责边界条件没覆盖到,导致用户重复扣款。测试那次之后我才明白,工程岗位测试的职责核心不是“找茬”,而是测试用系统化的方式降低产品上线后的风险。你写的工程岗位每一条用例,背后都对应着用户可能踩的职责坑。
需求评审阶段,测试测试工程师就得介入。工程岗位别等着开发写完代码再去测,职责那时候改成本太高。我习惯在评审会上直接问产品经理:这个优惠券叠加规则,如果用户同时用了满减和折扣,金额算错怎么办?异常流程怎么处理?这些问题往往能逼出需求文档里没写清楚的地方。有次一个电商项目,产品说“退货后自动退款”,我问了一句“如果退货时优惠券已过期,退多少钱?”现场沉默了五分钟。后来这条被补进需求,避免了上线后的客诉。
写测试用例是基本功,但很多人写得像流水账。我的做法是按风险等级来分配精力。核心支付链路,用例要细到每个字段的边界值、每个接口的超时重试;边缘功能比如“用户头像上传”,覆盖主流程就行。别追求用例数量,我见过有人写了两千条用例,结果漏了“并发下单库存扣减”这种致命场景。用例评审时,拉上开发和产品一起过,他们经常能指出你没想到的依赖关系。
执行测试阶段,手动和自动化要搭配着来。回归测试这种重复劳动,能自动化就自动化。但探索性测试不能省——拿着新版本,像真实用户那样乱点、快速切换、断网重连。我曾在一次探索测试里发现,App在弱网环境下连续点击提交按钮,会生成三笔订单。这种问题自动化脚本很难覆盖,因为脚本通常按固定节奏执行。另外,别只盯着自己的模块。有次我测完自己的功能,顺手点了下隔壁同事的页面,发现一个缓存没清导致的数据错乱。测试工程师要有“全局破坏欲”。
缺陷管理不是提交完就完事。我要求自己提的每个bug都包含:复现步骤、实际结果、预期结果、日志截图、影响范围。开发最烦“偶现”这种描述。如果真遇到偶现问题,我会尝试录屏或者加日志埋点,把概率从“偶尔”变成“10次出现3次”。bug修复后,必须回归验证,并且想一下:这个修复会不会影响其他模块?有次开发改了一个日期格式化函数,我顺手跑了关联的报表模块,果然把“本月”算成了“下月”。
上线不是终点。测试工程师要关注生产环境的监控和用户反馈。我们团队有个习惯:每次发版后两小时,轮流盯错误日志和客服群。有次凌晨发版,我看到一条“订单状态卡在待支付”的日志,立刻回滚并通知开发。后来发现是缓存key拼写错误。这种问题如果等用户投诉再处理,口碑已经丢了。
最后说点实在的。测试工程师的职责边界很模糊——你既可以只写用例点按钮,也可以深入代码审查、性能调优、安全测试。我选择后者。因为当你发现一个内存泄漏导致服务凌晨崩溃,或者一个SQL注入能拖走整个用户表时,那种“我阻止了一场灾难”的成就感,比点一万次按钮都强。这行干久了,你会养成一种职业病:看到任何系统,第一反应都是“它会在哪里出错?”这挺累的,但也挺酷。









