跳转到主要内容

AI 功能的 Bug Bash:分布采样,而非猎捕缺陷

阅读需 2 分钟Tian PanTian Pan

经典的 Bug Bash 是一种为确定性软件量身定制的确定性仪式。十名工程师挤在一个 Slack 频道里两小时,对照着黄金路径流程清单疯狂测试,然后提交带有清晰复现步骤的工单:“点击 X,看到 Y,预期 Z。” 这套方法之所以奏效,是因为被测系统是可复现的——相同的输入,相同的输出,相同的 Bug,次次如此。

如果针对 AI 功能运行完全相同的仪式,你最终会得到 200 张工单,其中 180 张会因为“符合预期的随机波动”而被关闭,同时还会漏掉那 20 张预示着真正的群体性回归(cohort regression)的工单。这种形式不仅陈旧,而且完全错位了。针对基于 LLM 的功能进行 Bug Bash 并不是一场捕捉缺陷的会议。它是一场针对概率分布的抽样练习,如果团队像运行确定性测试那样运行它,就是在收集噪声并将其视为信号。

这篇文章讨论的是如何为随机系统重新设计 Bug Bash——包括流程形式、参与者、分级准则以及什么才算“完成”等方面需要做出哪些改变。

为什么沿用的模式会失效

传统的 Bug Bash 植入了三个假设,而 AI 功能打破了所有这些假设。

第一个假设是可复现性。在经典的 QA 中,“我点击了按钮,它崩溃了”就是一个完整的报告。但在 AI 功能中,同样的提示词(prompt)在连续五次运行中可能会返回五个不同的答案,其中一个可能错得离谱。单次观察只是统计噪声。没有复现次数的 Bug 报告不是真正的报告——它只是一个轶事。

第二个假设是故障模式是结构性的。按钮不渲染、表单无法提交、API 返回 500 错误。这些都是类别故障:要么存在,要么不存在。而 AI 功能的失效是沿着质量梯度分布的。按钮渲染了,答案只是对特定行业的细分用户来说有细微错误。或者答案是正确的,但其语气不对,以至于损害了信任。二元的“坏了/没坏”标准无法代表这些故障,因此它们要么被归类为“轻微”,要么根本不被记录。

第三个假设是工程师能识别故障。在确定性系统中,500 错误对每个人来说都一样。但在领域专业化的 AI 功能中——例如法律合同审查、医疗摘要生成、针对特定技术栈的代码重构——真正关键的故障是领域准确性故障。阅读临床笔记摘要的工程师无法判断“术后第三天”是否被错误地分类为“术后第二天”。但律师可以。这些故障对于你邀请的人来说是不可见的。

将这三个因素叠加在一起,这种沿用的形式就变得不仅没用,反而有害。它会产生排山倒海般不可复现、分类错误、流于表面的报告,淹没那些真正预示着可利用模式的少数关键信号。更糟糕的是,它给了团队一种虚假的信心:“我们做过 Bug Bash 了,发现了问题,发布吧。”

重塑目标:从发现缺陷到分布映射

必须转变的观念是:AI 功能的 Bug Bash 不是在寻找缺陷,而是在为一个注定会出现故障的系统绘制故障分布图。你不是在问“它坏了吗?”,而是在问“它在哪里失效、频率如何、以及针对哪一类用户?”

这种重塑改变了下游的一切。你不再希望每个参与者都反复测试同一个黄金路径。你希望他们分散在输入空间中——不同的用户群体、不同的任务类型、以及探测模型能力不同维度的不同输入。每一次会话都是一次抽样过程;每一张工单都是一个样本,而不是一个定论。

具体来说,在 Bug Bash 开始之前,组织者应该预先定义群体网格(cohort grid):垂直行业、账户层级、语言、任务类型、新手与高级用户、短输入与长输入。每个参与者负责一个单元格。如果你有 8 个人和 4 个群体,每 2 个人负责一个群体的抽样。如果你有 12 个人和 6 个群体,每个单元格 2 人,并进行刻意的重叠,以便你可以对比同一分片下的独立样本。

这不是微小的重组。它改变了你邀请的对象、你向他们简述的内容、你要求他们提交的内容,以及你随后的分级处理方式。

对抗性输入优于黄金路径输入

另一个转变是对抗性的。传统的 Bug Bash 演练的是理想路径(happy path)——即产品经理希望在周五演示的流程。对于确定性系统,这是合理的;如果理想路径可行,特殊的输入大概率也行,因为底层逻辑是一样的。

对于 AI 来说,理想路径几乎无法提供任何信息。模型在那些看起来像产品演示的输入上进行了过度训练。能够区分功能是鲁棒还是脆弱的,是那些演示中永远不会出现的提示词:拼写错误、混合语言、半截句子、刻意误导的框架、提示词注入尝试、与系统提示词冲突的输入、处于 Token 限制边界的输入,以及用户实际生产环境中混乱的格式,而非评估套件中使用的合成干净格式。

红队测试(Red-teaming)的研究已经印证了这一点。手动对抗性测试擅长发现自动化套件遗漏的细微边缘情况,尤其是故障在多轮中逐渐积累的多轮对话攻击。最近的研究表明,通过角色扮演伪装、甚至在基准数据集中从未出现过的押韵诗行混淆等技术,攻击成功率已攀升至 80% 以上。你的 Bug Bash 需要引导出这种能量。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 10 分钟

生产分布差距:为什么内部测试人员找不到用户遇到的Bug

为什么 AI 系统通过了内部测试却在生产中崩溃——开发/预发布环境工作负载与真实用户流量之间的系统性错配,以及能够弥合这一差距的监控模式。

insider
ai-engineering
阅读需 10 分钟

AI 的测试金字塔倒置:为什么单元测试是 LLM 功能的错误投资

经典测试金字塔在 LLM 功能上失效的原因、提示词级单元测试为何带来虚假信心,以及与 AI 故障实际分布相匹配的测试分配策略。

insider
ai-engineering
阅读需 8 分钟

你在廉价模型上测试,却在昂贵模型上部署

在廉价模型上运行 CI 和评估,而生产环境却使用尖端模型,这在最关键的地方破坏了开发与生产环境的一致性。本文将探讨为什么层级差距会使你的评估门控失效,以及缩小这一差距的预算计算方法。

insider
llm
阅读需 9 分钟

Tokenizer 税:除了英语,你的 AI 功能在所有其他语言中成本更高且表现更差

同一个 AI 功能,在日语或阿拉伯语中的服务成本比英语高出 2-3 倍,且质量明显较差——然而大多数团队在进行全球发布时仅使用单一的英语评估套件。本文探讨 Token 肥沃度如何驱动各地区的成本、上下文和准确性,以及在全球发布前需要衡量哪些指标。

insider
llm
阅读需 10 分钟

被你的模型视为“约束性判例”的 Few-Shot 示例

Few-shot 示例并非中立的演示 —— 它们是“判例法”。模型会通过表面 Token 绑定到最接近的示例,并继承其约束,从而输出评估套件无法察觉的、充满自信的错误答案。

insider
llm