昨天看到一个团队的测试覆盖率:98%。
结果上线第一周,他们的 Agent 在生产环境搞砸了 12 次。
问题不在覆盖率,在他们对「测试」的理解完全错了。
不可能三角一:确定性 vs 智能性
传统测试的假设:同样的输入,永远得到同样的输出。
AI Agent 的现实:同样的输入,每次都可能不同。
这不叫 Bug,这叫智能。
但传统测试框架根本无法处理这种情况。
真实案例:
一个客服 Agent,测试时 100% 通过。上线后,用户抱怨「有时候回答得很对,有时候完全偏题」。
团队查了三天,最后发现:模型确实在「思考」,只是思考的结果不稳定。
解决方案:
不是强制模型稳定,而是测试它的稳定性范围。
- 定义「可接受的变化范围」
- 测试 100 次,统计结果的分布
- 如果 95% 的结果在范围内,就算通过
前 OpenAI 工程师说:「你要测试的不是答案本身,而是答案的质量分布。」
不可能三角二:速度 vs 质量
现状:大多数团队用 GPT-4 做测试,用 GPT-3.5 做生产。
问题:测试环境的表现,和生产环境完全不同。
这就像用法拉利测试,用五菱宏光跑比赛。
数据对比:
某团队发现:他们在测试环境的准确率是 92%,生产环境只有 78%。
为什么?因为测试用例太「干净」了。
真实用户的输入:拼写错误、语法混乱、信息缺失、多层嵌套...
解决方案:
不要「造」测试数据,从生产环境「偷」。
- 收集真实用户对话(匿名化)
- 人工标注正确答案
- 用这些数据做测试集
Stripe 的做法:他们的测试集 100% 来自真实用户反馈。
结果:测试和生产环境的准确率差距从 14% 降到 3%。
不可能三角三:成本 vs 覆盖率
现状:测试一次 Agent,调用模型 1000 次,花费 50 美元。
每天测试 10 次,一个月就是 1.5 万美元。
更糟的是:大多数测试调用都是浪费的。
典型案例:
一个电商 Agent,有 500 个测试用例。
但分析发现:其中 300 个用例,都在测试「模型能不能理解中文」。
这根本不需要测 300 次。
解决方案:
分层测试:
- 单元测试(不用模型):测试逻辑分支、工具调用、权限控制
- 集成测试(用小模型):测试 Agent 的决策流程
- 端到端测试(用生产模型):只测试核心场景
成本对比:
- 全量测试:每次 50 美元
- 分层测试:每次 5 美元
- 覆盖率:从 60% 提升到 85%
一个成功的案例
GitHub Copilot 的测试策略:
第一层:不用模型,测试代码生成逻辑(成本:0)
第二层:用小模型测试常见场景(成本:每次 0.1 美元)
第三层:每周用真实模型测试一次完整流程(成本:每次 100 美元)
结果:
- 测试成本降低了 90%
- 生产环境的 Bug 率下降了 40%
避坑的三个原则
原则一:接受不确定性
- AI Agent 天生就是不确定的
- 不要试图强制它稳定
- 测试的是「质量分布」,不是「固定答案」
原则二:测试真实场景
- 从生产环境收集测试数据
- 测试脏数据、边界情况、异常输入
- 不要在「干净的实验室」里测试
原则三:分层降低成本
- 能用规则测试的,就不用模型
- 能用小模型测试,就不用大模型
- 只在关键场景用生产模型测试
最后的建议
AI Agent 的测试,不是传统测试的升级,而是全新的范式。
如果你在做 AI Agent 测试,问自己三个问题:
- 我在测试「固定答案」还是「质量分布」?
- 我的测试数据来自「实验室」还是「生产环境」?
- 我能区分哪些测试必须用模型,哪些可以不用吗?
如果任何一个答案是「前者」,重新设计你的测试策略。
测试的目的不是证明 Agent 是对的,是找到它会犯错的地方。
—— https://www.80aj.com