A/B-тестирование · теория и практика
Практическое руководство

A/B-тестирование: от гипотезы до решения, которое не стыдно защитить

Разбираем эксперимент целиком — на живых данных интернет-магазина за 14 дней. Теория объясняется словами, а каждая цифра на странице пересчитана из одного и того же набора данных: графики, таблицы и выводы не расходятся между собой.

0
посетителей в эксперименте
0
заказов всего (A + B)
0
прирост конверсии варианта B
0
p-value итогового теста

Сюжет кейса. Магазин переписал карточку товара: добавил крупную кнопку «Купить в один клик» и убрал лишние поля из формы. Старая версия — контроль A, новая — вариант B. Метрика успеха: доля посетителей, оформивших заказ. Ниже — как такой тест правильно спланировать, посчитать и прочитать, включая ловушку, в которую этот тест чуть не угодил на шестой день.

Часть 1 · Теория

Что такое A/B-тест и зачем нужна статистика

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

Почему нельзя просто «сравнить до и после»

Если в понедельник выкатить новый дизайн и сравнить с прошлой неделей, вы сравните не дизайн, а две разные недели: другая погода, другая реклама, другие праздники, другой сезон. В A/B-тесте обе версии живут одновременно и делят один и тот же трафик, поэтому внешние факторы действуют на обе группы одинаково и взаимно вычитаются.

Почему разница в цифрах ещё не результат

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

Анатомия правильного эксперимента

  1. Гипотеза. Не «давайте попробуем зелёную кнопку», а утверждение с причиной и ожидаемым эффектом: «форма из трёх полей вместо семи снижает трение на последнем шаге, поэтому конверсия в заказ вырастет минимум на 10 %».
  2. Одна главная метрика. Заранее выбранная метрика успеха (здесь — конверсия в заказ). Всё остальное — вспомогательные и защитные метрики, они не могут «спасти» проигравший вариант.
  3. Размер выборки и срок. Считаются до запуска исходя из минимального эффекта, который вам интересен. Срок — целое число недель, чтобы в обе группы попали и будни, и выходные.
  4. Честная рандомизация. Пользователь попадает в группу случайно и запоминается: при следующем визите он видит ту же версию. Делить по времени суток, городам или устройствам — не A/B-тест.
  5. Никаких правок на ходу. Пока тест идёт, вариант не дорабатывают, трафик не перераспределяют, а решение не принимают раньше рассчитанного срока.
  6. Чтение результата. Смотрят не только «кто победил», но и размер эффекта, доверительный интервал и поведение сегментов.

Словарь: минимум терминов, без которых не обойтись

ТерминЧеловеческим языкомВ нашем кейсе
Контроль (A)Текущая версия, эталон для сравненияСтарая карточка товара
Вариант (B)Изменение, которое проверяемКарточка с кнопкой «Купить в один клик»
КонверсияДоля людей, сделавших целевое действиеОформили заказ ÷ зашли на карточку
Абсолютный прирост (п.п.)Простая разница двух процентов
Относительный прирост (%)Насколько вырос сам показатель
MDEМинимальный эффект, который тест способен заметитьПланировали 10 % относительных
p-valueВероятность увидеть такую разницу, если изменение на самом деле не работает
Доверительный интервалДиапазон, в котором правдоподобно лежит настоящий эффект
Статистическая мощностьШанс заметить эффект, если он действительно естьПланировали 80 %
Часть 2 · Статистика

p-value, доверительный интервал и две ошибки, которые можно совершить

Здесь всего одна идея: мы предполагаем, что изменение не работает, и проверяем, насколько наши данные уживаются с этим предположением. Если уживаются плохо — предположение отбрасываем.

Как читать p-value

Мысленно допускаем: кнопка ничего не изменила, обе версии одинаковы. p-value отвечает на вопрос «какова вероятность при таком допущении случайно получить разницу не меньше нашей?». Маленькое p-value означает, что наблюдаемая картина плохо объясняется случайностью.

Порог 0,05 — это не закон природы, а договорённость: мы согласны ошибочно объявлять победу примерно в 5 случаях из 100.

Частая путаница. p-value — это не «вероятность того, что B лучше» и не «вероятность ошибки вывода». Это вероятность самих данных при допущении, что разницы нет.

Почему интервал полезнее, чем «значимо / незначимо»

Доверительный интервал показывает не только факт различия, но и его масштаб. Фраза «прирост от 0,38 до 1,50 п.п.» гораздо содержательнее, чем «p < 0,05»: по ней сразу видно и худший, и лучший реалистичный сценарий, а значит, можно посчитать деньги в обоих случаях.

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

Две ошибки эксперимента

На самом деле разницы нетНа самом деле разница есть
Тест сказал «победа» Ошибка I рода
Внедрили пустышку. Ресурсы потрачены, метрика не выросла. Контролируется порогом значимости (5 %).
Верное решение
Рабочее изменение раскатано на всех.
Тест сказал «разницы нет» Верное решение
Бесполезная идея отклонена.
Ошибка II рода
Хорошая идея похоронена, потому что выборки не хватило. Контролируется мощностью (80 %).

Мощность 80 % означает: если эффект нужного размера реально есть, тест заметит его в 4 случаях из 5. В оставшемся случае вы честно проведёте эксперимент и ничего не увидите.

Формулы, которые стоят за цифрами страницы

Сравнение двух конверсий (z-тест для долей)

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

p̄ — общая конверсия обеих групп вместе. Чем больше z по модулю, тем меньше p-value. Для нашего теста z = .

Интервал для разницы конверсий

(p_B − p_A) ± 1,96 · √( p_A(1−p_A)/n_A + p_B(1−p_B)/n_B )

Множитель 1,96 соответствует уровню доверия 95 %. Наш интервал: процентных пункта.

Часть 3 · Планирование

Сколько трафика нужно и почему это считают заранее

Главный вопрос перед запуском: какой минимальный эффект вы хотите уметь замечать? Чем мельче эффект, тем больше людей нужно — и зависимость здесь не линейная, а квадратичная: чтобы ловить вдвое меньший прирост, трафика нужно вчетверо больше.

Цена чувствительности при базовой конверсии 5 %

Расчёт для уровня значимости 5 % и мощности 80 %, двусторонний тест. «Дней теста» — при 1 800 посетителях в сутки на обе группы вместе.

Хотим замечать приростКонверсия B станет На группуВсегоДней тестаВердикт

Вывод для практики. Если трафика хватает только на две недели, не обманывайте себя: вы сможете надёжно поймать прирост примерно от 20 % относительных и крупнее. Мелкие косметические правки на таком объёме проверить невозможно — их либо объединяют в один заметный пакет изменений, либо не тестируют вовсе.

Часть 4 · Практика

Кейс: карточка товара, 14 дней, 24 977 посетителей

Тест шёл ровно две недели, трафик делился поровну случайным образом, пользователь навсегда закреплялся за своей версией. Вот что получилось.

конверсия A (контроль)
конверсия B (новая карточка)
разница, процентных пунктов
итог по главной метрике

Сводная таблица эксперимента

ГруппаПосетителиЗаказы Конверсия95 % интервалОтн. прирост

Динамика по дням

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

Контроль A Вариант B

Ловушка подглядывания: как тест «выигрывал» и «проигрывал» три раза

Ниже — p-value, пересчитанное каждый день на накопленных данных. Зелёным отмечены дни, когда результат формально был значимым. Если бы команда останавливала тест в первый же такой день, она приняла бы решение на шестой день — а на седьмой значимость исчезла бы.

ДеньНакопл. AНакопл. B Разница, п.п.p-valueЧто показал бы дашборд

Почему так выходит. Каждая проверка — это ещё один шанс случайно наткнуться на «значимость». Если смотреть на p-value ежедневно и останавливаться при первом успехе, доля ложных побед вырастает с обещанных 5 % примерно до 20–30 %. Лечится просто: срок фиксируется заранее, а промежуточные остановки — только по специальным последовательным методам.

Часть 5 · Аналитика

Разрез по сегментам: общий итог скрывает главное

Итоговые +0,94 п.п. — это средняя температура. Стоит разложить тот же самый результат по типам устройств, и картина меняется: прирост дал ровно один сегмент, а два остальных не изменились вовсе.

Аналитическая таблица по устройствам

СегментПосет. AКонв. A Посет. BКонв. B Разница, п.п.Отн.p-valueВывод

Суммы по сегментам в точности равны итогам эксперимента — это первое, что стоит проверять в любой аналитической таблице.

Тот же результат на графике

Высота столбца — конверсия сегмента. Видно, что серый и синий столбцы почти совпадают везде, кроме мобильных.

Контроль A Вариант B

Как это читать правильно. Новая карточка лечила боль мобильных пользователей: на маленьком экране длинная форма особенно мучительна, и «в один клик» сработало. На десктопе старая форма и так не мешала — поэтому там ничего не изменилось. Гипотеза не просто подтвердилась, а объяснилась.

Где здесь ловушка. Если нарезать данные на десяток сегментов и искать хоть один значимый, что-нибудь «значимое» найдётся почти наверняка — случайно. Сегменты допустимо анализировать, когда они выбраны заранее и их немного, а найденный эффект стоит подтвердить отдельным тестом на этом сегменте.

Что это значит в деньгах

Пересчёт эффекта на год вперёд. Берём тот же трафик, что и в тесте, и средний чек 4 500 ₽. Нижняя и верхняя границы — концы 95 % доверительного интервала: именно так стоит показывать прогноз руководству, а не одним «средним» числом.

СценарийПрирост конверсии Доп. заказов в годДоп. выручка в год

Даже пессимистичный край интервала окупает доработку — именно поэтому решение о раскатке здесь принимается спокойно, а не «на удачу».

Часть 6 · Инструмент

Калькулятор: посчитайте свой тест прямо здесь

Подставьте собственные числа — посетителей и конверсий в каждой группе. Страница пересчитает конверсии, прирост, доверительный интервал и p-value.

Данные эксперимента

Результат

конверсия A
конверсия B
разница, п.п.
p-value

Часть 7 · Практика

Семь ошибок, которые портят большинство тестов

ОшибкаКак выглядитЧем опаснаЧто делать
Подглядывание Дашборд открывают каждое утро и ждут «зелёного» Ложные победы вместо 5 % достигают 20–30 % Зафиксировать срок заранее и не смотреть на значимость до его конца
Слишком короткий тест Остановили через 3 дня, «и так всё видно» Выходные и будни ведут себя по-разному, эффект переоценивается Всегда целое число недель, минимум одна полная
Мало трафика под задачу Ищут прирост 3 % на выборке в тысячу человек Тест физически не способен заметить эффект — итог всегда «разницы нет» Считать размер выборки до запуска; мелкие правки объединять в пакет
Много метрик сразу Смотрят 15 показателей и выбирают выросший Хоть что-то вырастет случайно почти наверняка Одна главная метрика, названная до запуска; остальные — только защитные
Правки на ходу На пятый день «чуть поправили» вариант B Данные до и после правки несравнимы, тест обнуляется Любое изменение варианта = перезапуск теста с нуля
Кривая рандомизация Группа A — Москва, группа B — регионы Сравниваются не версии, а разные аудитории Случайное распределение по стабильному идентификатору пользователя
Игнорирование защитных метрик Конверсия выросла — раскатываем! Заказов больше, но возвраты и отмены съели всю выгоду Заранее список метрик, ухудшение которых отменяет победу

Чек-лист перед запуском и перед решением

До запуска

  • Гипотеза сформулирована с причиной и ожидаемым размером эффекта
  • Главная метрика одна и записана до старта
  • Размер выборки и срок рассчитаны, срок кратен неделе
  • Определены защитные метрики и условия досрочной остановки по вреду
  • Рандомизация проверена A/A-тестом или сплит-валидацией

Перед решением

  • Тест отработал весь запланированный срок
  • Размеры групп совпадают с ожидаемыми (нет перекоса трафика)
  • Смотрим не только p-value, но и доверительный интервал
  • Эффект пересчитан в деньги по нижней границе интервала
  • Защитные метрики не ухудшились
  • Результат по сегментам объясним, а не просто «где-то нашлось»

Итог по нашему кейсу. Вариант B выигрывает относительных ( п.п., p = ), эффект сосредоточен на мобильных и логично объясняется сутью изменения. Решение: раскатывать на всех, а для десктопа формулировать и проверять отдельную гипотезу — там нынешняя правка ничего не дала.