来源说明:本文依据 Awesome QA Skills 的 AI Agent Testing Prompt 和 Skill 整理。重复试验示例、质量循环、图示和 FAQ 是帮助读者应用原要求的编辑性展开;可靠性结论仍须依据项目重复方案和实际轨迹证据。
AI 智能体测试既看任务有没有完成,也要核对它是怎么完成的。每个测试都需要任务成功 oracle(预先定义、用来判断目标是否达成的标准)和运行轨迹(按 run/step ID 记录每一步操作和工具交互)。看起来合理的答案仍可能掩盖步骤跳过、越权调用、记忆污染或错误的停止决策。
新手入门:从一个受限任务开始
- 先选一项范围清楚的多步任务,写明成功标准、允许使用的工具和资源、禁止的副作用与停止条件。
- 审计输入的完整性、可信度、时效性和可比性:记录哪些已确认、缺失、冲突、可能过时或超出范围,哪些只是暂时假设;注明来源、版本和证据状态,也记录环境、时间预算及不可触碰的边界。
- 固定样本 ID,并记录模型、Prompt、工具、数据与环境版本;涉及敏感数据时先脱敏或使用隔离环境。
- 运行时保留 run/step ID、工具参数、授权决定、响应和状态变化;没有轨迹时不要推断执行过程。
- 分别判断最终结果、过程约束和证据完整性。单次运行只报告这次观察,不据此判断可靠性。
定义任务目标和允许路径
每个样本记录任务 ID、成功 oracle、允许使用的工具与资源、禁止的副作用和停止条件,再把最终结果与 run/step 轨迹对照。
| 维度 | 观察什么 | 最终答案可能掩盖的问题 |
|---|---|---|
| 任务结果 | 是否满足预先定义的成功 oracle | 结果看起来完整,但不满足真正目标 |
| 规划 | 步骤顺序、依赖关系和新信息到来后的调整 | 跳过前置步骤,或无依据地改变计划 |
| 跨步骤一致性 | 约束、状态和用户目标是否在多步间保持一致 | 后续步骤丢失早先限制或使用过时状态 |
| 工具使用 | 工具选择、参数、权限和结果解释 | 通过不安全或无关的调用得到表面正确的答案 |
| 记忆 | 哪些状态会保留、重置或泄漏 | 上一用户或上一任务的数据影响当前运行 |
| 恢复 | 步骤失败后的重试、降级和人工交接 | 重试产生重复副作用(幂等性问题),或阻塞后仍继续执行 |
| 终止 | 成功、目标失败、预算耗尽、取消、安全阻断或环境错误 | 把缺少终止证据误当成任务完成 |
| 成本与时延 | 实际消耗与项目定义的预算或目标 | 只看答复质量,忽略运行成本或超时 |
工具权限要与安全边界一起核对。项目没有给出成本、时延或通过门槛时,将它们列为待确认,不自行设定数值。
对可能波动的行为重复试验
固定样本 ID,记录模型、Prompt、工具、数据和环境版本,并按项目提供的重复方案执行,不自行编造样本门槛。按样本报告通过/失败次数,并标出偶发失败。一次成功只证明观察到一次成功,不证明可靠性。
例如,一个多步客服任务可能给出正确的最终答复,但轨迹显示它查询了未获授权的数据,那么过程检查仍应失败。任务结果正确性和过程合规要分开判定;任一不满足,都可能导致整体不能通过。保留 run 和 step ID,方便复核决策过程。
可以把一次多步任务按同一 sample ID 记录:预先写下成功 oracle、允许的工具与资源、禁止的副作用和终止条件;运行时保存模型、Prompt、工具、数据与环境版本,再把每个 step 的输入、调用参数、授权决定、工具响应和状态变化关联到 run ID。下面的记录只用于说明:
| 观察结果 | 解释 |
|---|---|
| 最终答复符合 oracle,且每一步都满足该用例定义的过程断言 | 这次运行满足该用例的结果和过程条件 |
| 最终答复正确,但轨迹包含未获授权的数据查询 | 过程失败,不能用答案正确抵消 |
| 最终答复看似正确,但关键 step 或终止记录缺失 | 证据不足,无法判断完整执行路径 |
这张表说明的是单次运行结果;重复试验应按项目方案执行并逐次报告,再判断表现是否稳定。
每个用例都要有 oracle 和证据
先建立与输入相关的风险或失败模型,再将高优先级问题转成候选用例。每个用例写明前置条件、动作或刺激、预期行为及所需证据。把静态分析、设计用 fixture 和真实运行分开。如果项目没有给出成功标准、权限或停止门槛,应列为待确认问题,不要自造规则。
按项目风险规则使用 P0/P1/P2/P3 或等价分级,并说明优先级依据。每个结论关联来源、证据状态和验证方法;高风险项还应列出责任角色或下一步。高影响、高概率或难以探测的失败路径应优先设计,但不能把优先级当成已验证的严重度。
交付物可以包括能力矩阵、任务集、轨迹断言、安全与恢复场景、评分规则、观察指标、阻塞项和下一步。确认事实、当前假设和未知项都要保留。这个 Skill 帮助组织验证工作,不会为 Agent 或发布背书。
工具契约和副作用的细项见智能体工具调用测试:https://inaodeng.com/zh-cn/qaskills/agent-tool-testing/;产品内置 AI 功能见 AI 功能测试:https://inaodeng.com/zh-cn/qaskills/ai-feature-testing/;不可信指令与攻击路径见提示注入测试:https://inaodeng.com/zh-cn/qaskills/prompt-injection-testing/。
重点:把 Agent 测试纳入质量循环
每轮都保留同一组样本和原始轨迹,用证据判断测试方法或系统改动是否有效:
- 固定基线: 保存任务、成功 oracle、允许工具、禁止副作用、停止条件、模型与环境版本。
- 按计划运行: 使用项目指定的重复方案;没有方案时先标待确认,不自设样本数量。
- 联合复核结果与轨迹: 将最终答案与每个 step 的输入、调用、授权、响应和状态变化关联起来。
- 分类失败和缺口: 区分任务规则、Prompt、工具契约、记忆、恢复、环境波动和证据缺失。
- 修订一个有依据的因素: 记录变更版本与理由,保留原始失败样本。
- 回归原样本并加入新样本: 报告每次结果和偶发失败;没有运行的项目仍标记未执行。
最佳实践:让结果和过程都可复核
- 用来源明确的成功 oracle 评估任务结果;将过程合规、权限和副作用单独判定。
- 先覆盖高影响、高概率或难探测的风险,再逐步扩展能力和环境组合。
- 保存全部 run/step 证据和版本信息,不挑选单次成功作为可靠性结论。
- 涉及生产、安全或隐私时使用最小权限、脱敏数据、mock 或隔离环境。
- 把停止、升级、回滚和人工接管条件写进场景;缺少条件时先标待确认。
安装与调用
安装 Skill:
npx skills add https://github.com/naodeng/awesome-qa-skills/tree/main/skills/zh/testing-types/ai-agent-testing
提供任务目标、成功 oracle、允许的工具和资源、禁止的副作用、停止条件,以及脱敏的 run/step 轨迹。先从一个边界清楚的样本开始:
请用 ai-agent-testing 评审下面这个多步任务。任务目标与成功 oracle:[…]
允许使用的工具和资源:[…]
禁止的副作用与停止条件:[…]
已有的脱敏 run/step 轨迹:[…]
请分别判断结果是否符合 oracle、过程是否满足约束;列出缺失证据和待确认项,不要自行补造通过阈值,也不要把设计用例说成已执行测试。
常见问题
最终答案正确,就算这个用例通过吗? 不一定。还要检查轨迹是否满足用例中的权限、工具、步骤和停止条件;如果关键轨迹缺失,应标为证据不足。
要重复运行多少次? 按项目已经定义的重复方案执行。若方案或稳定性门槛未提供,先列为待确认,不要自行设定次数或通过阈值。
没有 run/step 轨迹,能判断 Agent 过程合规吗? 不能。可以评审任务设计或现有输出,但过程判断应标记为证据不足,并说明最小需要补充的轨迹。
参考
- AI 智能体测试 Prompt: https://github.com/naodeng/awesome-qa-skills/blob/main/skills/zh/testing-types/ai-agent-testing/prompts/ai-agent-testing.md
- AI 智能体测试 Skill: https://github.com/naodeng/awesome-qa-skills/blob/main/skills/zh/testing-types/ai-agent-testing/SKILL.md
- AI 智能体测试源目录:https://github.com/naodeng/awesome-qa-skills/tree/main/skills/zh/testing-types/ai-agent-testing
- 本站 AI 智能体测试目录:https://inaodeng.com/zh-cn/qaskills/ai-agent-testing/