测试工程笔记 / 职业现场
早上打开电脑,自动化报告红了27条。
你刚把日志对上,项目群里又来一句:“今天这个版本,18点能发吗?”
下午终于准备改测试工具,开发过来找你:支付回调有一段逻辑,想一起确认一下。
等到下班前,你发现代码没写多少,脑子却一直没停。
聊月入25k测试开发的工作强度,我更愿意把这一天拆开,看看到底有哪些事情在消耗精力。
01|09:10,先判断这27条失败是什么
昨晚的流水线跑了960条用例:
首次通过933条,失败27条; 只重跑失败项,其中18条通过,9条仍然失败。
如果报表把重试后通过也算进“最终成功”,成功比例会从97.19%变成99.06%。
数字好看了,但这27条为什么失败,还没有解释。
接下来要看失败截图、请求日志、执行时间和测试数据。这个模拟项目里,排查结果是:
27条用例失败,可能对应3类问题;其中6条,还可能指向同一个业务缺陷。
这时,你交付的应当是一份可以分工处理的清单:哪些由测开调整,哪些需要开发修复,哪些还缺证据,什么时候再确认。
重跑通过的18条,也要保留失败历史。Playwright Test本身就区分首次通过、重试后通过和始终失败;重试后的绿色不能替代原因分析。[1]
这一段工作最费精力的地方,是信息分散:现象在报告里,请求在日志里,数据在数据库里,代码改动又在另一个地方。你得把它们接起来。
02|10:30,把“积分不对”变成可以修的缺陷
继续看那6条业务失败。
模拟规则很简单:订单支付成功后,赠送20积分。
同一个支付成功事件被投递了3次,页面上的订单状态仍是“已支付”,积分却变成了60。
只检查“支付成功”四个字,这个问题就可能被漏掉。
此时,一份有用的缺陷记录至少要写清:
复现条件:同一订单、同一事件ID,连续投递3次支付成功通知。
预期结果:只产生1条20积分的入账记录。
实际结果:产生3条记录,合计60积分。
证据:测试版本、订单号、事件ID、三次请求时间、响应、积分流水。
补充验证:连续重放与并发重放分别检查,避免只覆盖顺序重复。
这里涉及幂等性:同一业务操作重复到达,业务结果仍应只生效一次。支付事件重复投递值得认真覆盖,Stripe的官方文档也明确说明Webhook可能重复到达,并给出了去重处理建议。[2]
测开需要把现象稳定复现,和开发一起缩小范围。服务端怎么修、代码怎么评审,由对应负责人推进;测试继续确认业务预期和回归范围。
这部分工作的压力,来自一个很具体的问题:
你提供的证据,够不够让下一位同事接着往下做?
“偶现,麻烦看看”和一份能按步骤复现的记录,后面的沟通成本差很多。
03|14:00,终于写代码了,但要解决反复发生的问题
上午那18条失败,暴露的是测试数据互相干扰。
这里有一个容易混淆的地方:Playwright的浏览器上下文能隔离Cookie、存储等浏览器状态;服务端同一账号下的购物车,仍然可能被多个测试同时修改。需要把账号、订单和数据清理策略一起考虑。[3]
这个下午,可以提交一项范围明确的改动:
为并行任务分配独立测试账号; 为测试创建的数据标记所属任务; 清理时只删除本任务创建的数据; 把账号、任务标识和订单号写入失败附件,便于追踪。
提交后还要评审、验证,再观察后续流水线。不能因为本地跑绿一次,就宣布不稳定问题已经解决。
测开写出来的东西,还要证明它减少了多少重复劳动。
给一个工作量估算:
假设某项失败信息汇总,每轮需要人工处理12分钟;改造后目标是3分钟。每天3轮,一个月按20个工作日计算:
(12-3)×3×20=540分钟,也就是9小时。
这9小时是预计减少的人工处理时间,还要扣除开发、评审和维护成本。它不是已经兑现的收益,更不能直接当成缩减人员的依据。
衡量这项改动,可以继续记录:处理耗时是否真的下降?相同原因的失败是否减少?别人能不能自己使用?
Google的SRE资料把一类重复、手工、可自动化的运维劳动称为“toil”,强调给工程改进留出空间。测试团队也可以借鉴这个方向:安排时间,让反复发生的问题逐渐变少。[4]
04|16:00,剩2小时,先算一遍做不做得完
原定18点发布,还剩96条需要人工验证或复核的回归项。
现场有2名测试,按每条平均4分钟估算:
剩余工作量:96×4=384分钟,即6.4人时。
可用时间:2人×2小时=4人时。
这4人时还是两个人都能完整投入、任务可以并行的理论上限。联调等待和临时沟通,会继续占用时间。
缺口已经摆在这里。
这时候,该带着数据和项目负责人讨论:调整发布时间、缩小发布范围,或者在交接成本可控的前提下补充人手。
假设团队先选出36条关键项做验证:
36条×4分钟,预计144分钟; 另留60分钟给问题复核、沟通和报告; 合计204分钟,占3.4人时。
这只是一个可执行的时间安排。剩下60条没有测过,风险仍然存在。缩小测试范围本身,也不意味着已经满足发布条件。
到17:50,这个模拟项目的汇报可以这样写:
本轮选定36项,已执行36项:30项通过、6项失败。
6项失败关联同一重复回调缺陷,目前尚未关闭。
另外60项未执行;早间支付沙箱超时场景的验证仍未闭环。
建议暂缓包含该支付变更的版本。若拆分发布其他内容,需要重新确认依赖、影响范围和必要验证。
这段汇报没有承诺“应该没问题”,但给出了团队下一步可以讨论的依据。
测试负责人提供质量证据和风险建议,发布负责人组织决策,相关角色分别承担自己的职责。
05|18:20,最累的部分,工时表未必写得出来
回看这一天,你切换过几种工作:
早上是失败排查;上午是业务分析;下午是工具改造;临近发布,又要做时间估算、风险说明和交接。
写代码时被拉去确认问题,回来要重新找回思路。一个结论刚准备发出,测试版本又更新了,还要确认原来的证据是否适用。
工作强度会体现在连续判断、任务切换和截止时间上。
这些能力值得在面试中考察,也值得在团队里培养。不过,25k本身不能推出“必须每天加班到几点”,更不能推出“一个人应该包下所有问题”。
有些额外投入来自阶段性发布压力;有些则来自长期没有解决的流程问题,例如:
测试环境频繁故障,却没有明确维护人; 每次临发布都加需求,却不调整范围和时间; 失败只能靠某个人排查,知识一直没有沉淀; 值班、交接和升级机制不清楚,下班后仍默认随时找人。
如果这些事情持续发生,就需要讨论人手、职责、环境和排期。仅靠个人更努力,很难把问题长期压住。
06|想拿这类岗位,面试时也把工作问具体
我会建议候选人问几件能核实的事:
最近一个月,临时加班主要因为什么?让对方举一次发布或故障的例子,看看频率和处理方式。
一名测开负责几个业务模块,协作的开发和测试各有多少人?人数之外,再问清职责边界。
自动化经常因为什么失败,谁负责维护?这会影响你入职后的时间分配。
遇到重大质量风险,发布怎么决定?了解测试意见如何进入决策,以及谁负责最终确认。
团队有没有固定时间治理不稳定用例、测试环境和重复劳动?这决定了你能否持续改进手上的系统。
至于能力准备,可以拿自己的项目练习三件事:把一组失败分清原因;把一个缺陷整理成能复现的证据;把一次来不及完成的任务说清取舍和风险。
这些练习比“熟悉很多工具”的一句话,更能展示你怎样工作。
月入25k的测试开发,值得追求的是与职责匹配的回报、不断积累的工程能力,以及能够持续交付的工作方式。
忙了一天之后,有哪些问题被查清了,哪些风险被讲明了,哪些重复劳动以后可以少做一点?
我会用这些结果,评价一个测开的这一天。
你目前最耗时间的是哪一项:写测试、查不稳定用例,还是临发布时不断变化的需求?
资料说明
以下资料仅支持文中提到的工程方法:
[1] Playwright Test:Retries(JavaScript/TypeScript测试运行器的结果分类)
https://playwright.dev/docs/test-retries
[2] Stripe:Webhooks / Handle duplicate events
https://docs.stripe.com/webhooks
[3] Playwright Python:浏览器上下文隔离
https://playwright.dev/python/docs/browser-contexts
[4] Google SRE:Eliminating Toil
https://sre.google/sre-book/eliminating-toil/




