В интернете кто–то неправ
Случайно выяснил, что существует непонимание того, что такое АБ–тест и как его проводить. Поэтому небольшая статья с базовыми принципами и примерами как делать не надо может быть полезна. Советы рассчитаны на читателя только начинающего знакомство с АБ–тестами и проект с небольшой аудиторией. Если у вас большая аудитория, то вы и так знаете как проводить тесты.
Мой опыт проведения АБ–тестов связан с мобильными приложениями, поэтому какая–то специфика может прорваться несмотря на намерения писать только о базовых вещах.
Определение
АБ–тест — это способ понять стал ли ваш продукт лучше при изменении его части. Скажем, у вас есть гипотеза, что какое–то изменение увеличит ключевую метрику продукта больше чем на 10%. Вы берёте новых пользователей и одной половине даёте контрольный вариант продукта, а другой — с реализованной гипотезой. Дожидаетесь пока разница между значениями метрики станет статистически достоверна, то есть не изменится при продолжении теста с вероятностью 90–95%. Как только результаты достоверны — оставляем победителя и запускаем следующий тест.
Зачем это вообще нужно?
— Я ведь знаю, что моя идея сделает продукт лучше. Ну, как минимум не хуже. Ну, в крайнем случаем случае ей будут пользоваться те, кому это действительно надо, а для остальных продукт останется тот же!
Так нам говорит наш внутренний голос. Ну, или по крайней мере говорил мне. И иногда он прав. А иногда — нет.
— Давайте выпустим изменение и посмотрим вырастут ли метрики!
Допустим вырастут. Но они могли вырасти из–за исправления креша в этом же обновлении, а не из–за нововведения. Такая ошибка оценки называется «false positive». Или метрики могли не измениться, или даже упасть, а хотя изменение на самом деле увеличило. Просто параллельно вышла реклама которая привела не только целевую, но и много нецелевой аудитории, которая быстро ушла, не заинтересовавшись продуктом. Это ошибка «false negative».
Причиной ошибки может быть большое количество факторов. И что самое пугающее — это непредсказуемость их появления и сила влияние не результат. Научиться предсказывать и оценивать искажающие факторы не представляется возможным. Так что выпуск изменений под девизом «мне повезёт!» скорее всего не приведёт к стабильному увеличению метрик продукта.
АБ–тесты нужны нам чтобы обеспечить проверяемый рост метрик продукта, который вызван именно улучшением продукта, а не внешними факторами или временным изменением аудитории.
Когда останавливать тест
Если через две недели значение тестовой вариации больше значения контрольной, то это ещё ничего не значит. Нам нужно получить достоверные результаты, то есть результаты которые с большой вероятностью не изменятся при продолжении измерений. Это можно сделать с помощью калькулятора:
Вводим данные о конверсии в базовой и тестовой вариации и получаем размер выборки для каждой вариации который позволит сказать, что вариации статистически достоверно различаются. Вероятность ошибки false negative 20%, ошибки false positive 5%.
Если в тесте приняло достаточное количество участников и тестовая вариация достоверно лучше контрольной, то тест можно считать завершённым, а изменение удачным.
АБ–тест цвета кнопок
Это пример который обычно используют для объяснения что такое АБ–тест. Этот пример хорош для объяснения, но на практике обычно не даёт значимого увеличения метрики. Потому что ваш продукт больше чем кнопка. Если, конечно, весь ваш трестируемый продукт не баннер.
Как и всякий инструмент, АБ–тест можно использовать неправильно, так что метрики проекта не будут расти, а усилия на их проведение будут тратиться. Поставьте дополнительное условие для тестов: изменение должно увеличить важную метрику продукта на 15%. Если эксперимент набрал достаточную выборку для определения разницы в 15%, но тестовый результат ниже необходимого, то возвращайтесь к контрольной вариации и ищите более дерзкую гипотезу. Так вы сможете быстро проверять действительно важные изменения, что важно на начальном этапе развития продукта.
И пару советов напоследок:
- делайте как можно меньше вариаций, это позволит уменьшить время проведения теста;
- по началу старайтесь не проверять конверсии, значение которых меньше 10% — на это потребуется много времени. Обычно к таким метрикам принадлежит такая важная как конверсия в платящего пользователя. Для неё проверяйте гипотезу, если вы уверены, что она принесёт существенно улучшение.
Послесловие
АБ–тест — очень полезный инструмент, который помогает нам не только когда гипотеза подтвердилась. Вся прелесть метода в том, что даже неположительный результат даёт нам новую информацию о продукте. Почему мы думали, что это изменение сработает, а оно не сработало? Возможно, наши представления о том, что нужно пользователям не совсем верны? Поиск ответов может привести вас к новым гипотезам и какая–то из них сработает.
Комментарии (25)
RPG18
19.03.2017 08:57как вы вообще обеспечиваете одновременно две версии одного ПО
Например через Feature Toggles
Psychosynthesis
20.03.2017 04:44На самом деле про A\B-тесты написано дофига всего.
Чего действительно немного, так это описания инструментария, с помощью которого можно развернуть подобное тестирование на готовом проекте.TimurGilfanov
20.03.2017 10:51А у вас мобильное приложение, сайт или что–то другое?
Psychosynthesis
20.03.2017 15:41Сайт. Без движка (HTML + JS)
TimurGilfanov
20.03.2017 15:50Наверняка есть готовые решения, но можно сделать и своими силами. Вам нужно написать код, который будет присваивать новому пользователю случайным образом тег вида «тест 1: вариация Х». У вас получится группы пользователей одинакового размера. Этот тег устанавливается как свойство пользователя в системе аналитики, которую вы используете. Дальше в самой системе делается отчёт с графиками ключевых метрик для пользователей из вариации А и Б.
Psychosynthesis
21.03.2017 19:50Писать код это прекрасно, конечно, но в моём случае хотелось бы какое-то готовое решение всё-таки, поскольку велосипедов я и так уже понаписал достаточно, как по мне.
VaalKIA
А почему вы начинаете вот с такого описания, а потом, как-то легко разделяете во времени первый продукт и второй? Если время другое, то и рынок другой, а значит никакого сопоставления не получится. Соотвественно вопрос, как вы вообще обеспечиваете одновременно две версии одного ПО да ещё и на новых пользователях?
mapron
Пользователи скачивают дистрибутив программы с сайта, 50% дается оригинальный инсталлятор, 50%- модифицированный. Ну или 1%, в зависимости от требований.
VaalKIA
Нормально так, выложили игрушку ММО, половина народу с одним бинарником, половина с другим… Или там ПО по работе с видео, и опаньки — ни документация ни гайды не совпадает с тем что пользователь видит в интерфейсе и у службы поддержки телефон горит.
Ну ок, прокатило, пользователи разными программами пользуются и часть решила купить условно бесплатную прогу, как узнать какие это были пользователи или. может они вообще старой версией пользовались до нового релиза?
RPG18
В случае с feature toggles бинарник один. У нас есть микросервис feature toggles, где мы можем включать/выключать фичу для конкретного пользователя.
У нас в пользовательском соглашении написано, что мы можем собирать и отсылать метрики. В метриках есть: идентификатор пользователя, версия продукта.
VaalKIA
То есть работает это всё только для постоянно находящихся в онлайне.
Например, есть программа, пусть будет VLC player с возможность её покупки, люди её качают, и на сайте потом кто-то решил купить, какие именно функции были у его бинарника активны, да фиг их знает, если покупка была на сайте, то есть связать конкретного покупателя и пользователя тут нельзя. Вернее, связать можно, если бы это были разные версии продукта и покупались бы разные, но отличались одной кнопкой, а пользователи точно знали что им нужно. Я вот к чему всё говорю.
RPG18
Как это вас с MMO на VLC переключило.
У нас есть еще device id. И возможность передавать любые параметры. Вызвать какой-нибудь GetUserName и передать в аналитику не составляет особого труда.
VaalKIA
Минуса за то, что вы не согласны с тем, что в разный период времени рынок — совршенно разный? Ну так посмотрите на Forex, к примеру.
avost
Вы уж определитесь что продаёте-то. Игрушки, видеоплееры или валюту. Как определитесь, так вам дадут соответствующий контексту ответ. Для другого контекста ответ будет другим. И да, для продажи валюты аб-тестирование, возможно, не подходит совсем. Такое тоже бывает.
VaalKIA
Я говрил о рынке, я ничем не торгую. Не зависимо от того, что вы продаёте, ситуация на рынке всегда разная, вы можете вчера продать одни товар, сегодня его же, но сегодня у людей зарплата и продажи будут отличатсья от вчерашнего дня, завтра в соседнем магазине закончился товар у конкурентов и продажи ещё выросли, а послезавтра доллар подскочил и ваш товар нафик уже никому не нужен. Если вы сначала подбиваете статистику по одному товару, потом по другому, то грош цена этой статистике, только продажи в один и тот же период времени покажут хорошую картину и вот это вот я должен на протяжении трёх комментов разжёвывать и получать за это минуса? Тут я должен поплакаться что не буду больше комментировать, но я буду, только желания вот совсем уже нет.
avost
Любой эксперимент можно поставить неправильно. Но зачем вы хотите поставить его именно неправильно?
VaalKIA
Три минуса за первый коммент, то есть нормально. Мы берём йогурт, хотим посмотреть можно ли его улучшить, добавляем клубнику. Потом продаём чистый йогурт в пятницу. когда народ на выходные затаривается — зашибись продажи — супер, всё посчтиали, теперь продаём вместо обычного только клубнику, опачки — продажи плохие, нафик эту клубнику и руки оторвать технологу. Это согласно оценке моего комментария. А подумать головой и согласиться, что продавать одновременно оба продукта и посмотреть статистику это не то же самое, что по очереди, тут нет, надо заминусить.
Antelle
Минусы не за это. Прочитайте хотя бы эту статью, даже в ней сказано, что в разное время тест проводить нельзя. Но почему-то с завидной регулярностью такой комментарий появляется к каждой статье про A/B. Надоело. За "подумать головой" отдельный минус.
VaalKIA
Именно поэтому мой первый комментарий заканчивался вопросом. Потому что любое ПО развивается инкрементно. Соответственно, вывод напрашивался сам собой, статистика собранная для версии 1.01, сравнивается со статистикой версии 1.02.
Цитирую:
Очевидно, что тут НЕ подразумевается одновременное существование двух версий.
Цитирую свой заминусованный вопрос:
Вы сами-то свою статью читали?
Нет, в комментариях объяснили как получается, что версий может быть две: просто делаем из пользователей дураков, мы им говорим что мы фишку сделали, а половина её не видит, а их друзья им говорят что они — лохи, потому что у них всё работает. Или же чел в документацию смотрит, а там нет вообще ни слова, что это работает так, оно всё подругому. а он за это деньги заплатил.
Хотя я не спорю, что идея здравая, сделать меню в котором чекбоксами переключать поведение и у половины пользователей, просто выставить по умолчанию другую настройку, да для примитивных опций реализовывать это слишком затратно, да и пользователю объяснять что это такое будет тяжело, потому что это не для него делалось, но в теории — да, изящное решение и всегда пользователя можно «отправить в конфиг». Ну и пусть у них и слжится впечатление, что настройки делали не очень умные люди, потому что там реальный мусор.
Второй момент разъяснили, что если человек пользовался какой-то программой, потом её удалил, и купил новую на сайте, то сопоставив ID компьютера, можно понять какую версию на нём тестировали, что привела к покупке. Вот только, как раз про это всё можно было рассказать в статье, а не лепить минусы человеку, который всё прочёл и культурно спросил то, что не понял.
Antelle
Нет. Где вы это нашли?
Очевидно, что этот текст в блоке "как делать не надо".
Никто не разделял, непонятно откуда это вы взяли.
Вы уверены, что она моя?
Причём тут дураки?
Cross-platform consistency очень важная часть A/B теста. Если вам так важна документация, учитывайте тест и в ней.
Как-то вы всё понимаете, хм, альтернативно.
VaalKIA
А ничего, что вот такая последовательность:
Подразумевает, что после этого банального поределения, нам расскажут что тут кто-то неправ? Ну соответствено, это определение, только как затравка к статье и было прочтено. А дальше — вода, где основной вопрос, в котором как раз нюансы того, что
улучшение продукта в ПО, связано с новым номером версии. И совсем не озвучивается ни кто тут неправ ни что делать с тем, что сменилась версия и люди обновлились все.
Невижу я тут никакой альтернатвности, улучшили ПО. народ выкчал новую версию, теперь статистика только за прошлый период, вот это и привело меня к вопросу.
Antelle
Отчасти согласен, автор не рассказал много чего:
Но всё же, о том, что варианты надо показывать в одно время, упомянуто было.
(написать статью что-ли...)
TimurGilfanov
Напишите. Про то как технически делается запуск не стал писать в посте для хаба «Управление». Всё же это уже относится к разработке. Не очень понял как связано юнит–тестирование и АБ–тестирование. Про остановку теста написал, но, видимо, вы опять же имеете ввиду какая это сделать технически.
Antelle
Testing unit, это не про unit-тест, это что считать для a/b теста его "пользователем", грубо говоря, кому показывать вариант: на один запрос, на сессию, на бизнесового пользователя, на отдел и так далее.
Я скорее имел в виду, всё сделать правильно с точки зрения бизнеса и статистики, чтобы и пользователи не страдали, и тесты работали. "Почему" более интересный вопрос, чем "как", имхо для Управления настолько же релевантен. Хотя да, некоторое понимание технических деталей тоже подразумевает.
avost
Только у вас в голове.
То есть вы не только статью не прочли, но и ответы на собственные вопросы, где вам уже раз пять всё объяснили? Поразительное упорство!