A/B 测试设置

ab-test-setup
分类编程
作者Alireza Rezvani
许可MIT
评分4.80/5
使用14.6K

A/B 测试设置

1️⃣ 目的与范围

确保在编写任何代码之前,每项 A/B 测试都有效、严谨且安全

  • 防止“偷窥”数据 (Peeking)
  • 强制保证统计功效 (Statistical Power)
  • 拦截无效假设

---

2️⃣ 前置条件

你必须具备:

  • 一个明确的用户问题
  • 分析数据源的访问权限
  • 粗略估算的流量规模

假设质量检查清单

一个有效的假设应包含:

  • 观察结果或证据
  • 单一且具体的变更
  • 预期的影响方向
  • 定义明确的目标受众
  • 可衡量的成功标准

---

3️⃣ 假设锁定(强制关卡)

在设计变体或指标之前,你必须:

  • 提交最终假设
  • 明确指定:
- 目标受众 - 核心指标 (Primary Metric) - 预期的影响方向 - 最小可检测效应 (MDE)

明确询问:

> “这是我们针对本次测试所承诺的最终假设吗?”

在确认之前,请勿继续。

---

4️⃣ 假设与有效性检查(强制)

明确列出关于以下方面的假设:

  • 流量稳定性
  • 用户独立性
  • 指标可靠性
  • 随机化质量
  • 外部因素(季节性、营销活动、版本发布)

如果假设薄弱或被违背:

  • 警告用户
  • 建议推迟或重新设计测试

---

5️⃣ 测试类型选择

选择最简单的有效测试方案:

  • A/B 测试 – 单一变更,两个变体
  • A/B/n 测试 – 多个变体,需要更高流量
  • 多变量测试 (MVT) – 考察交互效应,需要极高流量
  • Split URL 测试 – 重大结构性变更

除非有明确理由,否则默认选择 A/B 测试

---

6️⃣ 指标定义

#### 核心指标 (Primary Metric)(强制)

  • 用于评估成功的单一指标
  • 与假设直接相关
  • 在启动前预先定义并冻结

#### 次要指标 (Secondary Metrics)

  • 提供上下文信息
  • 解释结果产生的原因
  • 不得覆盖核心指标

#### 护栏指标 (Guardrail Metrics)

  • 不允许下降的指标
  • 用于防止“有害的胜利”
  • 若出现显著负面影响,则触发测试停止

---

7️⃣ 样本量与时长

提前定义:

  • 基准率 (Baseline rate)
  • 最小可检测效应 (MDE)
  • 显著性水平 (Significance level,通常为 95%)
  • 统计功效 (Statistical power,通常为 80%)

估算:

  • 每个变体所需的样本量
  • 预计测试时长

在没有现实的样本量估算之前,请勿继续。

---

埋点验证(在关卡 8 之前必须完成)

在进入下方的“执行就绪关卡”之前,请运行此检查清单,确保“埋点已验证”具有具体含义:

1. 事件触发: 在预发布环境或调试页面触发核心指标和次要指标依赖的每个事件(如注册、加入购物车、自定义事件),并确认其在 30 秒内到达分析目的地。
2. 变体归因: 验证每个触发的事件(而不仅仅是进入事件)都附带了变体分配 ID。使用分析工具的原始事件视图,对每个变体随机抽样 5 个以上事件进行对比。
3. 去重: 确认用户刷新页面不会导致事件被重复计算。如果你的技术栈使用客户端去重,变体 ID 必须是去重键的一部分。
4. 样本随机化: 从分配表中提取前 100 条分配记录;变体拆分比例应在配置分配值的 ±5% 范围内。
5.
护栏指标流水线: §6️⃣ 中定义的每个护栏指标在测试启动前必须拥有可运行的仪表盘或告警。

如果上述任何一项未达成,请在进入 Gate 8 之前停止并解决。

---

8️⃣ 执行就绪门禁 (硬性停止)

仅在以下所有条件均满足时,方可进入实施阶段:

  • 假设已锁定
  • 核心指标已冻结
  • 样本量已计算
  • 测试时长已定义
  • 护栏指标已设定
  • 埋点已验证

如果缺失任何一项,请停止并解决。

---

运行测试

测试期间

建议执行 (DO):

  • 监控技术健康状况
  • 记录外部影响因素

禁止执行 (DO NOT):

  • 因结果“看起来不错”而提前停止
  • 在测试中途更改变体
  • 添加新的流量来源
  • 重新定义成功标准

---

结果分析

分析纪律

在解读结果时:

  • 不要将结论泛化到测试群体之外
  • 不要将因果关系归结于测试变更之外的因素
  • 不要忽略护栏指标的失败
  • 将统计显著性与业务判断区分开

解读结果与行动

| 结果 | 行动 |
| :--- | :--- |
| 显著正向 | 考虑全量上线 |
| 显著负向 | 拒绝变体,记录经验 |
| 不显著/无结论 | 考虑增加流量或尝试更大幅度的变更 |
| 护栏指标失败 | 不予上线,即使核心指标获胜 |

---

文档与学习

测试记录 (强制)

记录以下内容:

  • 假设
  • 变体
  • 指标
  • 计划样本量 vs 实际样本量
  • 结果
  • 决策
  • 经验教训
  • 后续想法

将记录存储在共享且可搜索的位置,以避免重复失败。

---

拒绝执行条件 (安全性)

在以下情况下拒绝推进:

  • 基准率未知且无法估算
  • 流量不足以检测 MDE (最小可检测效应)
  • 核心指标未定义
  • 在缺乏合理设计的情况下更改了多个变量
  • 无法清晰陈述假设

请解释原因并建议后续步骤。

---

核心原则 (不可妥协)

  • 每个测试仅限一个假设
  • 仅限一个核心指标
  • 启动前承诺方案
  • 禁止在测试期间窥视结果 (No peeking)
  • 学习重于获胜
  • 统计严谨性优先

---

最终提醒

A/B 测试的目的不是为了证明想法正确,
而是为了有信心地发现真相

如果你感到想要匆忙推进、简化流程或“先试一下”——
这就是一个信号,提醒你慢下来并重新检查设计

使用场景

本技能适用于执行概览中所描述的工作流或操作。

局限性

  • 仅在任务明确符合上述范围时使用此技能。
  • 不要将输出结果视为特定环境验证、测试或专家评审的替代方案。
  • 如果缺失必要的输入、权限、安全边界或成功标准,请停止并寻求澄清。