Неплохой сборник советов (английский) про то, как правильно проводить A/B тесты.
A/B тесты это очень мощный инструмент, который может пролить свет на многие неопределенности. Но как любой мощный инструмент его очень легко использовать неправильно.
Самые важные мысли из статьи, которым одновременно просто следовать:
a) Перед проведением теста подсчитать его длительность (размер каждого сегмента).
Вполне возможно будет так, что наблюдаемое нужное событие достаточно редко, а объем трафик так мал, что эксперимент будет идти много месяцев или лет.
Скорее всего в этом случае запускать A/B эксперимент не имеет смысла (имеет он смысл тогда только если вы ожидаете действительно сильное изменение).
Калькуляторов длительности A/B тестов много. Я использую вот этот, но их много разных.
б) Включать в тест только людей, которые задеты изменением.
Это уменьшает “шум” и увеличивает шанс того, что изменение будет обнаружено. В статье приводят два примера.
- Если например мы тестируем изменение внешнего вида поисковой страницы, то имеет смысл смотреть только на людей, которые посетили эту страницу (обычную или измененную) и только на их события. Причем событие конверсии надо трэкать после посещения страницы. Иначе покупатель придет на сайт, купит что-то и только потом зайдет на новую страницу поиска — мы ошибочно посчитаем, что новая страница помогла (а это не так).
- Другой пример: допустим мы хотим потестировать новый тип промо: бесплатная доставка при заказе от $25, когда обычно мы ее предлагаем от $35. В этом случае в эксперимент должны попасть только пользователи с корзинами от $25 до $35. Ведь только у них вид корзины будет разный в контрольной и тестовых группах.
в) В процессе тестирования нужно минимизировать ошибки первого рода: false positive (“ложная тревога”, нашли связь/отличие, которой на самом деле не существует).
Для этого нужно как можно меньше “крутить” данные разными способоми. Минимизировать количество отдельных “мини-экспериментов” в рамках A/B теста. То есть:
- Выбрать одну метрику и мерять только ее.
- Не останавливать эксперимент раньше и не держать его больше запланированного.
- Запускать только два варианта.
- Не сегментировать пользователей после эксперимента (“тест не значим, но давайте выберем только часть пользователей теста, например из одного города, и подсчитаем данные только для них”).
Каждый такой “срез” это как-бы мини-эксперимент сам по себе и чем их больше — тем больше шанс увидеть связь/подтвердить гипотезу (“тестовая страница работает лучше”) там, где ее на самом деле нет / гипотеза не верна.
Я про это писал и делал модель в посте про Десять тысяч A/B тестов.
г) Проверять на равное распределение сегментов.
Пользователи должны быть распределены по сегментам примерно 50 на 50. Если распределение другое — скорее всего в тесте ошибка и ему нельзя доверять.
Хорошие инструменты для проверки результатов тестов, типа AB Testguide, сами об этом предупредят.
д) Осторожно выпускать штуки, которые не показали в тестах никаких изменений.
Если A/B тест не нашел влияния изменения, это не значит, что влияния нет. Возможно оно есть (положительное или отрицательное), просто слишком мало, чтобы тест его нашел.
Поэтому есть опасность, что постоянный выпуск штук, которые не показывают изменений, могут привести к накоплению негативных эффектов.
Имеет смысл оценивать такое “нейтральное” изменение критически и с помощью здравого смысла — может ли оно повредить? Полезно ли оно? Стоит ли рискнуть тут?