上个月接了个活,测一个新上线的 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 测试等内容,侧重测试实践、工具应用与工程经验整理。