← Назад к вопросам

Что делаешь после раскатки A/B теста?

2.0 Middle🔥 161 комментариев
#A/B тестирование#Процессы и планирование

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что я делаю после раскатки A/B теста (post-launch analysis)

Пост-запуск теста — это не конец, а начало. Вот мой процесс.

День 1: Immediate Monitoring

Что я проверяю:

  1. Technical correctness
    • Рандомизация работает? (50/50 split?)
    • Tracking работает? (events пишутся?)
    • Нет ли технических проблем?
SELECT 
  variant,
  COUNT(DISTINCT user_id) as users,
  COUNT(*) as total_events
FROM test_tracking
WHERE test_id = 'checkout_button_color'
GROUP BY variant;

Если Control и Treatment не 50/50 → проблема с рандомизацией.

  1. Data quality

    • Нет ли null values?
    • Нет ли impossible values?
    • Распределение выглядит нормально?
  2. Early signals

    • Первые данные показывают что-то интересное?
    • Есть ли anomalies?
    • Нужен ли rollback?

Пример dashboard:

Test: Checkout Button (Green vs Red)
Status: RUNNING (1 day in)
Sample: Control 1K, Treatment 1K

Conversion Rate:
- Control: 10% (100 conversions)
- Treatment: 12% (120 conversions)
- Difference: +2%
- P-value: 0.25 (NOT significant yet)

Note: Too early to conclude, sample too small

Неделя 1-2: Stabilization Check

Что я проверяю:

  1. Stability of effect

    • В первый день +2%, в третий день -1%?
    • Есть ли флуктуации?
    • Или стабильно растёт/падает?
  2. Secondary metrics

    • Первичная метрика растёт, но не broke ли secondary?
SELECT 
  variant,
  DATE(timestamp) as day,
  COUNT(DISTINCT CASE WHEN converted = 1 THEN user_id END) / COUNT(DISTINCT user_id) as conversion_rate,
  AVG(revenue) as avg_revenue,
  AVG(CASE WHEN bounced = 1 THEN 1 ELSE 0 END) as bounce_rate
FROM test_tracking
WHERE test_id = 'checkout_button_color'
GROUP BY variant, DATE(timestamp)
ORDER BY day, variant;

Пример хорошего результата:

Control: Conv 10%, Revenue $50, Bounce 20%
Treatment: Conv 12%, Revenue $48, Bounce 22%

Plus: +2% conversion
Minus: -$2 revenue, +2% bounce
Conclusion: Mixed, but primary metric up
  1. Segment analysis
    • Эффект одинаков для всех?
    • Может быть effect только для mobile, но не desktop?
SELECT 
  variant,
  device,
  COUNT(DISTINCT user_id) as users,
  ROUND(100.0 * SUM(converted) / COUNT(*), 2) as conversion_rate
FROM test_tracking
GROUP BY variant, device;

Пример:

Control Desktop: 11%
Treatment Desktop: 11% (no effect)
Control Mobile: 8%
Treatment Mobile: 15% (+7% effect)

Conclusion: Effect only on mobile!
Action: Decide if to launch only on mobile

Неделя 2-4: Statistical Significance

В конце теста, я провожу полный анализ.

Chi-square test:

from scipy.stats import chi2_contingency

control_conversions = 1000
control_total = 10000
treatment_conversions = 1200
treatment_total = 10000

chi2, pval, dof, expected = chi2_contingency([
    [control_conversions, control_total - control_conversions],
    [treatment_conversions, treatment_total - treatment_conversions]
])

print(f"P-value: {pval}")
print(f"Significant at 0.05: {pval < 0.05}")
print(f"Effect size: +{(treatment_conversions/treatment_total - control_conversions/control_total)*100:.1f}%")

Пример results:

P-value: 0.012 (< 0.05, SIGNIFICANT)
Effect size: +2%
Confidence: 95% confident effect is between 1% and 3%
Decision: LAUNCH (statistically significant and practically meaningful)

День запуска результата: Decision Meeting

Что я готовлю:

  1. Summary slide:

    • Гипотеза: "Зелёная кнопка повысит конверсию"
    • Результат: "Да, +2% конверсия, p=0.012"
    • Recommendation: "Запустить для всех"
  2. Detailed analysis:

    • Performance by segment (mobile, desktop, geo, etc)
    • Effect size and confidence interval
    • Secondary metrics impact
    • Revenue impact (если applicable)
  3. Risk assessment:

    • Есть ли negative effects?
    • Есть ли долгосрочные concerns?
    • Есть ли rollback plan если что-то пойдёт не так?

Post-Launch (После запуска)

Если тест прошёл и мы запускаем для всех:

День 1-7: Санитарное проверение

-- Проверка что запуск работает правильно
SELECT 
  'Before test' as period,
  COUNT(DISTINCT user_id) as users,
  ROUND(100.0 * SUM(converted) / COUNT(*), 2) as conversion_rate
FROM all_data
WHERE timestamp < '2024-01-01'

UNION ALL

SELECT 
  'After launch' as period,
  COUNT(DISTINCT user_id) as users,
  ROUND(100.0 * SUM(converted) / COUNT(*), 2) as conversion_rate
FROM all_data
WHERE timestamp >= '2024-01-01';

Ожидаемый результат:

Before test: 10% (control baseline)
After launch: 12% (treatment effect applies to all)

If not matching: investigate why

День 7-30: Longer-term tracking

Часто effect diminishes со временем (novelty wear-off):

  • День 1-3: +3% конверсия
  • День 4-7: +2.5% конверсия
  • День 8-14: +1.5% конверсия
  • День 15+: +0.5% конверсия

Это нормально. Даже +0.5% долгосрочно ценен.

Документация результата

Я создаю post-mortem документ:

# A/B Test: Checkout Button Color

## Summary
- Гипотеза: Зелёная кнопка улучшит конверсию
- Результат: ✅ SUCCESSFUL
- Effect: +2% конверсия (10% → 12%)
- P-value: 0.012 (статистически значим)
- Revenue impact: +$100K/год

## Execution
- Duration: 2 weeks
- Sample size: 20K users per variant
- Segments: Desktop (+1%), Mobile (+3%)

## Learning
- Зелёный цвет more actionable чем красный
- Effect stronger on mobile (users tap quicker)
- No negative impact on other metrics

## Next steps
1. Запустили для всех
2. Monitor 30 days for long-term effect
3. A/B test next button element (copy, size)

Этот документ живёт в Confluence и становится knowledge base.

Как я использую результаты для следующих экспериментов

Learnings применяю:

  1. Color psychology:

    • Green лучше red для CTAs
    • Буду использовать для других button tests
  2. Mobile vs Desktop:

    • Mobile users respond faster (меньше thinking)
    • Desktop users need more convincing
    • Буду тестировать по-отдельности
  3. Sample size estimation:

    • Зная что effect size +2%
    • Могу дальше рассчитать нужный sample для новых тестов
    • Экономит время в запуске

Типичные ошибки которые я вижу

Ошибка 1: Запуск без post-analysis

"Тест показал +2%, давайте запустим"

НО НЕ проверяли:

  • Есть ли segment где效果 negative?
  • Есть ли secondary metric problems?
  • Статистически ли это значимо?

**Ошибка 2: Дальше запуска

"Запустили тест 2 месяца назад, не знаю результат"

Тест не работает если его забыть. Нужно monitor.

Ошибка 3: Не документировать

"Мы знаем что green кнопка работает"

НО в новом году, новый PM, новый engineer. Откуда они знают?

Документация = knowledge база.

Мой process в одном файле

Итерация A/B теста:
├─ Планирование: определить гипотезу, sample size
├─ Запуск: рандомизация, tracking
├─ Мониторинг неделя 1-2: техдолги, ранние сигналы
├─ Анализ неделя 2-4: статистический тест, segmentation
├─ Decision: запустить или kill?
├─ Launch: для всех юзеров
├─ Post-launch неделя 1-4: санитарная check, долгосрочный effect
└─ Документация: learnings и next steps

Главный совет

Тест не заканчивается когда у тебя есть p-value. Тест заканчивается когда ты понял почему тест сработал, применил lessons, и запустил следующий тест.

Это цикл. Improvement это process, не event.

Что делаешь после раскатки A/B теста? | PrepBro