A/B-тестирование

Также: сплит-тест, ab test, а б тест

A/B-тестирование (сплит-тест) — эксперимент, в котором пользователей случайно делят на группы: одна видит текущую версию продукта, другая — изменённую. Разница метрик между группами показывает, действительно ли изменение улучшает продукт, а не совпало со случайным колебанием.

A/B-тестирование (сплит-тест) — это контролируемый эксперимент: трафик случайным образом делится между версией A (контроль, текущий продукт) и версией B (вариант с изменением). Поскольку деление случайное, группы отличаются только самим изменением — и разницу в метриках можно приписать именно ему, а не сезонности, составу аудитории или маркетингу. На практике это самый надёжный способ отличить причинную связь от совпадения — подробнее в статье Корреляция и каузация.

Как считать

Два ключевых расчёта: размер выборки до запуска и значимость после.

1. Размер выборки на группу (для теста конверсии, мощность 80%, уровень значимости 5%):

n = 15,7 × p × (1 − p) / MDE²

  • p — базовая конверсия контроля (доля, например 0,05);
  • MDE (minimum detectable effect) — минимальный абсолютный прирост, который вы хотите уметь ловить (например 0,005, то есть +0,5 процентного пункта);
  • n — сколько пользователей нужно в каждой группе.

2. Проверка значимости после теста — z-критерий для двух долей:

z = (p_B − p_A) / √( p̄ × (1 − p̄) × (1/n_A + 1/n_B) )

где p_A, p_B — конверсии групп, — объединённая конверсия, n_A, n_B — размеры групп. Если |z| > 1,96, разница значима на уровне 5% (p-value < 0,05).

Сколько нужно наблюдений
На вариант
31 235
Всего
62 470
Длительность
32 дн.

Столько наблюдений нужно, чтобы отличить реальный эффект от шума при мощности 80% и уровне значимости 5%. Останавливать раньше нельзя — «подглядывание» превращает случайные колебания в мнимую победу.

Пример с числами

SaaS «Планёрка» тестирует новую страницу тарифов. Текущая конверсия визита в оплату — 5%. Команда считает осмысленным приростом +0,5 п.п. (с 5% до 5,5% — это +10% к выручке). Считаем выборку:

n = 15,7 × 0,05 × 0,95 / 0,005² = 15,7 × 0,0475 / 0,000025 ≈ 29 830 на группу

При трафике 4 000 визитов в день и сплите 50/50 тест займёт 59 660 / 4 000 ≈ 15 дней — округляем до 14 или 21 дня, чтобы захватить целое число недель и сгладить разницу будних и выходных.

Через три недели: контроль — 42 100 визитов, 2 105 оплат (5,0%); вариант — 42 300 визитов, 2 358 оплат (5,57%). Объединённая конверсия p̄ = 0,0529. Тогда:

z = (0,0557 − 0,0500) / √(0,0529 × 0,9471 × (1/42100 + 1/42300)) ≈ 0,0057 / 0,00154 ≈ 3,7

z = 3,7 существенно больше 1,96 — результат значим, новую страницу раскатываем на всех. Если бы разница была +0,15 п.п. при тех же выборках, z ≈ 1,0 — такой результат неотличим от случайного шума.

Нормы и бенчмарки

ПараметрОбщепринятый ориентир
Уровень значимости (α)5% (иногда 10% для малорисковых изменений)
Статистическая мощность80% (для критичных решений — 90%)
Длительность тестаМинимум 1–2 полные недели, обычно 2–4; всегда целое число недель
MDEОтносительный прирост 5–10% к базовой метрике; ловить эффекты меньше 2–3% могут позволить себе только продукты с миллионами пользователей
Доля «победивших» тестовПо опыту крупных компаний значимый выигрыш даёт лишь порядка 10–30% экспериментов — это нормально

Частые ошибки

  • Подглядывание (peeking). Ежедневно проверять значимость и останавливать тест при первом p-value < 0,05 — способ получить ложный «выигрыш»: при многократных проверках вероятность ложного срабатывания вырастает с 5% до 20–30%. Фиксируйте длительность заранее.
  • Тест без расчёта выборки. «Покрутим недельку и посмотрим» на малом трафике означает, что тест физически не способен заметить реалистичный эффект — незначимый результат ничего не доказывает.
  • Остановка на неполной неделе. Аудитория будней и выходных ведёт себя по-разному; тест на 10 дней смешивает их в неравных пропорциях.
  • Много метрик и сегментов без поправки. Проверив 20 метрик на уровне 5%, вы почти гарантированно найдёте одну «значимую» случайно. Назначайте одну ключевую метрику до запуска, остальные — вспомогательные.
  • Игнорирование долгосрочных эффектов. Агрессивный баннер поднимает конверсию за две недели, но может ронять удержание через месяц — проверяйте выигравшие варианты когортным анализом.
Разобраться на практике

Продуктовая аналитика 2.0

Углубленный курс продуктовой аналитики с Python, ML и продвинутыми техниками анализа

Посмотреть курс