关于 ab-test-setup
面向产品团队的实验规划技能,用于设计具有可衡量结果的随机测试。它检查假设、前提、样本需求、追踪和启动条件,并说明结果解读的边界。
主要功能
- 01锁定假设与决策标准
- 02检查有效性前提
- 03选择适合的测试类型
- 04定义指标与护栏
- 05估算样本量和测试时长
- 06启动前验证追踪
适用场景
- 01测试流量充足的产品改动
- 02规划 A/B 测试及停止规则
- 03检查实验启动准备情况
- 04记录结果与解读限制
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill ab-test-setup安装后在 Claude Code 中输入/ab-test-setup确认已加载。
详细介绍
A/B 测试设置
1️⃣ 目的与范围
定义一个能够回答特定产品问题的实验,并在向用户暴露之前验证其假设。此流程本身无法保证有效性。
- 记录停止规则
- 在所述假设下估算样本需求
- 使假设和决策标准可被审查
2️⃣ 前置条件
你必须具备:
- 清晰的用户问题
- 对分析数据源的访问权限
- 大致估算的流量规模
假设质量检查清单
一个有效的假设包括:
- 观察或证据
- 单一、具体的变更
- 方向性预期
- 明确的受众
- 可衡量的成功标准
3️⃣ 假设锁定(硬性关卡)
在设计变体或指标之前,你必须:
- 呈现最终假设
- 明确指定:
- 目标受众
- 主要指标
- 预期效应方向
- 最小可检测效应(MDE)
使用任务中已达成一致的假设。如果缺少对发布至关重要的选择,请呈现具体选择以供确认,同时继续独立分析。不要对已获授权的决策反复请求批准。
4️⃣ 假设与有效性检查(强制)
明确列出关于以下方面的假设:
- 流量稳定性
- 用户独立性
- 指标可靠性
- 随机化质量
- 外部因素(季节性、营销活动、版本发布)
如果假设较弱或被违反:
- 警告用户
- 建议推迟或重新设计测试
5️⃣ 测试类型选择
选择最简单的有效测试:
- A/B 测试 – 单一变更,两个变体
- A/B/n 测试 – 多个变体,需要更高流量
- 多变量测试(MVT) – 交互效应,需要极高流量
- 拆分 URL 测试 – 重大结构性变更
默认使用 A/B,除非有明确的理由选择其他类型。
6️⃣ 指标定义
主要指标(强制)
- 用于评估成功的单一指标
- 直接与假设相关联
- 在启动前预先定义并冻结
次要指标
- 提供背景信息
- 解释结果发生的_原因_
- 不得覆盖主要指标
护栏指标
- 不得劣化的指标
- 用于防止有害的“胜利”
- 如果显著为负则触发测试停止
7️⃣ 样本量与持续时间
预先定义:
- 基线比率
- MDE
- 显著性水平 alpha(通常为 0.05,对应 95% 置信度)
- 统计功效(通常为 80%)
估算:
- 每个变体所需的样本量
- 预期测试持续时间
没有现实的样本量估算,请勿继续。
追踪验证(关卡 8 之前必须完成)
在进入下方的执行就绪关卡之前,请运行此检查清单,使“追踪已验证”具有具体含义:
- 事件触发: 在预发布环境或调试页面上触发主要和次要指标所依赖的每个事件(注册、加入购物车、自定义事件),并确认它在该管道记录的延迟内到达;记录观察到的延迟。
- 变体归因: 验证变体分配 ID 附加到每个触发的事件——不仅仅是入口事件。使用分析工具的原始事件视图,对每个变体比较 5 个以上事件的样本。
- 去重: 确认用户重新加载页面不会导致事件被重复计数。使用稳定的事件/事务 ID,并记录跨客户端/服务端的去重;仅靠变体标签不是唯一的事件键。
- 样本随机化: 使用预先指定的统计检查和充分的记录,检查样本比率与配置分配之间的不匹配。对 100 条记录使用固定的 ±5% 区间不是有效的通用随机化测试。检查分配稳定性、单元独立性和缺失的曝光记录。
- 护栏指标管道: §6️⃣ 中定义的每个护栏指标必须在测试启动时拥有可用的仪表板或警报。
如果以上任何一项失败,请停止并在关卡 8 之前解决它。
8️⃣ 执行就绪门禁(硬性停止)
只有在以下全部成立时,你才可以进入实施:
- 假设已锁定
- 主要指标已冻结
- 样本量已计算
- 测试时长已定义
- 护栏已设置
- 埋点追踪已验证
如果缺少任何一项,请停止并解决它。
运行测试
测试期间
要做:
- 监控技术健康状况
- 记录外部因素
不要做:
- 因为结果“看起来不错”就提前停止
- 在测试中途更改变体
- 添加新的流量来源
- 重新定义成功标准
分析结果
分析纪律
在解读结果时:
- 不要将结论推广到受测人群之外
- 不要声称超出受测变更范围的因果关系
- 不要无视护栏失败
- 将统计显著性与业务判断分开
解读结果
| 结果 | 行动 |
|---|---|
| 显著正向 | 考虑全量发布 |
| 显著负向 | 拒绝该变体,记录经验教训 |
| 不确定 | 报告不确定性;使用预先指定的继续规则或设计新测试 |
| 护栏失败 | 不要发布,即使主要指标胜出 |
文档与学习
测试记录(强制)
记录:
- 假设
- 变体
- 指标
- 样本量 vs 实际达成
- 结果
- 决策
- 经验教训
- 后续想法
将记录存储在共享、可搜索的位置,以避免重复失败。
拒绝条件(安全)
在以下情况下拒绝继续:
- 基线率未知且无法估计
- 流量不足以检测 MDE
- 主要指标未定义
- 在没有适当设计的情况下更改了多个变量
- 假设无法清晰陈述
解释原因并建议后续步骤。
关键原则(不可妥协)
- 每个测试一个假设
- 一个主要指标
- 启动前做出承诺
- 不要偷看
- 学习优先于获胜
- 统计严谨性优先
何时使用
当产品变更拥有足够的合格流量进行随机化对比,并且有可衡量的结果时使用。对于低流量发布或定性探索,考虑使用可用性研究或描述性测量,而不是声称因果关系带来的提升。
样本量计算示例
对于一个说明性的二元指标,估计从 10% 到 11% 的变化(一个百分点,10% 相对提升)、50/50 分配、双侧 alpha 0.05 和 power 0.80 时,每个变体所需的样本量。这个 Python 3 大样本近似使用 Cohen's proportion effect size:
from math import asin, ceil, sqrt
from statistics import NormalDist
baseline, variant = 0.10, 0.11 # illustrative assumptions, not measured data
alpha, power = 0.05, 0.80
h = abs(2 * asin(sqrt(variant)) - 2 * asin(sqrt(baseline)))
z = NormalDist()
per_variant = ceil(2 * (z.inv_cdf(1 - alpha / 2) + z.inv_cdf(power)) ** 2 / h ** 2)
print(per_variant)
预期输出:在这些假设下,每个变体需要 14745 个观测值。
此计算假设独立单元、一个二元结果、固定时间范围且无多重性调整。它不适用于聚类或重复观测、序贯决策或连续收入指标。在将样本估计转化为日历时长之前,需要考虑合格流量、流失、结果延迟和抽样单元。相等假设率的效果量为零,并且没有有限样本可用于检测该差异。
完整示例
Observation: users abandon a long signup form.
Change: remove one optional field; unit: account; allocation: 50/50 and stable.
Primary metric: completed signup / eligible assigned accounts within 24 hours.
Guardrails: validation failures and support requests.
Before launch: estimate sample needs from baseline and MDE, verify exposure and
completion IDs, define analysis window and stopping rule.
Expected report: counts, absolute/relative effect, interval, data-quality checks,
guardrail results and a decision with its limits; never just “p < 0.05, ship”.
局限性
- 聚类用户、溢出效应和重复观测可能使独立样本计算失效。
- 序贯监控需要预先规划的序贯方法;固定时间范围的显著性并不授权反复偷看。
- 尽管主要指标表现良好,埋点追踪缺口或样本比例不匹配仍可能使推断失效。
- 此技能不会自动激活开关、发布变体或建立监管合规性。