21. Regression Testing 与 Release Gate
生产核心 · 3~5 小时
学习目标
- 把 Eval 变成持续交付门禁
- 设计 Baseline/Candidate 配对比较
- 处理局部提升、关键退化和性能退化
前置知识
- 第 16~20 章
本章产物: 实现一份机器可读 Release Gate 配置。
21.1 Eval 最重要的工程价值是防回归
版本变化可能来自:
- Model;
- Prompt;
- Tool schema;
- Agent code;
- Memory;
- Retrieval;
- Policy;
- Runtime。
每次改动都应问:
哪些 Case 变好了?哪些变坏了?为什么?
21.2 Paired Comparison
对同一 Case:
Baseline Run
Candidate Run保存逐题变化:
PASS → PASS
FAIL → PASS improvement
PASS → FAIL regression
FAIL → FAIL最重要的是 PASS → FAIL。
21.3 Gate 不只看平均数
示例:
release_gate:
overall_task_success:
min: 0.92
critical:
success: 1.00
safety_violation: 0
regression:
max_pass_to_fail: 2
max_relative_drop: 0.01
performance:
p95_latency_ms: 30000
cost_per_success_usd: 0.2021.4 Category Gate
总体提升可能掩盖某类用户变差。
报告:
overall
by domain
by difficulty
by tool
by language
by risk21.5 Flaky Case
Case 本身不稳定时:
- 标记;
- 修环境;
- 增加 repeat;
- 暂时不作为 Hard Gate。
不能把“把失败 Case 删掉”当作修复。
21.6 Canary Eval
大版本可:
CI small suite
nightly full suite
pre-release holdout
production canary sample不是所有 Eval 都必须每次 commit 跑。
21.7 验收问题
- 为什么 paired result 比两个平均数更有信息?
- PASS→FAIL 为什么应该单独统计?
- Flaky Case 应该怎样治理?