想象一个只有「每周邮件」开关的设置页。你关掉开关,点保存,界面提示「已保存」。浏览器测试看到提示,也顺利通过。但你新开一个标签页,开关又是打开的。两次观察可以同时成立:界面报告了成功,重新读取时却找不到新值。
Evan X. Merz 在文章里谈到,AI 生成的测试可能只检查表面行为,改动积累后,代码也可能更难维护。这是他对自己工作经历的观察。可以拿来检查下一次改动,无法据此推算其他团队的故障率。
对同一次保存问三个问题
- 用户看到了什么? 从正常设置页进入,选择一个知道原值的设置。改动后观察界面显示成功、失败,还是结果未确认。
- 重新打开能读到什么? 刷新或在无法复用编辑表单状态的新环境中重开页面。核对同一用户的具体值。如果产品承诺跨会话同步,按产品约定的同步时机再用第二个会话核对。
- 响应丢了会怎样? 在获授权的测试环境里,让服务保存新值,但让浏览器收不到响应。重新打开页面。如果开关已经关闭,再提交同一次意图时,确认约定的副作用只发生一次,例如不会额外发送通知。
把两种失败分开验证
请求在写入前失败时,旧值应保留。写入成功后响应丢失时,新值可能已生效。这两种情况在页面上都可能表现为超时。下一步取决于读回结果。对开关重复设置同一个值可能无害。保存还会发邮件或创建记录时,要另外核对这些动作。
留存原值、读回的最终值以及重试后的结果。让 Agent 指出一条具体测试,并解释如果服务悄悄停止保存数据,这条测试会在哪里失败。评审人也能从同一个入口复查。如果还要检查其他改动,参考 AI 生成代码验收清单。
来源
- Evan X. Merz,AI usage generates a fragile codebase,2026 年 11 月 7 日。
- Hacker News 讨论。
设置页和配图为 Boloop 自制的说明示例。