去年冬天,测试我盯着屏幕上一份测试报告,提升发现一个尴尬的测试事实:80%的用例只覆盖了不到30%的代码路径。剩下那70%的提升代码,像是测试城市地图上从未被踏足的巷子,没人知道里面藏着什么。提升这不是测试某个人的问题,是提升大多数测试团队的日常。
测试能力提升,测试第一步不是提升学新工具,是测试承认自己一直在用战术上的勤奋掩盖战略上的懒惰。
我见过一个做了五年功能测试的提升同事,每天能写上百条用例,测试执行速度飞快。提升有次我问他:你测的测试这个支付模块,如果并发量突然翻十倍,哪段代码最先扛不住?他愣了几秒,说“那是性能测试的事”。可问题在于,性能测试团队根本不知道他测过哪些边界场景,两边各干各的,中间那层逻辑断层没人管。后来线上真出了并发问题,复盘时发现,那个缺陷恰好落在他用例的盲区里。不是他不认真,是他的能力边界停在了“验证功能对不对”这一层,没往“系统在压力下会怎样”迈半步。
提升测试能力,得先换一种提问方式。别问“这个功能测完了吗”,改问“如果我是开发,最怕别人测哪里”。我自己的习惯是,拿到需求先翻代码仓库,看最近三个月改动最频繁的文件,再看那些文件里圈复杂度最高的函数。改动频繁说明需求不稳定,复杂度高说明逻辑分支多,这两者叠加的地方,缺陷密度往往高得吓人。用这个方法,我在一个订单模块里找到过一个隐藏很深的优惠券叠加漏洞,测试用例里根本没写,因为产品文档压根没提这种组合。
工具当然要学,但别贪多。自动化测试框架、接口测试工具、性能压测平台,挑一个跟你当前业务最痛的场景死磕三个月。我见过有人花两周搭了一套漂亮的自动化框架,结果维护成本比手工测试还高,最后废弃了。原因很简单:他没想清楚哪些用例值得自动化。我的判断标准很粗暴——如果一个用例未来三个月内会被执行超过二十次,或者每次执行都要花十分钟以上准备数据,那就值得自动化。否则,手工点一点更快。
还有一点常被忽略:测试能力不只是找bug的能力,还包括把bug说清楚的能力。我收到过最糟糕的缺陷报告写着“下单后页面报错”,没有截图,没有请求参数,没有复现步骤。开发看了直接打回。后来我强迫自己用固定格式写缺陷:环境、前置条件、操作步骤、实际结果、期望结果、日志片段。六项缺一不可。这个习惯坚持了半年,开发找我扯皮的概率下降了七成。因为信息足够完整,他们没法说“我本地复现不了”。
最后说个反直觉的观察。测试能力提升最快的阶段,往往不是学新东西的时候,而是被逼着去修bug的时候。我有次临时支援运维,连续三天处理线上告警。那三天里我看到的错误日志、堆栈信息、数据库慢查询,比过去三个月测试时看到的都多。回到测试岗后,我写用例的角度完全变了——开始主动模拟网络抖动、磁盘写满、依赖服务超时这些以前觉得“不该我管”的场景。能力这东西,有时候就是被真实故障硬生生撑大的。
别等公司安排培训,也别指望考个证书就脱胎换骨。从明天开始,挑一个你测过的模块,试着回答三个问题:它的核心链路在哪?最脆弱的环节是什么?如果只能保留十条用例,你留哪十条?答不上来,就说明能力还有缺口。补上它,比什么都实在。