A/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 的情況下進行客戶端變體分配 — 會導致閃爍和不一致的體驗