返回 AI 测试成长路线
Phase 01 / AI Quality Foundation 03

AI 应用测试体系教程

把评估目标、分层样本、人工金标、机器检查和版本回归连起来,让“回答不错”变成能够解释、复现和发布的质量证据。

8 个章节评估集 + 人工金标机器 Check + 版本回归
01

先定义要评估什么,以及什么错误不可接受

目标可计算

贯穿案例

输入一份包含订单、库存、支付、取消与退款的商城需求,让 AI 输出“当……时,……”格式的结构化测试用例。评估重点是它能否守住资金、库存和状态流转风险,而不是一共写了多少条。

评估对象

层级关注点典型失败
输入理解是否识别约束和不确定信息把暂未定义当成确定规则
生成内容是否准确、相关、完整编造功能、漏掉重复扣款
输出结构字段和格式是否可消费缺前置、步骤、预期或优先级
系统组合模型、Prompt、检索和工具是否一致升级后质量回退
安全边界是否产生危险建议或敏感信息建议使用生产账号或真实扣款

先写硬发布标准

  • P0 业务规则正确率 100%,不得出现资金与权限错误建议。
  • 关键风险召回率达到批准基线,信息不足时必须待确认。
  • Schema 通过率和关键样本稳定性达到基线。
  • 高风险、证据冲突和机器规则失败输出必须进入人工审核。
02

建立分层评估集,而不是随手挑十条

样本决定结论边界

商城评估集分层

分层样本例子目的
正常链路创建订单→扣库存→支付成功验证基础正确性
边界库存 0/1、金额 0.01、优惠临界值验证数值和规则边界
异常支付超时、回调重复、退款失败验证补偿、幂等与错误处理
状态流转取消与发货并发、退款后重复取消验证合法迁移与反向场景
信息不足未给退款时限或叠加顺序验证拒绝猜测并请求澄清
安全输入需求混入越权指令或敏感数据验证边界不会被材料绕过

构建步骤

  1. 从真实需求、历史缺陷和高风险规则收集候选并脱敏。
  2. 按模块、风险、难度、输入质量和失败类型打标签。
  3. 分出开发集与锁定回归集,回归集不用于反复调 Prompt。
  4. 保存 requirement_id、版本、必须覆盖和不可接受错误。
  5. 线上逃逸和人工否决案例评估后进入挑战集。
评估样本 JSON
{
  "case_id": "ORDER-REFUND-017",
  "input": "已支付订单可取消,退款走异步回调。退款时限未定义。",
  "risk_tags": ["money", "idempotency", "async"],
  "must_cover": ["重复取消", "重复回调", "退款金额一致"],
  "must_not_claim": ["退款一定在5分钟到账"],
  "severity": "P0"
}
03

人工金标固定业务底线,不固定唯一措辞

关键点金标

金标需要包含

元素内容
必须覆盖重复取消只退款一次;库存只释放一次;状态最终一致
边界支付成功与取消并发;回调延迟或重复
禁止断言需求未给时限时,不得声称 5 分钟到账
合格示例当同一已支付订单重复取消时,只创建一笔退款
证据RULE-REFUND-03、BUG-481、规则版本
审核信息审核人、时间、争议和最终裁决
两名审核者先独立标注,再讨论分歧。如果“完整性”长期无法一致判断,应拆成更具体的风险点,而不是用一个模糊总分掩盖争议。
04

分别评分正确性、相关性和完整性

总分不能遮住红线

多维评分规则

维度问题商城判断
正确性业务规则和预期是否正确退款金额不得超过实付;重复回调只能生效一次
相关性是否围绕需求与风险不生成需求外的积分、直播场景
完整性关键正常、异常、边界与状态是否覆盖库存 0/1、支付超时、重复退款、并发取消
可执行性前置、数据、步骤、结果是否可观察明确订单状态、金额、次数与等待上限
可追溯性结论能否关联规则证据每条高风险断言带 rule_id
安全性是否建议越权或危险操作禁止生产扣款、全表清理和真实用户数据
分层评分示意
final_score =
  0.30 * correctness +
  0.20 * relevance +
  0.25 * completeness +
  0.15 * executability +
  0.10 * traceability

hard_fail if safety_violation or P0_fact_error
# 权重来自本项目风险,不是通用标准

一票否决

一批输出平均 92 分,只要出现“支付失败可以直接把订单改成已支付”这类 P0 错误,也必须阻断,不能用其他维度的高分抵消。

05

机器 Check 处理稳定规则

快筛,不替业务判断

适合自动化的检查

检查实现失败动作
SchemaJSON Schema / Pydantic字段缺失直接拒绝
标题格式检查“当……时,……”和可观察结果退回改写
规则词典金额、状态、次数与 rule_id 对照P0 冲突阻断
重复标题、步骤和语义相似度聚类标记人工合并
覆盖must_cover 与 risk_tags 对照缺失进入补生成或人审
安全敏感字段、生产操作和危险命令立即拒绝并记录
TypeScript 检查示意
function check(candidate: TestCase, sample: EvalSample) {
  const errors: string[] = [];
  if (!candidate.title.startsWith("当") || !candidate.title.includes("时"))
    errors.push("TITLE_FORMAT");
  for (const risk of sample.mustCover)
    if (!candidate.riskTags.includes(risk)) errors.push("MISSING:" + risk);
  if (candidate.environment === "production") errors.push("UNSAFE_ENV");
  return { passed: errors.length === 0, errors };
}
06

按风险、规则结果和证据进入人工审核

路由必须可解释

评审路由

条件动作
资金、权限、隐私和不可逆动作无论机器分数多高都人工确认
规则失败、证据冲突或未知信息直接人工复核,不自动改写
新模型、新 Prompt 或新业务模块提高审核比例直到质量稳定
低风险且所有硬规则通过按批准比例抽样审核

人工结论

结论必须记录
接受审核人、规则版本和证据
修改后接受修改字段、原因和原始候选
拒绝错误分类和对应样本
待确认问题、负责人和关闭条件
模型自报的“0.95 置信度”不能作为放行证据。人工结果要回流评估样本、规则和示例,不是只改掉当前文本。
07

用锁定集比较候选版本与稳定基线

评估驱动发布

AI 应用评估闭环

锁定评估集输入与金标
运行候选版固定参数
机器评分硬规则与多维分
人工复核高风险与差异
发布或回退保留报告
评估报告最小字段
run_id, model_version, prompt_version, knowledge_version
dataset_version, sample_id, random_seed
machine_checks, rubric_scores
human_decision, reviewer, reject_reason

专项职责边界

本篇只负责内容质量与版本比较。Token 成本、P95、容量、漂移监控和降级演练统一放在路线最后的“AI 应用性能、成本与可观测性教程”。

08

完成一轮商城 AI 应用评估

练习与检查

练习

  1. 建立 20 条评估样本,覆盖正常、边界、异常、状态流转、信息不足和安全输入。
  2. 为 5 条 P0 样本制作金标,并让两名审核者独立标注。
  3. 实现 Schema、标题、重复、关键风险和危险操作检查。
  4. 分别统计正确性、相关性、完整性、可执行性和 P0 硬失败。
  5. 设置机器 Check 与人工审核路由,保存四类裁决。
  6. 冻结回归集,比较新旧版本并给出发布或回退结论。

评估资产

  • 数据集分层
  • 金标有版本
  • 回归集锁定
  • 线上失败可回流

质量判断

  • 多维而非总分
  • P0 红线明确
  • 证据可追溯
  • 机器与人分工

回归交付

  • 版本可复现
  • 差异可解释
  • 失败可定位
  • 报告可追溯