Самая дорогая ошибка в тестировании выглядит безобидно: вы открываете отчет, видите у варианта B заветные 95% значимости и выключаете тест. Победитель найден, можно катить на всех. Через месяц прирост конверсии, который вы себе записали, куда-то исчезает, а бюджет уже перераспределен под решение, которого не было.
Момент остановки решает не меньше, чем сама гипотеза. Остановите тест слишком рано - получите ложного победителя и масштабируете пустышку. Передержите - сожжете трафик и упустите время. Ниже разберем, когда тест можно выключать, а когда цифра 95% на экране еще ничего не значит. Как читать сам результат, доверительный интервал и отличать истинную победу от случайной, я разбираю в отдельной статье про чтение A/B-теста, здесь речь только про точку остановки.
Представьте, что вариант B на самом деле ничем не лучше A: разницы между ними нет. Тест с порогом значимости 95% устроен так, что при честной остановке в заранее назначенной точке он ошибочно покажет победу B примерно в 5 случаях из 100. Это плата за статистику, ее закладывают заранее и осознанно.
Проблема начинается, когда вы смотрите на результат каждый день и выключаете тест в ту минуту, когда линия впервые пересекла 95%. Показатель конверсии скачет вверх-вниз от случайных колебаний, особенно на малых числах в первые дни. Чем чаще вы заглядываете в отчет с намерением остановиться, тем больше у этих колебаний попыток случайно задеть порог.
Заявленные 5% при таком подходе перестают действовать. Каждая проверка с остановкой по первому пересечению - дополнительный шанс для случайности выскочить за черту, и суммарная вероятность ложной победы складывается, кратно превышая ту, на которую вы рассчитывали. Это известный эффект подглядывания (peeking). Из-за него платформы вроде Optimizely в свое время перешли на последовательные методы (sequential testing) - расчеты, которые честно учитывают многократную проверку и не наказывают за частые взгляды в отчет.
На практике это выглядит так. Маркетолог запускает тест в понедельник и заходит в отчет каждое утро. В среду вариант B впереди, но значимость держится на 70%. В четверг утром выскакивает 96%, и тест выключают, не дожидаясь расчетной выборки. Через две недели после выката на всю аудиторию конверсия садится обратно к старому уровню. В расчете значимости никто не ошибся, ошиблись в моменте: тот четверговый пик был случайным колебанием, пойманным в удачную минуту. Если бы тест дошел до набранной выборки, линия успела бы вернуться к фактическому положению дел. Эффект усиливается, когда вариантов много и проверок много: каждое лишнее сравнение и каждый лишний взгляд дают случайности новые шансы выскочить за порог.
Смотреть на тест можно сколько угодно. Нельзя выключать его по факту первого пересечения порога. Точка остановки задается не текущей цифрой на экране, а двумя вещами заранее: набранным размером выборки и пройденной длительностью. Разберем обе.
Делюсь практикой и разборами по performance‑маркетингуРазмер выборки - это не то число посетителей, которое накопилось к моменту, когда вам надоело ждать. Его считают до старта теста по четырем входным параметрам:
Эти четыре числа загоняют в калькулятор размера выборки (их много, бесплатных, ищутся по запросу «sample size calculator»). На выходе - сколько посетителей и конверсий нужно набрать на каждый вариант, чтобы выводу можно было верить. Вот это число и есть точка остановки по объему данных.
Условный пример, чтобы число стало осязаемым. Лендинг в Ереване дает базовую конверсию 3%. Вы хотите уметь ловить прирост хотя бы до 3,6% - относительный MDE в 20%. При мощности 80% и значимости 95% калькулятор попросит порядка нескольких тысяч посетителей на каждый вариант (точная цифра зависит от калькулятора и формулы). Захотите ловить прирост поменьше, до 3,3% - и требуемая выборка вырастает в несколько раз, потому что мелкую разницу труднее отделить от случайных колебаний.
Отсюда частая путаница с единицами. Прирост «на 20%» от базы 3% означает плюс 0,6 процентного пункта, до 3,6%. Это не то же самое, что «прирост на 20 процентных пунктов». Зафиксируйте, в каких единицах задана цель, до запуска: от этого напрямую зависит, какую выборку вам считать.
Логика тут простая. Слишком маленькая выборка дает ненадежный результат: разница между вариантами тонет в случайных колебаниях. Слишком большая выжигает трафик и время впустую, когда вывод давно можно было сделать. Расчетное число - компромисс между этими крайностями, и подбирать его на ходу под желаемый итог нельзя. Иначе вы не тестируете гипотезу, а подгоняете данные под уже принятое решение.
Отдельно стоит честно выбрать MDE до запуска. Чем меньший эффект вы хотите ловить, тем дольше тест. Если бизнес не заметит разницы между приростом конверсии в 1% и 2%, не закладывайте такую чувствительность - переплатите трафиком за точность, которая никому не нужна.
Допустим, нужное число набралось быстро, за три-четыре дня. Останавливать все равно рано. Поведение посетителей меняется по дням недели, и срез за неполную неделю врет.
В будни и выходные конверсия разная. У B2B-проектов она проседает в субботу и воскресенье, у части e-commerce наоборот - выходные дают пик. Если тест прожил только будни, вы сравниваете вариант A, который крутился во вторник, с поведением аудитории, которого в выходные уже не будет. Тест должен накрыть хотя бы один полный недельный цикл, надежнее - два. Это снимает перекос по дням недели и дает сопоставимые условия обоим вариантам.
Дни недели - не единственный перекос. По циклу гуляет и состав трафика: в один день льется реклама, в другой идут органика и прямые заходы, в третий проходит рассылка. Аудитория из платного канала ведет себя иначе, чем органическая. Если выборка набралась за два дня на пике рекламной кампании, она перекошена: данных формально много, а для выводов их недостаточно, потому что органики и постоянных посетителей в ней почти нет. Полный цикл выравнивает и это - за неделю-две через тест проходит обычный для проекта набор источников, а не случайный его срез. Вывод по сбалансированной выборке переносится на будущее, по перекошенной перенести нельзя.
Второй повод не торопиться - эффект новизны (novelty effect). У бренда с лояльной аудиторией заметное изменение поднимает реакцию в первые дни, поскольку постоянные посетители замечают новое и реагируют на сам факт перемены. Через неделю-две интерес оседает, и вариант возвращается к своему обычному уровню. Остановите тест на пике новизны - запишете в победу временный всплеск, которого в спокойном режиме не будет.
Здесь работает та же арифметика, что в недельной юнит-экономике. Условный пример: показатель, посчитанный на 500 наблюдениях, скачет на несколько процентов от недели к неделе - выборка мала, погрешность велика. Делать по такому срезу вывод о разнице между вариантами нельзя: погрешность съедает весь эффект, который вы пытаетесь измерить. Стабильную картину дает только месяц-другой ровных данных, и в тесте принцип тот же.
Итог по длительности: тест держат до выполнения двух условий сразу - набрана расчетная выборка и пройдены полные циклы. Сработало только одно из двух - ждем дальше.
Чем больше вариантов вы запускаете одновременно, тем дольше до остановки: трафик делится между ними, и каждый набирает свою выборку медленнее.
Условный расчет показывает масштаб. Сто тысяч посетителей на двух вариантах дают по 50 тысяч на каждый - этого хватает с запасом. Те же сто тысяч на схеме «три элемента по три варианта» дробятся на 27 комбинаций примерно по 3 700 человек, и на таких числах надежного вывода уже не получить. Сетка четыре на четыре режет трафик на 256 ячеек по 400 посетителей - такой тест не закончится никогда.
Отсюда два следствия для остановки. Первое: многовариантные тесты требуют кратно больше трафика и времени, закладывайте это сразу, а не удивляйтесь потом, почему за месяц ничего не сошлось. Второе: при низком трафике вместо запуска ABCD одним заходом берут поочередное тестирование пар. Сравнили A и B, дождались выборки, победитель стал контролем для следующей пары. По календарю дольше, но каждая пара честно набирает нужный объем, а не размазывает его по десяткам ячеек, где не сойдется ничего.
Несколько A/B-тестов одновременно запускать можно, но при одном условии: их изменения не пересекаются. Тест заголовка на главной и тест формы на странице контактов друг другу не мешают - разные страницы, разные элементы. А два теста на одном экране, которые оба трогают первый блок, искажают результаты обоих: посетитель попадает в комбинацию вариантов, которую ни один тест не закладывал, и непонятно, чей эффект вы измеряете.
Для момента остановки вывод такой: прежде чем доверять выключению теста, проверьте, что в его зоне не крутится второй эксперимент с конфликтующими правками. Если крутится - набранная значимость ненадежна, в данные подмешан чужой эффект. Разводите тесты по разным страницам и аудиториям либо запускайте их по очереди. На малом трафике очередь предпочтительнее в любом случае: один чистый тест за раз доходит до выборки быстрее, чем два смазанных параллельных.
Бывает наоборот: выборка набрана, недели прошли, а тест болтается на 80-90% значимости и не дотягивает до порога. Это честный сигнал, а не повод ждать еще месяц в надежде, что само дозреет. Варианты действий:
Полезный нижний порог на практике: пока на вариант не набралось хотя бы 50 конверсий, выводы делать рано, сколько бы процентов значимости ни рисовал калькулятор. На горстке конверсий показатель скачет от случайности, и красивая цифра на экране ничего не гарантирует. Планку значимости при этом держите не ниже 90%, а 95% надежнее. Эти ориентиры не отменяют расчет выборки - ее все равно считают заранее по четырем параметрам. Но они отсекают совсем сырые остановки, когда конверсий набралось два десятка, тест идет третий день, а цифра уже соблазняет нажать стоп. Если и 50 конверсий копятся неделями, это снова разговор про слабый трафик и крупные гипотезы из списка выше.
У длительности есть и верхняя граница. Тест, растянутый на два-три месяца, набирает собственные проблемы. Посетители чистят куки и при повторном визите попадают в другой вариант, ломая чистоту разбивки. Накладывается сезонность. Меняется состав трафика: рекламные кампании, источники, акции. Плюс все это время вы не выкатываете изменение, которое могло бы уже работать и приносить деньги. Поэтому окно остановки двустороннее: не короче полных циклов и расчетной выборки, но и не бесконечное.
Отдельный случай - когда вам по делу нужен постоянный мониторинг показателя, а не разовый тест с финишной чертой. Для этого есть свои подходы: последовательные методы (sequential testing) и байесовские модели (Bayesian), рассчитанные на регулярную проверку без раздувания доли ошибок. Классический тест с фиксированным горизонтом для непрерывного наблюдения не подходит - его и ломает подглядывание.
Перед тем как зафиксировать победителя и выкатить его на всех, пройдитесь по списку. Останавливать тест стоит, когда закрыты все пункты сразу:
Хоть один пункт открыт - выводу верить рано. Закрыты все - выключайте и катите, дальше работает отдельная статистика чтения результата.
Условный пример цены ошибки. Магазин в Бишкеке тестирует новую кнопку оформления заказа, на четвертый день видит плюс 8% к конверсии и значимость 95%, выключает тест и катит вариант на всех. Прироста в 8% на деле не было - был всплеск выходного дня, попавший в недонабранную выборку. Фактическая конверсия не сдвинулась, но в отчете теперь значится победа, бюджет на трафик пересчитан под завышенную цифру, а следующая гипотеза строится на ложной базе. Дорого обходится не сам тест, он почти ничего не стоил, а цепочка решений, которую на эту цифру повесили.
Дисциплина остановки - это про деньги, а не про статистику ради статистики. Ложный победитель, выкаченный на сто процентов, масштабирует изменение, которое ничего не дает или вредит, и заодно портит ваше следующее решение по бюджету: вы поверили в эффект, которого нет. Как прочитать готовый результат и доверительный интервал - в статье про чтение A/B-теста. Как встроить тест в полный цикл от гипотезы до прироста конверсии - в материале про CRO от гипотезы к результату.
Огромная видимая разница в первые дни идет либо от эффекта новизны, либо от случайных колебаний на малых числах. Дайте тесту набрать расчетную выборку и пройти хотя бы один недельный цикл. Если разница держится и после этого - останавливайте. Ранняя остановка на громком старте ловит всплеск, а не фактический рост.
Жесткой цифры нет, длительность зависит от трафика и размера эффекта. Ориентир для проекта со средним трафиком - от одной-двух недель до месяца. Привязка идет к набранной выборке и пройденным циклам, а календарь вторичен. На низком трафике или при мелком ожидаемом эффекте тест идет дольше.
Размер выборки - это число посетителей и конверсий на каждый вариант, которое нужно набрать для надежного вывода. Его считают до запуска по четырем параметрам: базовая конверсия, минимальный различимый эффект, статистическая мощность и уровень значимости. Бесплатных калькуляторов много, ищите по запросу «sample size calculator».
Сверьтесь с планом. Если выборка набрана и циклы пройдены - 95% можно доверять в заложенных рамках, где 5% остаются на ошибку. Если же порог выскочил на третий день при недоборе выборки, это с высокой вероятностью подглядывание. Дайте тесту дойти до расчетной точки и посмотрите, держится ли результат.
Смотреть можно. Нельзя останавливать тест по первому дню, когда показатель пересек порог. Каждая такая проверка с готовностью выключить тест - дополнительный шанс для случайных колебаний задеть черту, и суммарная вероятность ложной победы растет с числом проверок. Останавливайте в расчетной точке или используйте методы, рассчитанные на постоянный мониторинг.