刚工作那会儿,我对专项测试的理解非常朴素: 性能测试,就是跑个 JMeter; 稳定性测试,就是跑一晚 Monkey; 自动化,就是多写点脚本。
直到线上出了一次事故,我才真正意识到: 我“做过专项测试”,但从没“做好专项测试”。
这篇文章,记录的是我从“会用工具”到“具备专项测试思维”的真实转变。
一、那次事故,把我从“工具型测试”敲醒
有一次我们版本发布前,我负责做性能专项。 流程很完整:
- 跑了压测
- 出了报告
- TPS 看起来也不错
版本上线后,晚高峰直接报警。 用户大量反馈:页面卡死、支付失败。
事后排查发现: 并不是主接口扛不住,而是验证码服务在并发下大量超时,线程池被打满,拖垮了整个链路。
而我当时的压测里,压根没把验证码服务纳入场景。
那一刻我突然意识到: 我不是没做专项测试,而是我根本没站在“风险”的角度设计测试。
二、从那以后,我开始先问一个问题:系统最怕什么
后来每次接到专项任务,我不再直接打开工具,而是先做一件事: 找研发聊架构,找产品聊核心路径,看历史事故。
比如:
- 登录模块,最怕并发撞库
- 支付模块,最怕金额异常和幂等问题
- 消息系统,最怕堆积和消费延迟
- 客户端,最怕弱网 + 重连异常
当我开始用“系统视角”而不是“测试视角”看问题时,专项测试突然变得清晰了。
工具只是执行手段,设计能力才是核心。
三、一次稳定性专项,让我第一次真正“测出价值”
印象最深的是一次稳定性专项。
当时大家的惯性做法是: 晚上跑 Monkey,第二天说“没崩溃”。
但我加了一步: 在 Monkey 过程中,手动模拟异常环境:
- 强制断网再恢复
- 杀掉后台服务
- 模拟磁盘写满
- 模拟登录态过期
结果测出了一个很隐蔽的问题: 用户断网重连后,客户端一直在重试请求,但 token 已失效,服务端持续返回异常,导致请求队列堆积,最终卡死。
这个问题如果在线上出现,就是“偶现卡死、极难复现”的那种典型疑难 bug。
修完之后,研发专门跟我说: “这个问题如果不是你们提前测出来,线上一定会炸。”
那是我第一次真切感受到: 专项测试不是配合流程,而是实打实在“挡事故”。
四、我对自动化测试的认知,也踩过很多坑
刚做自动化时,我一度非常追求数量: 一口气写了两百多条 UI 自动化用例。
结果很快发现:
- 页面一改,大面积脚本挂
- 成功率长期只有 60%-70%
- 大家开始不信任自动化结果
后来我开始转变思路:
- 核心路径优先,而不是全量覆盖
- 页面定位尽量不用坐标、少用 XPath
- 每条失败必须能快速定位原因
- 比起数量,更关注“长期稳定跑得住”
慢慢地,自动化才从“负担”变成“资产”。
五、我现在判断一个专项有没有价值,看这三点
现在如果让我评估一个专项测试是否“做得好”,我会看:
第一,它是否覆盖了真实用户的高风险场景 不是“我能想到什么就测什么”,而是“用户最怕什么我就测什么”。
第二,它是否输出了可推动决策的结论 比如:
- 当前系统最大承载是 2000 并发
- 瓶颈在 Redis
- 扩容应用实例提升不大
而不是一句:“压测已完成,整体正常。”
第三,如果线上出问题,我是否早就设计过类似场景 如果答案是“是”,那专项测试就有价值。
六、从专项测试中,我获得的不只是技术成长
这几年最大的感受是: 专项测试能力提升后,整个人的技术视野会发生变化。
你会开始:
- 更关注系统架构
- 更理解业务链路
- 更容易和研发深入讨论
- 更容易在团队中建立专业影响力
专项测试,本质上是在训练你用“工程师视角”看系统,而不是只用“执行者视角”跑用例。
写在最后
以前我以为: 会用 JMeter、会写自动化脚本,就是专项测试能力。
后来才明白: 真正的专项测试能力,是这三件事:
- 看得出系统哪里最危险
- 设计得出能打到痛点的测试
- 说得清问题背后的工程逻辑
工具会过时,框架会变化,但这种能力,会一直伴随你的技术生涯。