Короткий ответ
A/B-тест — это контролируемый эксперимент со случайным распределением пользователей на контрольную и тестовую группы, который позволяет сделать причинный вывод об эффекте изменения. Сравнение «до/после» этого не даёт, так как на метрику могли повлиять сезонность, маркетинг и другие внешние факторы.
Как это работает подробнее
рандомизация делит похожую по составу аудиторию на группы, единственное систематическое различие между которыми — наличие изменения. Это позволяет приписать разницу в метриках именно ему, а не внешним факторам.
Пример кода
example.sql
SELECT group_name,
COUNT(DISTINCT user_id) AS users,
SUM(converted) AS conversions,
SUM(converted)::float / COUNT(DISTINCT user_id) AS conversion_rate
FROM ab_test_events
GROUP BY group_name;Что использовать на практике
- перед запуском фиксируют гипотезу, основную метрику, длительность и ожидаемый эффект. Группы формируются случайно и независимо от характеристик пользователя (устройство, регион, поведение).
- SQL (PostgreSQL) для простого сравнения групп:
- Ожидаемый результат: по одной строке на группу A и B с числом пользователей и конверсией. Sanity check — суммарное число пользователей по группам должно быть близко к ожидаемому сплиту рандомизации (например, примерно 50/50).
Подводные камни
- сравнение показателей «до» и «после» без контрольной группы и приписывание всей разницы изменению, хотя на неё могли повлиять сезонность, конкуренты, баги или рекламные кампании, которые шли параллельно.