为什么需要 A/B 测试
产品经理和运营每天都在做判断:「这个按钮换个颜色会不会更好」「文案改成这样转化率会不会更高」。如果全靠直觉上线,你永远不知道是改动起了作用,还是大盘本身在波动。A/B 测试用小流量、随机分组的方式,把「感觉」变成「可验证的因果」。
它的核心只有一句话:只改变一个变量,随机把用户分成对照组与实验组,再比较两组在同一指标上的差异是否显著。随机分组保证了组间可比,单一变量保证了差异可归因。
没有随机分组的「前后对比」,只是时间先后,不是因果证据。上线前后各取一段数据对比,得到的常常是错觉。
- 假设三要素对象、改动、预期指标与幅度。
- 样本量由基线转化率、最小可检测效应与显著性水平共同决定。
- 显著性P 值判断差异是否可能只是噪声,置信区间给出差异范围。
- 停止规则事先约定,避免提前叫停带来的假阳性。
提出一个好假设:假设三要素
实验的起点是假设。多数团队的假设太模糊,导致实验做完也不知道该学到什么。一个好假设应该包含三要素:对象(对谁)、改动(改什么)、预期指标与幅度(期望提升多少)。
- 对象:新注册用户,还是老用户复购?人群不同,结论不一定通用。
- 改动:例如把结算页的支付方式前置到首屏。
- 预期:结算完成率相对提升 5% 以上,并写清观察周期。
把模糊的想法写成「如果……那么……」的句式:「如果对首次下单用户默认勾选常用支付方式,那么结算完成率将提升 5%」。写不出来的,说明还没想清楚要验证什么,这时候跑实验只是浪费流量。
实验设计:样本量、分流与指标
样本量是实验设计里最容易被忽略、又最关键的一步。样本太小,真实存在的差异可能根本测不出来;样本太大,则是对流量与时间成本的浪费。
它由三个量共同决定:基线转化率、你希望检测到的最小提升幅度(MDE),以及显著性水平与统计功效。
# 双样本比例检验所需的每组样本量(近似公式)
import math
def sample_size(p0, mde_rel, alpha=0.05, power=0.80):
# p0: 基线转化率; mde_rel: 相对提升幅度
p1 = p0 * (1 + mde_rel)
z_alpha = 1.96 if abs(alpha - 0.05) < 1e-9 else 1.64
z_beta = 0.84 if abs(power - 0.80) < 1e-9 else 1.28
p_bar = (p0 + p1) / 2
n = (z_alpha + z_beta) ** 2 * 2 * p_bar * (1 - p_bar) / (p1 - p0) ** 2
return math.ceil(n)
print(sample_size(0.10, 0.10)) # 基线 10%,希望相对提升 10%
print(sample_size(0.10, 0.05)) # 想检测更小的提升,样本量会明显变大
分流要保证随机与独立:同一个用户在整个实验期间必须始终落在同一组,否则跨组污染会让结果失效。指标则要提前锁定:主指标只设一个,其余作为辅助指标与护栏指标。不要在实验结束后挑一个涨了的指标当成结论——那是数据窥探,几乎总能「找到」显著。
显著性、P 值与置信区间
显著性回答的是「两组差异有多大概率只是随机噪声」。约定俗成取显著性水平 α = 0.05,即当两组其实没有差别时,观测到当前差异的概率小于 5%,才认为差异显著。
与 P 值配套的是置信区间:它不仅告诉你「有没有差异」,还告诉你「差异大概落在什么范围」。一个显著但区间很宽的提升,实际决策时要比数字看起来更谨慎。
-- 读取实验各组的分母、分子,再交给统计脚本计算显著性
SELECT
g.variant,
COUNT(DISTINCT g.user_id) AS users,
COUNT(DISTINCT e.user_id) AS conversions,
ROUND(COUNT(DISTINCT e.user_id) * 1.0
/ COUNT(DISTINCT g.user_id), 4) AS conv_rate
FROM experiment_assign AS g
LEFT JOIN events AS e
ON e.user_id = g.user_id AND e.event_name = 'order_paid'
WHERE g.experiment_id = 'exp_settle_pay_2026h1'
GROUP BY g.variant;
一个容易踩的坑是「边跑边看」:实验期间反复查看数据,看到显著就停。这会让假阳性率远高于 5%。正确做法是事先算好所需样本量或实验周期,到点再看结论。
用户运营:把实验变成策略
A/B 测试的产出不只是一次结论,更是一套可复用的运营策略。把验证有效的改动沉淀成规则,再按人群精细化,让每个有效的改动持续产生收益。
- 把通过实验的改动写进产品与运营规范,避免下次再从零验证。
- 对效果随时间衰减的改动定期重测:用户会习惯,边际收益会下降。
- 用实验积累用户偏好,反过来指导文案、权益与触达节奏的设计。
运营场景里,可测的东西非常多:推送文案、权益力度、触达时机、落地页结构。只要指标可定义、流量可分,就值得用一次小实验替代一次拍脑袋。
常见实验错误与避坑
- 提前叫停:看到显著就收工,忽略了早期数据的波动更大。
- 多重比较:同时盯太多指标,总会有一个「碰巧显著」。
- 样本污染:同一用户进了两组,或两组人群本身不可比。
- 忽略护栏:主指标涨了,但退款率、投诉量也在涨,净效果可能是负的。
- 实验期太短:覆盖不到完整的周末与工作日周期,结论不稳定。
一个实验的价值,不在于它证明了你是对的,而在于它让你更快知道自己错了。
从实验到增长的闭环
把 A/B 测试放进增长流程,就形成一个闭环:观察数据 → 发现问题 → 提出假设 → 设计实验 → 得出结论 → 沉淀策略 → 再次观察。每转一圈,团队对用户的理解就深一层。
关键不在于单次实验做得多完美,而在于持续、诚实地跑实验。大量低成本的实验,比少数「一次性大改版」更容易找到真正有效的增长点,也让团队少走很多靠争论无法解决的弯路。
最后提醒一句:实验是工具,不是目的。当一次实验的结论与直觉相悖时,先别急着否定数据,也别急着否定直觉——回到数据口径和分流逻辑上,往往答案就在那里。