Как спланировать и провести A/B-тест?
Короткий ответ
Сформулируй гипотезу и одну ключевую метрику, зафиксируй α (обычно 0.05) и мощность (80%), посчитай нужный размер выборки под минимально важный эффект (MDE), раздели трафик случайно, набери выборку и НЕ подглядывай в результаты до конца, потом сравни группы стат-критерием и прими решение с учётом размера эффекта, а не только p-value.
Здесь интервьюер смотрит не на знание формул, а на дисциплину: умеешь ли ты договориться о правилах игры ДО старта. Половина «провальных» тестов проваливается на планировании, а не на матане.
Как рассуждать
Веди рассказ по этапам и на каждом называй решение, которое надо принять заранее. Ключевая мысль: все пороги — метрику, α, мощность, размер выборки, длительность — фиксируем до начала. Как только начал двигать правила по ходу теста (подсматривать, докидывать пользователей до значимости), статистика перестаёт работать, а вероятность ложного вывода уезжает вверх.
Эталонный ответ
-
Гипотеза и метрика. Одна основная метрика (например, конверсия в покупку), плюс 1–2 контрольные (guardrail), чтобы не сломать выручку ради кликов. Гипотеза формулируется как «новая кнопка поднимет конверсию с 10% до 11%».
-
Пороги. Задаём α — вероятность ошибки первого рода, обычно 0.05, и мощность 80% (то есть допускаем 20% ошибки второго рода). И главное — MDE, минимальный эффект, который вообще имеет смысл ловить.
-
Размер выборки. Под выбранные α, мощность и MDE считаем, сколько нужно наблюдений на группу — отдельный вопрос со своей формулой. Из размера выборки и дневного трафика получаем длительность.
-
Рандомизация. Делим пользователей случайно и на уровне пользователя, а не сессии, иначе один человек попадёт в обе группы. Проверяем, что группы сопоставимы (A/A-тест или sanity-check по базовым метрикам).
-
Сбор и анализ. Набираем заранее посчитанную выборку целиком. Сравниваем группы: для конверсий — z-тест долей, для среднего чека — t-тест или бутстрап. Смотрим на p-value и на доверительный интервал разницы.
-
Решение. Значимость плюс размер эффекта плюс guardrail-метрики. «Значимо, но +0.05% при разработке на месяц» — это «нет». И наоборот: красивый рост, который не дотянул до значимости, — это ещё не «фича не работает», а «данных не хватило, чтобы утверждать». Хороший финал разбора — проговорить, что делаем с незначимым результатом: катим дальше по другим соображениям, докручиваем гипотезу или закрываем.
Частые ошибки
- Peeking — подсматривать и останавливать тест в момент, когда p-value случайно провалился ниже 0.05. Это раздувает ошибку первого рода в разы; нужен либо фиксированный размер выборки, либо последовательные методы с поправкой.
- Крутить много метрик и радоваться любой значимой — это проблема множественных сравнений.
- Останавливать тест, «как только стало значимо», игнорируя недельную сезонность: гоняем целое число недель.
- Мерить сессии вместо пользователей и ловить утечку между группами.
- Забыть про MDE и запустить тест, который физически не мог поймать реалистичный эффект при таком трафике.
- Не проверить группы на сопоставимость до старта: если рандомизация сломана и в контроле случайно оказались более активные юзеры, результат не спасёт никакая статистика.
Потренируй этот вопрос с ИИ-интервьюером
Читать разбор полезно, а отвечать вслух под давлением — совсем другое. ИИ-интервьюер задаст этот и смежные вопросы, будет копать глубже и разберёт твои ответы. Первое короткое интервью — бесплатно.
Пройти собеседование бесплатно