B 测试 是做什么的?
规则
- 基于哈希的分配:使用
hash(userId + experimentId) % 100进行确定性变体选择——会话间无随机漂移 - 变体配置:将实验存储在一个配置对象
{ id, name, variants: [{ id, weight }], status }中——切勿硬编码变体 - 服务端流量拆分:在中间件或 API 路由中进行分配,并设置 Cookie 以保持一致性——客户端拆分会导致闪烁
- 统计显著性:在宣布胜者前要求 95% 的置信度(p < 0.05)——对比例使用 z 检验
- 样本量:在开始前计算最小样本量——
n = (Z^2 * p * (1-p)) / E^2,其中 E 为最小可检测效应 - 每次实验一个指标:预先定义主要指标(转化率、点击率、收入)——次要指标仅为探索性
- 互斥性:一个实验中的用户不应与冲突的实验重叠——使用实验分层
- 特性标志:将实验代码包裹在特性标志检查中——实验结束后清理失败的变体
- 持续时间:至少运行 1-2 个完整的业务周期(最少 7-14 天)以考虑星期效应
- 日志记录:为每个展示和转化事件记录
experiment_id、variant_id、user_id、timestamp
避免
- 在样本量达到之前偷看结果——会增加假阳性率
- 中途更改实验参数——会使统计分析失效
- 一次测试过多变体——会指数级增加所需样本量
- 在客户端进行变体分配而不使用 Cookie——会导致闪烁和不一致的体验