让 AI 证明自己没改坏

#QA#自动化测试#AI 协作

AI 改代码很快,问题只有一个:你怎么知道它没改坏?

《小光头勇闯修真界》做到后期,我同时开多个 agent 改不同模块。 答案不是「review 一遍」,而是把验收做成机器能判的五层。

五层验收,从静态到真机

  1. LSP 静态检查:用脚本卡 ERROR=0,错误数从 43 压到 0 之后才允许提交
  2. 179 项断言:核心玩法、数值、状态机逐项跑
  3. 机器人试玩:3 个固定 seed 的机器人通关,检查可达性
  4. 目标视口截图:每轮按 1080×1920 截图存档,用于视觉验收
  5. 真机:最后一道人眼检查

最关键的一句规则:缺证据只能是 UNDETERMINED

第二层里我把结论固定成三种状态:PASS / FAIL / UNDETERMINED。

没有截图、没跑机器人、日志缺失——一律 UNDETERMINED。 不允许「看起来没问题」,因为那等于把证据的判断权交回给人,AI 就又可以糊弄了。

机器人必须走真实输入路径

第一版机器人是白盒直调的:直接改状态、直接触发通关,结果造出了「假通关」。

后来改成必须通过虚拟指针走真实输入路径,重开也必须走真实的点击流程并断言结果。 测试如果绕过真实的输入路径,测的就是测试本身。

用确定性回归当熔断

重构成「行为保持不变」的改动,必须逐位复现基线数值: 机器人的通关时间要和基线一致(比如 185.68 / 203.18 / 192.17 秒)。

数字对不上,哪怕只有 100 毫秒,也说明某处行为变了。

两个容易忽略的坑

  • 隔离玩家存档:测试必须切到 qa 模式,否则游戏里的永久升级会悄悄修改基线
  • 干净 worktree 复核:让另一个 agent 在干净的 worktree 上 checkout 指定 commit 再跑一次,别在脏工作区「自证清白」

一句话

让 AI 自己跑测试只是第一步。真正要设计的是:AI 的产出如何被独立验证。

这篇笔记的原始 Markdown:let-ai-prove.md llms.txt · RSS