AI应用开发Technical Deep Dive

AI 应用测试:先把契约、数据集和回归门槛串起来,再谈测输出

发布时间2026/03/06
分类AI应用开发
预计阅读10 分钟
作者吴长龙
*

AI 应用测试最容易被写成几条 Prompt 回归和人工抽查建议,但真正决定系统能否稳定迭代的,是接口契约、样本集、自动判定、离线评估和线上回归门槛是否形成闭环。

01.AI 应用测试最容易失效的地方,是把它当成“字符串断言”

很多关于 AI 测试的文章,最常见的例子是:

javascript snippetjavascript
expect(response).toContain("关键词");

这种断言在极少数场景下有用,但对真实 AI 应用来说通常远远不够。因为你真正想验证的往往是:

  • 输出结构是否稳定
  • 检索或工具链是否走对了
  • 关键事实有没有被遗漏
  • 升级模型或 Prompt 后质量有没有回退

所以 AI 应用测试更适合被理解成“质量回归系统”,而不是一堆零散的输出断言。

02.先区分哪些东西是确定的,哪些东西是概率性的

测试 AI 应用时,最重要的一步往往不是马上去测模型,而是先把系统拆开看:

  • 确定性部件
  • 概率性部件
  • 高风险场景
  • 历史坏例子

例如下面这些通常更适合做确定性测试:

  • schema 校验
  • 路由规则
  • 权限判断
  • 检索过滤条件
  • 工具参数构造

而这些更适合走评估和数据集回归:

  • 自然语言答案质量
  • 检索召回是否足够
  • 总体任务是否真正完成

拆分清楚之后,测试体系才会稳定。

03.一条稳定的 AI 测试链路,通常由四层组成

1. 契约与确定性测试层

这一层负责托住最容易回归、也最应该确定的部分:

  • API 输入输出 schema
  • 工具参数
  • 错误处理
  • 权限和路由逻辑

这类测试应该跑得快、定位准,并且优先保证全绿。

2. 集成与任务链路层

这一层更关注真实应用有没有把链路跑通:

  • 检索是否命中正确租户或知识域
  • 工具是否被正确调用
  • 文件处理链是否能走完
  • 同步任务与后台任务是否都能恢复

这里的目标不是逐字对答案,而是验证系统行为是否符合预期。

3. 离线评估与样本集层

AI 应用最需要长期积累的资产,往往不是 prompt,而是样本集:

  • 典型问题
  • 高风险边界问题
  • 历史事故
  • 用户差评样本

这些样本可以用于:

  • 评估不同版本
  • 比较模型或 Prompt 改动
  • 检查关键场景是否回退

4. 线上回归与回流层

真正成熟的 AI 测试体系,一定会把线上问题回流进离线数据集:

  • 差评样本
  • 人工接管样本
  • 错误输出
  • 缓存 miss 后的坏结果

没有这层回流,测试集很快就会和真实流量脱节。

04.模型输出要尽量先变成结构化目标,再去评估质量

很多应用测试困难,不是因为 AI 天生不可测,而是因为团队把所有东西都留在自由文本里。

更稳的方式通常是:

  • 能结构化的先结构化
  • 能拆成步骤的先拆成步骤
  • 能把判断条件外置的先外置

例如:

python snippetpython
from typing import Literal
from pydantic import BaseModel, Field


class ReviewResult(BaseModel):
    decision: Literal["approve", "needs_changes", "handoff"]
    reasons: list[str] = Field(default_factory=list)
    missing_fields: list[str] = Field(default_factory=list)

一旦目标输出被约束成这种形式,测试就可以分别检查:

  • schema 是否稳定
  • 决策是否落在允许集合里
  • 原因和缺失项是否覆盖关键要点

这会比直接比较整段自然语言稳很多。

05.样本集不是越大越好,而是越贴近坏例子越有价值

很多团队做测试时,容易先收集一堆“正常问题”,结果模型升级后看起来都能过,但真正上线还是翻车。

更有价值的样本通常包括:

  • 容易误解的输入
  • 缺资料的任务
  • 冲突信息
  • 提示注入和越权诱导
  • 历史事故复盘样本

这些样本虽然不多,但更能代表真实风险。

06.评估不要只关心答案对不对,还要关心行为有没有越界

AI 应用测试的评估,更应该围绕这些问题:

  • 输出是否满足结构契约
  • 检索和工具链是否走对了
  • 是否在不该执行时主动执行了动作
  • 是否在缺信息时仍然硬答
  • 是否把坏例子成功挡在回归门槛外

这类行为型指标,通常比单纯“语义像不像对”更容易持续迭代。

07.线上测试和离线测试要用同一套语言描述风险

一个成熟的做法通常是让线下和线上都围绕相同维度记录问题,例如:

  • 事实错误
  • 结构错误
  • 越权动作
  • 检索失败
  • 任务未完成

这样无论问题来自:

  • 本地测试
  • 灰度发布
  • 用户投诉
  • 客服回放

都能更顺畅地回流到同一套回归框架里。

08.评估不要只看通过率,还要看门槛是否真的拦住风险

AI 应用测试的核心评估,更应该看:

  • 高风险数据集的通过率
  • 历史事故样本是否被稳定拦住
  • 模型升级后的回退幅度
  • 新增优化是否引入新的失败类型
  • 线上人工接管率是否下降

这些指标比“总通过率 95%”更有决策意义。

09.三个常见误区

1. 用几条关键词断言代替测试体系

这类测试通常脆弱、噪音高,而且很难反映真实任务完成度。

2. 只测 happy path,不测坏例子

AI 应用最容易出问题的,恰恰是那些边界和异常样本。

3. 线上问题不回流到样本集

没有回流,测试集就只会越来越像 demo,而不是越来越像生产。

10.总结

AI 应用测试真正可交付的价值,不是多写几条输出断言,而是把契约、样本、评估和回归门槛组织成同一套质量系统:

  • 先把确定性部件单独测稳
  • 让结构化输出和工具链有可验证契约
  • 用离线样本集承接真实风险
  • 把线上坏例子持续回流进回归门槛

只要这套闭环成立,AI 应用才更有机会稳定迭代,而不是每次升级都靠感觉验收。

11.参考资料