本文总结 A/B 测试从 0 到 1 再到 N 的最佳实践,涵盖流程规范、实验设计、分析方法、组织文化四个维度。每一条经验都来自工业界大规模实践验证。
每一个实验必须经过以下阶段,不允许跳过:
1. 假设 2. 设计 3. 评审 4. 运行 5. 决策
提出 实验 实验 监控 分析
6. 全量上线 & 持续跟踪
每个阶段的交付物:
| 阶段 | 必须交付 | 格式要求 |
|---|---|---|
| 假设提出 | 实验假设卡片 | "因为 [观察],我们相信 [策略] 会带来 [预期效果],我们通过 [指标] 来衡量" |
| 实验设计 | 实验设计方案 | 含 OEC、MDE、样本量计算、护栏指标、预计时长 |
| 实验评审 | 评审通过记录 | 数据科学 + 业务方 + 工程方的三方确认 |
| 运行监控 | SRM 检查、数据质量报告 | SRM 每 30 分钟自动检测 |
| 决策分析 | 正式实验报告 | 决策性分析(预注册指标)+ 探索性分析 |
| 全量上线 | 上线后验证报告 | 全量 1-2 周后的指标对比 |
坏的实验假设:
"把按钮改成红色"
好的实验假设:
"因为用户在当前页面上的 CTA 点击率低于预期(仅 2%),我们相信将按钮颜色从灰色改为红色(提高视觉凸显度)可以将 CTA 点击率提升 15% 以上。我们通过 CTA 点击率来衡量效果,同时用页面跳出率作为护栏指标。"
强制要求:
实验上线前的强制检查清单:
假设是否清晰?(有"因为...我们相信..."的完整表述)
OEC 是否与长期业务目标对齐?
MDE 是否有业务 ROI 依据?(不是拍脑袋)
样本量计算是否正确?(、、、 都有明确来源)
护栏指标是否配置?(反向护栏 + 正向护栏)
分流比例是否合理?(是否符合 SRM 检验的预期)
是否有与其他运行中实验的冲突风险?
预计运行时长是否 1 个完整业务周期(至少 1 周)?
实验结束后是否有明确的成功/失败决策标准?
是否已经注册到实验知识库?
常见错误:把 MDE 设得极小(如 0.1%),导致需要海量样本,实验永远跑不完。
正确的 MDE 设定:
$$MDE = f(商业价值, 流量成本, 策略维护成本)$$
计算方法:
经验值参考:
| 实验类型 | 典型 MDE 范围 |
|---|---|
| UI 微调(按钮颜色、文案) | 2-5% |
| 推荐算法优化 | 1-3% |
| 定价策略 | 3-10% |
| 新功能上线 | 5-15% |
| 运营活动 | 5-20% |
最短时间:不少于 1 个完整的用户行为周期(通常 1 周,至少覆盖工作日 + 周末)。
什么时候需要更长:
经验法则:
实验流量 = 最小所需样本量 / 每日可用流量
实际分配流量 = 计算流量 1.2~1.5(缓冲)
缓冲原因:
流量切分原则:
| 原则 | 说明 |
|---|---|
| 保持控制组的稳定性 | 对比的基准必须是"已知状态",不能同时修改对照组 |
| 避免过度控制组 | 不要因为怕影响用户体验就给控制组也"优化一下"这是最隐蔽的错误 |
| 多臂对比时慎防稀释 | 如果对照组分 50% 流量,3 个实验组各分 16.7%,实验组的样本量不足 |
| 对照组的"零状态"定义 | 明确对照组到底是什么:是"不做任何事"?还是"当前默认策略"? |
分析开始
1. SRM 检验 第一步!不通过不继续
2. 数据质量检查 异常值、缺失率、bot 过滤
3. 效应量估计 先看效应量(CUPED 修正后)
+ 置信区间
4. 显著性检验 p 值 + 多重检验校正
5. 护栏指标检查 反向护栏必须不显著恶化
6. 时间趋势分析 效应是否随时间衰减/增长?
7. HTE 探索 谁受益?谁受损?
做出决策
关键原则:步骤 1-6 是决策性分析,步骤 7 是探索性分析。决策不能依赖探索性分析的结果。
| 错误 | 为什么错 | 正确做法 |
|---|---|---|
| 排除实验期间未活跃的用户 | 破坏了随机性(ITT 原则),活跃本身可能被策略影响 | 分析全部被分配到的用户 |
| 只报告相对变化不报告绝对变化 | 相对变化夸张("提升了 100%!"从 0.01% 到 0.02%) | 同时报告绝对变化和相对变化 |
| 用"日均值"掩盖周期性 | 周末和工作日的用户行为完全不同 | 至少按周对齐数据,或控制星期固定效应 |
| 对留存类指标用独立样本 t 检验 | 留存率涉及时间序列依赖 | 使用配对 t 检验或按天聚合后的 N-of-1 检验 |
| 实验组和对照组分析时间窗口不同 | 破坏了"同时段对比"的前提 | 严格控制时间窗口一致 |
## 实验报告:{实验名称}
### 基本信息
- 实验 ID:xxx
- 实验时长:YYYY-MM-DD ~ YYYY-MM-DD(共 N 天)
- 分流比例:Control 50% / Treatment 50%
- 实际样本量:Control N1, Treatment N2
### 数据质量
- SRM 检验: = x.xx, p = x.xxx /
- 数据缺失率:x.x%(正常范围)
- 异常值处理:P99 Winsorization
### 决策性分析(预注册指标)
| 指标 | Control | Treatment | 效应量 | 相对变化 | 95% CI | p-value |
|------|---------|-----------|--------|----------|--------|---------|
| OEC | x.xx | x.xx | +x.xx% | +x.x% | [a, b] | p=0.0xx |
| 正向护栏1 | x.xx | x.xx | ... | ... | ... | ... |
| 反向护栏1 | x.xx | x.xx | ... | ... | ... | ... |
### 时间趋势
(效应量随时间变化的折线图)
### 结论
- 是否达到统计显著:是/否
- 效应量是否 MDE:是/否
- 护栏指标是否正常:是/否
- 决策建议:上线 / 迭代 / 放弃
### 探索性分析
(分组 HTE、用户反馈等,仅供假设生成)
1. 分流能力
一致性哈希分流
分层正交架构
动态流量调节
灰度放量控制
2. 指标能力
统一指标字典
指标血缘追踪
实时 + 离线计算
复合指标配置
3. 分析能力
CUPED 自动应用
多重检验校正
序贯检验
自动报告生成
4. 监控能力
SRM 自动检测 + 告警
指标异常检测
AA 测试定期校验
数据管道监控
5. 管理能力
实验生命周期管理
审批流
权限控制
实验知识库
用户行为
埋点上报 实时流计算 实验指标实时看板
(用户ID + (Flink/Kafka) (效应量趋势)
实验ID +
指标值)
离线仓库 日级指标计算 正式实验报告
(Hive/ (Spark SQL) (统计检验 + CI)
ClickHouse)
关键规范:
| 行动 | 具体做法 |
|---|---|
| 高层背书 | CTO/VP 公开承诺:关键产品决策必须有实验支撑 |
| 实验回顾会 | 每周/双周一次实验结论分享会,突出"失败的实验也有巨大价值" |
| 实验认证体系 | 要求产品经理和工程师通过基础 A/B 测试培训考核 |
| 数据民主化 | 实验分析能力向所有产品经理/运营开放(自助分析而非依赖数据团队) |
| 实验奖杯 | 设立"最佳失败实验奖"嘉奖那些推翻直觉、产生重要认知的"失败" |
管理层需要理解的核心数据:
所有相关角色都需要理解的关键概念:
民主化(让更多人能做实验):
治理(确保实验质量):
好的实验平台应该追踪以下指标来衡量平台的健康度:
| 指标 | 含义 | 健康基线 |
|---|---|---|
| 实验活跃数 | 同时运行的实验数 | 稳步增长 |
| 实验成功率 | 显著正向的实验占比 | ~10-33% |
| SRM 异常率 | SRM 检测到问题的实验占比 | < 1% |
| 实验平均时长 | 从启动到决策的平均时间 | < 21 天 |
| 平台可用率 | 分流服务 SLA | > 99.9% |
| 实验吞吐量 | 每月完成的实验数 | 持续提升 |
来自 Ron Kohavi(Microsoft)的"Seven Rules of Thumb for Web Site Experimenters":
| 编号 | 经验 |
|---|---|
| 1 | 如果没有实验验证,你上线的新功能有 2/3 的概率是无效甚至有害的 |
| 2 | SRM 不通过就不要往下分析这是铁律 |
| 3 | 实验前就确定主指标和决策标准,不要看完整数据再选 |
| 4 | 实验时长至少覆盖一个完整业务周期(最少一周) |
| 5 | 用置信区间做决策,而不是 p 值 |
| 6 | CUPED 是免费午餐能用就用 |
| 7 | 把"不做实验直接上线"变成组织中不可接受的行为 |
| 8 | 失败的实验不是失败没有形成可归档结论的才是失败 |
| 9 | 一次实验回答一个问题不要把多个改动塞进同一个实验 |
| 10 | 实验平台的速度决定了组织的实验速度把实验配置从 3 天缩短到 3 小时 |
## 实验假设卡片
### 背景
- 观察到的现象/数据:
- 业务影响:
### 假设
因为我们观察到 [具体现象],
我们相信 [具体策略] 会带来 [预期方向的效果],
我们通过 [具体指标] 来衡量这一效果。
### 实验设计
- 实验单元:用户 ID
- OEC(核心评估指标):
- MDE(最小可检测效应):
- 预设 = 0.05,1- = 0.80
- 所需最小样本量:每组 N
- 预计运行时长:D 天
- 分流比例:Control X% / Treatment Y%
### 护栏指标
- 反向护栏(不能显著恶化):
- 正向护栏(不能显著下降):
### 成功标准
- 统计显著 + 效应量 MDE + 护栏指标正常
### 如果成功了,意味着什么
### 如果失败了,意味着什么