Например, использование тестирования через google analytics не подошло, т.к. мы для ведения статистики используем яндекс.метрику и встраивать еще одну аналитическую систему в сайт не хочется. И к тому же я так понял, что с гуглом есть проблема при тестировании динамических страниц или каких-то их элементов.
Другие сервисы, типа abtest.ru (который, кстати, почему-то не работает) или подобных ему, тоже не подходят, т.к. там можно изменить лишь внешний вид чего-либо. А нам, например, нужно протестировать сайт на предмет вывода/не вывода той или иной информации из базы (ну как пример, выводить ли краткое описание товара в списке товаров или еще выводить спецификации и т.д.).
Решил попробовать реализовать А/Б-тестирование собственными силами, дописав в сайт немного php-кода (интернет-магазин самописный, на php).
Необходимо проверить как будет действовать на конверсию изменение того или иного элемента сайта. Т.е. всех посетителей сайта условно делим на «посетителей-А» и «посетителей-Б». Делим естественно поровну, т.е. каждый первый – это «А», каждый второй – это «Б». В зависимости от того «А» это или «Б», показываем ему соответствующий вариант элемента сайта. По окончании фиксируем оформил ли посетитель заказ или нет
Код описывать не буду, а лишь кратко поясню что и как делал:
1. При входе на сайт каждому пользователю в сессию (скажем $_SESSION[‘split’]) записывается значение «А» или «Б». Каждому первому – «А», каждому второму – «Б». Для этого в базе данных имеется специальный «счетчик последнего посетителя», который содержит данные о последнем зашедшем на сайт посетителе. Т.е., зашел посетитель на сайт, ему в $_SESSION[‘split’] записали значение «А» и в базе счетчик тоже изменился на «А». При заходе следующего посетителя на сайт, скрипт берет из базы значение счетчика, и если оно = «А», то посетителю в сессию записывается «Б» и наоборот. Т.е. таким образом, обеспечивается чередование пользователей. Кстати, вопрос: может кто подкажет как реализовать чередуемость посетителей без обращения к БД, как узнать какое значение присваивать посетителю «А» или «Б»? Ведь для этого нужно знать какое значение было у предыдущего. Или же можно не париться и просто назначать рандомно 1-ый или 2-ой вариант и этим рандомом? Разделятся ли в этом случае посетители поровну?
2. После того как в сессию пользователю записали значение «А» или «Б», то теперь в зависимости от этого значения, пользователю показывается либо первый либо второй вариант тестируемого элемента. Т.е. зашел человек на страницу где находится тестируемый элемент, сразу же осуществляется проверка что записано в $_SESSION[‘split’] и в зависимости от результата показывается 1-ый или 2-ой вариант.
3. Сохранение результатов. Для этого в базе имеются счетчики для подсчета результатов (для подсчета количества заказов «посетителями-А» и «посетителями-Б». Т.е. для каждого из двух вариантов «А» или «Б» ведется свой счетчик. Если посетитель у которого в $_SESSION[‘split’] сидит значение «А» оформил заказ, то счетчик «А» увеличивается на 1. Если посетитель «Б» оформил заказ, то счетчик «Б» увеличивается на 1.
По сути получается довольно простой код. Но это и пугает. Кажется что я не учел какие-то тонкости и нюансы процесса А/Б тестирования и все гораздо сложнее и глубже. Ведь возможны различные спорные ситуации. Например, как учитывать посетителей, которые зашли на сайт, затем сайт покинули и снова вернулись? Показывать ли им при повторном посещении сайта тот вариант тестируемого элемента, который им был показан при первом посещении, или же заново учитывать этого посетителя в очереди чередования. И тут уже встает вопрос использования не механизма сессий, а механизма cookies.
Я написал этот пост чтобы поделиться своей реализацией простейшего А/Б – тестирования и заодно выслушать мнения специалистов по этому поводу. Может будут какие подсказки, замечания и т.д.
ссылка на оригинал статьи http://habrahabr.ru/post/177959/
Добавить комментарий