В интернете кто–то неправ


Случайно выяснил, что существует непонимание того, что такое АБ–тест и как его проводить. Поэтому небольшая статья с базовыми принципами и примерами как делать не надо может быть полезна. Советы рассчитаны на читателя только начинающего знакомство с АБ–тестами и проект с небольшой аудиторией. Если у вас большая аудитория, то вы и так знаете как проводить тесты.


Мой опыт проведения АБ–тестов связан с мобильными приложениями, поэтому какая–то специфика может прорваться несмотря на намерения писать только о базовых вещах.


Определение


АБ–тест — это способ понять стал ли ваш продукт лучше при изменении его части. Скажем, у вас есть гипотеза, что какое–то изменение увеличит ключевую метрику продукта больше чем на 10%. Вы берёте новых пользователей и одной половине даёте контрольный вариант продукта, а другой — с реализованной гипотезой. Дожидаетесь пока разница между значениями метрики станет статистически достоверна, то есть не изменится при продолжении теста с вероятностью 90–95%. Как только результаты достоверны — оставляем победителя и запускаем следующий тест.


Зачем это вообще нужно?


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


Так нам говорит наш внутренний голос. Ну, или по крайней мере говорил мне. И иногда он прав. А иногда — нет.


— Давайте выпустим изменение и посмотрим вырастут ли метрики!


Допустим вырастут. Но они могли вырасти из–за исправления креша в этом же обновлении, а не из–за нововведения. Такая ошибка оценки называется «false positive». Или метрики могли не измениться, или даже упасть, а хотя изменение на самом деле увеличило. Просто параллельно вышла реклама которая привела не только целевую, но и много нецелевой аудитории, которая быстро ушла, не заинтересовавшись продуктом. Это ошибка «false negative».


Причиной ошибки может быть большое количество факторов. И что самое пугающее — это непредсказуемость их появления и сила влияние не результат. Научиться предсказывать и оценивать искажающие факторы не представляется возможным. Так что выпуск изменений под девизом «мне повезёт!» скорее всего не приведёт к стабильному увеличению метрик продукта.


АБ–тесты нужны нам чтобы обеспечить проверяемый рост метрик продукта, который вызван именно улучшением продукта, а не внешними факторами или временным изменением аудитории.


Когда останавливать тест


Если через две недели значение тестовой вариации больше значения контрольной, то это ещё ничего не значит. Нам нужно получить достоверные результаты, то есть результаты которые с большой вероятностью не изменятся при продолжении измерений. Это можно сделать с помощью калькулятора:


image


Вводим данные о конверсии в базовой и тестовой вариации и получаем размер выборки для каждой вариации который позволит сказать, что вариации статистически достоверно различаются. Вероятность ошибки false negative 20%, ошибки false positive 5%.


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


АБ–тест цвета кнопок


Это пример который обычно используют для объяснения что такое АБ–тест. Этот пример хорош для объяснения, но на практике обычно не даёт значимого увеличения метрики. Потому что ваш продукт больше чем кнопка. Если, конечно, весь ваш трестируемый продукт не баннер.


Как и всякий инструмент, АБ–тест можно использовать неправильно, так что метрики проекта не будут расти, а усилия на их проведение будут тратиться. Поставьте дополнительное условие для тестов: изменение должно увеличить важную метрику продукта на 15%. Если эксперимент набрал достаточную выборку для определения разницы в 15%, но тестовый результат ниже необходимого, то возвращайтесь к контрольной вариации и ищите более дерзкую гипотезу. Так вы сможете быстро проверять действительно важные изменения, что важно на начальном этапе развития продукта.


И пару советов напоследок:


  • делайте как можно меньше вариаций, это позволит уменьшить время проведения теста;
  • по началу старайтесь не проверять конверсии, значение которых меньше 10% — на это потребуется много времени. Обычно к таким метрикам принадлежит такая важная как конверсия в платящего пользователя. Для неё проверяйте гипотезу, если вы уверены, что она принесёт существенно улучшение.

Послесловие


АБ–тест — очень полезный инструмент, который помогает нам не только когда гипотеза подтвердилась. Вся прелесть метода в том, что даже неположительный результат даёт нам новую информацию о продукте. Почему мы думали, что это изменение сработает, а оно не сработало? Возможно, наши представления о том, что нужно пользователям не совсем верны? Поиск ответов может привести вас к новым гипотезам и какая–то из них сработает.

Поделиться с друзьями
-->

Комментарии (25)


  1. VaalKIA
    19.03.2017 07:22
    -4

    одной половине даёте контрольный вариант продукта, а другой — с реализованной гипотезой

    А почему вы начинаете вот с такого описания, а потом, как-то легко разделяете во времени первый продукт и второй? Если время другое, то и рынок другой, а значит никакого сопоставления не получится. Соотвественно вопрос, как вы вообще обеспечиваете одновременно две версии одного ПО да ещё и на новых пользователях?


    1. mapron
      19.03.2017 08:54
      +2

      Пользователи скачивают дистрибутив программы с сайта, 50% дается оригинальный инсталлятор, 50%- модифицированный. Ну или 1%, в зависимости от требований.


      1. VaalKIA
        19.03.2017 09:06
        -3

        Нормально так, выложили игрушку ММО, половина народу с одним бинарником, половина с другим… Или там ПО по работе с видео, и опаньки — ни документация ни гайды не совпадает с тем что пользователь видит в интерфейсе и у службы поддержки телефон горит.
        Ну ок, прокатило, пользователи разными программами пользуются и часть решила купить условно бесплатную прогу, как узнать какие это были пользователи или. может они вообще старой версией пользовались до нового релиза?


        1. RPG18
          19.03.2017 09:18
          +1

          В случае с feature toggles бинарник один. У нас есть микросервис feature toggles, где мы можем включать/выключать фичу для конкретного пользователя.


          может они вообще старой версией пользовались до нового релиза?

          У нас в пользовательском соглашении написано, что мы можем собирать и отсылать метрики. В метриках есть: идентификатор пользователя, версия продукта.


          1. VaalKIA
            19.03.2017 09:33

            То есть работает это всё только для постоянно находящихся в онлайне.
            Например, есть программа, пусть будет VLC player с возможность её покупки, люди её качают, и на сайте потом кто-то решил купить, какие именно функции были у его бинарника активны, да фиг их знает, если покупка была на сайте, то есть связать конкретного покупателя и пользователя тут нельзя. Вернее, связать можно, если бы это были разные версии продукта и покупались бы разные, но отличались одной кнопкой, а пользователи точно знали что им нужно. Я вот к чему всё говорю.


            1. RPG18
              19.03.2017 10:05
              +2

              Как это вас с MMO на VLC переключило.


              какие именно функции были у его бинарника активны, да фиг их знает

              У нас есть еще device id. И возможность передавать любые параметры. Вызвать какой-нибудь GetUserName и передать в аналитику не составляет особого труда.


      1. VaalKIA
        19.03.2017 09:58
        -5

        Минуса за то, что вы не согласны с тем, что в разный период времени рынок — совршенно разный? Ну так посмотрите на Forex, к примеру.


        1. avost
          19.03.2017 11:12
          +1

          Вы уж определитесь что продаёте-то. Игрушки, видеоплееры или валюту. Как определитесь, так вам дадут соответствующий контексту ответ. Для другого контекста ответ будет другим. И да, для продажи валюты аб-тестирование, возможно, не подходит совсем. Такое тоже бывает.


          1. VaalKIA
            19.03.2017 11:54
            -1

            Я говрил о рынке, я ничем не торгую. Не зависимо от того, что вы продаёте, ситуация на рынке всегда разная, вы можете вчера продать одни товар, сегодня его же, но сегодня у людей зарплата и продажи будут отличатсья от вчерашнего дня, завтра в соседнем магазине закончился товар у конкурентов и продажи ещё выросли, а послезавтра доллар подскочил и ваш товар нафик уже никому не нужен. Если вы сначала подбиваете статистику по одному товару, потом по другому, то грош цена этой статистике, только продажи в один и тот же период времени покажут хорошую картину и вот это вот я должен на протяжении трёх комментов разжёвывать и получать за это минуса? Тут я должен поплакаться что не буду больше комментировать, но я буду, только желания вот совсем уже нет.


            1. avost
              19.03.2017 14:20
              +2

              Любой эксперимент можно поставить неправильно. Но зачем вы хотите поставить его именно неправильно?


    1. VaalKIA
      19.03.2017 12:03
      -3

      Три минуса за первый коммент, то есть нормально. Мы берём йогурт, хотим посмотреть можно ли его улучшить, добавляем клубнику. Потом продаём чистый йогурт в пятницу. когда народ на выходные затаривается — зашибись продажи — супер, всё посчтиали, теперь продаём вместо обычного только клубнику, опачки — продажи плохие, нафик эту клубнику и руки оторвать технологу. Это согласно оценке моего комментария. А подумать головой и согласиться, что продавать одновременно оба продукта и посмотреть статистику это не то же самое, что по очереди, тут нет, надо заминусить.


      1. Antelle
        19.03.2017 12:42
        +6

        Минусы не за это. Прочитайте хотя бы эту статью, даже в ней сказано, что в разное время тест проводить нельзя. Но почему-то с завидной регулярностью такой комментарий появляется к каждой статье про A/B. Надоело. За "подумать головой" отдельный минус.


        1. VaalKIA
          19.03.2017 13:07
          -2

          Именно поэтому мой первый комментарий заканчивался вопросом. Потому что любое ПО развивается инкрементно. Соответственно, вывод напрашивался сам собой, статистика собранная для версии 1.01, сравнивается со статистикой версии 1.02.
          Цитирую:

          — Давайте выпустим изменение и посмотрим вырастут ли метрики!

          Так что выпуск изменений под девизом «мне повезёт!» скорее всего не приведёт к стабильному увеличению метрик продукта.

          Очевидно, что тут НЕ подразумевается одновременное существование двух версий.

          Цитирую свой заминусованный вопрос:
          А почему вы начинаете вот с такого описания, а потом, как-то легко разделяете во времени первый продукт и второй?

          Вы сами-то свою статью читали?

          Нет, в комментариях объяснили как получается, что версий может быть две: просто делаем из пользователей дураков, мы им говорим что мы фишку сделали, а половина её не видит, а их друзья им говорят что они — лохи, потому что у них всё работает. Или же чел в документацию смотрит, а там нет вообще ни слова, что это работает так, оно всё подругому. а он за это деньги заплатил.

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

          Второй момент разъяснили, что если человек пользовался какой-то программой, потом её удалил, и купил новую на сайте, то сопоставив ID компьютера, можно понять какую версию на нём тестировали, что привела к покупке. Вот только, как раз про это всё можно было рассказать в статье, а не лепить минусы человеку, который всё прочёл и культурно спросил то, что не понял.


          1. Antelle
            19.03.2017 13:15
            +1

            статистика собанная для версии 1.01, сравнивается со статистикой версии 1.02.

            Нет. Где вы это нашли?


            Давайте выпустим изменение и посмотрим вырастут ли метрики!
            Очевидно, что тут НЕ подразумевается одновременное существование двух версий.

            Очевидно, что этот текст в блоке "как делать не надо".


            как-то легко разделяете во времени первый продукт и второй

            Никто не разделял, непонятно откуда это вы взяли.


            свою статью

            Вы уверены, что она моя?


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

            Причём тут дураки?


            чел в документацию смотрит, а там нет вообще ни слова

            Cross-platform consistency очень важная часть A/B теста. Если вам так важна документация, учитывайте тест и в ней.
            Как-то вы всё понимаете, хм, альтернативно.


            1. VaalKIA
              19.03.2017 13:24
              -1

              Очевидно, что этот текст в блоке «как делать не надо».

              Как-то вы всё понимаете, хм, альтернативно.

              А ничего, что вот такая последовательность:
              В интернете кто–то неправ

              Определение

              Подразумевает, что после этого банального поределения, нам расскажут что тут кто-то неправ? Ну соответствено, это определение, только как затравка к статье и было прочтено. А дальше — вода, где основной вопрос, в котором как раз нюансы того, что
              АБ–тесты нужны нам чтобы обеспечить проверяемый рост метрик продукта, который вызван именно улучшением продукта

              улучшение продукта в ПО, связано с новым номером версии. И совсем не озвучивается ни кто тут неправ ни что делать с тем, что сменилась версия и люди обновлились все.

              Невижу я тут никакой альтернатвности, улучшили ПО. народ выкчал новую версию, теперь статистика только за прошлый период, вот это и привело меня к вопросу.


              1. Antelle
                19.03.2017 13:34

                Отчасти согласен, автор не рассказал много чего:


                • что такое feature switch и почему это не номер версии
                • как должен включаться тест
                • как останавливать тест или вариант
                • что такое юнит тестирования и как его выбирать (чтобы не было вопросов "почему в одном офисе два человека видят разные версии" или "почему на компе одно, на планшете другое")
                • как распределять варианты между юнитами тестирования
                • что такое минимальный цикл и почему он важен

                Но всё же, о том, что варианты надо показывать в одно время, упомянуто было.
                (написать статью что-ли...)


                1. TimurGilfanov
                  19.03.2017 14:23

                  Напишите. Про то как технически делается запуск не стал писать в посте для хаба «Управление». Всё же это уже относится к разработке. Не очень понял как связано юнит–тестирование и АБ–тестирование. Про остановку теста написал, но, видимо, вы опять же имеете ввиду какая это сделать технически.


                  1. Antelle
                    19.03.2017 14:34

                    Testing unit, это не про unit-тест, это что считать для a/b теста его "пользователем", грубо говоря, кому показывать вариант: на один запрос, на сессию, на бизнесового пользователя, на отдел и так далее.
                    Я скорее имел в виду, всё сделать правильно с точки зрения бизнеса и статистики, чтобы и пользователи не страдали, и тесты работали. "Почему" более интересный вопрос, чем "как", имхо для Управления настолько же релевантен. Хотя да, некоторое понимание технических деталей тоже подразумевает.


              1. avost
                20.03.2017 00:28
                +1

                улучшение продукта в ПО, связано с новым номером версии.

                Только у вас в голове.


                Невижу я тут никакой альтернатвности, улучшили ПО. народ выкчал новую версию, теперь статистика только за прошлый период, вот это и привело меня к вопросу.

                То есть вы не только статью не прочли, но и ответы на собственные вопросы, где вам уже раз пять всё объяснили? Поразительное упорство!


  1. RPG18
    19.03.2017 08:57

    как вы вообще обеспечиваете одновременно две версии одного ПО

    Например через Feature Toggles


  1. Psychosynthesis
    20.03.2017 04:44

    На самом деле про A\B-тесты написано дофига всего.

    Чего действительно немного, так это описания инструментария, с помощью которого можно развернуть подобное тестирование на готовом проекте.


    1. TimurGilfanov
      20.03.2017 10:51

      А у вас мобильное приложение, сайт или что–то другое?


      1. Psychosynthesis
        20.03.2017 15:41

        Сайт. Без движка (HTML + JS)


        1. TimurGilfanov
          20.03.2017 15:50

          Наверняка есть готовые решения, но можно сделать и своими силами. Вам нужно написать код, который будет присваивать новому пользователю случайным образом тег вида «тест 1: вариация Х». У вас получится группы пользователей одинакового размера. Этот тег устанавливается как свойство пользователя в системе аналитики, которую вы используете. Дальше в самой системе делается отчёт с графиками ключевых метрик для пользователей из вариации А и Б.


          1. Psychosynthesis
            21.03.2017 19:50

            Писать код это прекрасно, конечно, но в моём случае хотелось бы какое-то готовое решение всё-таки, поскольку велосипедов я и так уже понаписал достаточно, как по мне.