用传统方法测 AI Agent,我踩了半个月的坑

1 阅读5分钟

上个月接了个活,测一个新上线的 AI 客服 Agent。

打开对话框,输入“我想退订会员”,它回“好的,正在为您处理”。输入“我要投诉产品质量”,它回“已为您记录,客服将在 24 小时内联系”。

测了十几轮,我跟 leader 说:“我感觉我在跟它聊天,不是在测它。”

他问我:“有问题吗?”

我说:“好像没有,但又总觉得哪里不对。”

问题出在哪?传统测试看的是“输入 A → 输出 B”,确定的、可枚举的。但 AI 的失效方式完全不同——它可能最终回复对了,但中间尝试了越权操作、调用了不该调用的工具、绕了五步弯路才蒙对。用传统测试的眼光看,结果没问题;从 AI 质量的角度看,这是定时炸弹。

ASSERT 干了什么

微软 6 月开源的 ASSERT(Adaptive Spec-driven Scoring for Evaluation and Regression Testing),解决的就是这个问题。

一句话概括:你写的不是测试用例,是行为规范。ASSERT 把它变成可执行、可评分、可回归的测试。

微软官方博客里有一句话我印象很深:“智能体的失效方式往往难以察觉。它们可能偏离既定策略、在边缘场景中产生不安全的输出,或在生产环境中呈现出与测试阶段截然不同的行为。”

翻译一下:AI 的问题不是“功能对不对”,是“行为合不合规”。

它怎么跑

ASSERT 是一条固定流水线,四步:systematize → test_set → inference → judge。

第一步:把“一句话”变成“行为分类体系”

你给它一段自然语言描述,比如:

“这个文档研究 AI 不能向公司外部人员发送邮件,机密信息仅限 C-level 查阅。”

ASSERT 会把它拆成结构化的“许可行为”和“不许可行为”分类体系。这一步的关键在于:它把散落在需求文档、政策文件、系统提示里的模糊文字,变成了评估的核心输入,而不是背景参考。

第二步:生成分层测试用例

基于分类体系,自动生成正向用例(应该帮助的请求)、负向用例(应该拒绝的请求)、边缘用例(模糊地带的请求)。覆盖维度由你控制,比如用户类型、任务类型、工具可用性。

第三步:运行测试,记录完整轨迹

这是 ASSERT 和传统测试框架最大的区别。

传统测试只看“输入 → 输出”。ASSERT 看的是整个执行过程:Agent 调了哪些工具、做了什么决策、走过了什么路径。

为什么要记录轨迹?因为 AI 的失效往往不是“输出了错误答案”,而是“用了错误的方式得到正确答案”。

第四步:LLM当裁判

ASSERT 用大模型作为裁判,按照你在配置里定义的评分维度打分。每个判定输出三个东西:通过与否、违反了哪条规范、触发的具体回合或动作。

微软内部验证的数据是:LLM 判定器与人工审核的一致率在 80%–90%,人工标注者之间的一致率约为 90%。

几个我实际用下来觉得值得说的点

支持 OpenTelemetry 轨迹。如果你的 Agent 已经用 OTel 做了埋点,可以直接把已有的 trace 喂给 judge 阶段,不需要重新跑推理。命令是 assert-ai judge-traces。

内置预设库。ASSERT 自带 21 个行为预设和 10 个评判预设。比如 prompt_injection(对抗性输入)、tool_orchestration_errors(工具编排错误)、sycophancy(拍马屁倾向)都可以直接在配置里引用。

产物本地化。所有结果以 JSON/JSONL 存在本地 artifacts/ 目录下,方便 diff 和接入 CI。

框架无关。LangChain、CrewAI、OpenAI Agents SDK 都支持,不锁死某个平台。

一个必须说的坑

ASSERT 的官方文档明确提醒:生成的测试场景可能触发真实副作用——数据修改、外部消息发送、代码变更等。必须在隔离环境中运行,不要连生产系统。

另外,LLM 裁判的评分是“尽力而为”的。微软自己也说,不应将汇总评分视为最终结论,收集的失败案例和操作轨迹往往比分数本身更有价值。

最后

我测那个客服 Agent 的时候,最大的困惑是“不知道在测什么”。功能测试那套断言写不了——你没法 assertEquals(回复, "好的"),因为每次措辞都不一样。行为规范又散落在产品文档和系统提示里,没有一个统一的“测试依据”。

ASSERT 的思路是把“行为规范”变成测试的核心输入,而不是背景参考。这个方向是对的。

但它不是银弹。LLM 裁判会有偏差,生成的场景可能触发副作用,高风险结论仍然需要人工复核。

不过话说回来,Gartner 分析师说过一个数据:99% 的组织在将 AI 智能体投入生产之前根本不进行任何评估。

不是不想测,是不知道怎么测。

ASSERT 至少给了一个可落地的起点。

本文部分内容参考了霍格沃兹测试开发学社整理的相关技术资料,主要涉及软件测试、自动化测试、测试开发及 AI 测试等内容,侧重测试实践、工具应用与工程经验整理。