A/B Тестирование (A/B Testing)

Автор:

Инструмент, позволяющий принимать обоснованные продуктовые решения на основе данных

A/B-тестирование (split testing) — это мощный инструмент в арсенале дата-аналитика, позволяющий принимать обоснованные продуктовые решения на основе данных. Оно используется для оценки влияния изменений в продукте или интерфейсе на поведение пользователей и ключевые бизнес-метрики.


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

В A/B-тестировании мы случайным образом разделяем пользователей на две (или более) независимые выборки:

  • Группа A (Control) — получает текущую версию продукта (baseline).

  • Группа B (Treatment) — получает модифицированную версию (например, новую фичу или изменённый UI).

Цель — сравнить метрики между группами и оценить, является ли различие статистически значимым.


Ключевые термины и понятия

Рандомизация — критичный этап, обеспечивающий, что различия в поведении обусловлены только тестируемым изменением, а не внешними факторами.

Выбор метрик зависит от бизнес-целей. Метрики делятся на:

  • Primary metric — основная метрика, по которой принимается решение (например, Conversion Rate).

  • Secondary metrics — вспомогательные метрики, помогающие интерпретировать результат (например, Bounce Rate, Session Duration).

  • Guardrail metrics — метрики-защитники, которые не должны деградировать (например, количество жалоб, возвраты товара).

Для проверки гипотезы используется классическая проверка значимости (hypothesis testing).
Нулевая гипотеза H0H_0: Различий между группами нет.
Принимается или отвергается на основе p-value и уровня значимости α\alpha, обычно 0.05.

Также важно учитывать:

  • Statistical Power (мощность теста): вероятность обнаружить эффект, если он есть.

  • Effect Size: минимальный практически значимый эффект (например, +1% к CR).


Пример: Улучшение CTA-кнопки в e-commerce

Цель: Проверить, влияет ли изменение текста на CTA-кнопке (“Buy Now” → “Get Yours Now”) на конверсию в заказ.

Дизайн эксперимента:
  • Метрика: Conversion Rate (CR) = orders / sessions

  • Population: Все пользователи сайта в течение 2 недель

  • Split: 50/50 между контрольной и тестовой группами

Результаты:
Группа Сессии Заказы CR (%)
Control 10,000 1,200 12.0
Treatment 10,000 1,320 13.2

Вычисляем p-value с помощью Z-теста пропорций:

Z=p1−p2p(1−p)(1n1+1n2)Z = \frac{p_1 - p_2}{\sqrt{p(1-p)(\frac{1}{n_1} + \frac{1}{n_2})}}

Где:

  • p1=0.132,p2=0.12p_1 = 0.132, p_2 = 0.12

  • p=1,200+1,32020,000=0.126p = \frac{1,200 + 1,320}{20,000} = 0.126

Результат: Z≈2.22Z ≈ 2.22, p≈0.026p \approx 0.026
Так как p<0.05p < 0.05, отвергаем H0H_0: изменение статистически значимо.


Подводные камни

  • Multiple Testing: При одновременном тестировании множества гипотез возрастает риск ложноположительных результатов. Не забывайте о корректировке (например, Bonferroni).

  • Sample Ratio Mismatch: Проверяйте, что разбиение действительно равномерное.

  • Периодические флуктуации: Избегайте запуска A/B-тестов в аномальные периоды (например, распродажи, праздники).