Перейти к содержанию

Программируемый тест

Принцип работы

Сплит-тестирование(или АБ тестирование) --- это проверка, какой из двух или более вариантов интерфейса (или какого-либо взаимодействия с пользователем) приносит больше прибыли. Тестировать можно фразы, внешний вид элементов, их расположение, и даже целиком разные версии сайта.

Подключение

1) Скачайте файл (правая кнопка мыши, "Сохранить как") Программируемый тест и поместите его в любую папку на сервере 2) Создайте файл tests.php, в котором будет список всех ваших АБ тестов, и поместите его в ту же самую папку, где расположен ABTest.php

Пример файла tests.php:

<?php

return
array(
    array(
        'id'        => 'ab_form_color', // Название кампании АБ тестирования, с которым она будет показана в ROIstat
        'variants'  => array(
            array( 'id' => 'dark'),  // Название варианта, с которым он будет показан в ROIstat
            array( 'id' => 'blue'),  // Количество вариантов неограничено
        ),
    ),
    array(
        'id'        => 'ab_main_title', // Количество кампаний неограничено
        'variants'  => array(
            array( 'id' => 'small'),
            array( 'id' => 'big'),
        ),
    ),
);

3) В начале файла, отдающего страницу, подключите библиотеку для АБ тестирования:

<?php

require_once __DIR__ . '/ABTest.php'; // Путь до файла ABTest.php

Важно: если поместить этот код не в начало, то возможны ошибки, в случае, если выше будет находиться какой-либо php код, выводящий что-либо на страницу.

Одностраничный сайт

4) Например, необходимо оценить изменения, которые произведет замена заголовка на сайте. В этом случае:

<?php require_once __DIR__ . '/ABTest.php'; ?> <!-- Подключение библиотеки -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">

...

<div class="div1">
  <!-- Название кампании и вариант из tests.php -->
  <?php if (ABTest::instance()->getTestValue('ab_title') === 'old'): ?>
    <h2>Старый заголовок!<h2>
  <?php else: ?>
    <h2>Новый заголовок!<h2>
  <?php endif; ?>
</div>

Многостраничный сайт

5) Если требуется проводить разные тесты на разных страницах, все тесты по умолчанию помечаем как неактивные. В tests.php устанавливаем поле 'active' => false:

<?php

return
array(
    array(
        'id'        => 'ab_title',
        'active' => false, //  <---
        'variants'  => array(
            array( 'id' => 'old'),
            array( 'id' => 'new'),
            array( 'id' => 'newest'),
        ),
    ),
);

6) На каждой странице активируем нужные тесты вручную:

<?php

// Поместите эти строчки в начало страницы
define('ROISTAT_AB_AUTO_SUBMIT', false);
require_once __DIR__ . '/ABTest.php'; // Путь до ABTest.php
ABTest::instance()->activateTest('ab_title'); // Название кампании из tests.php
ABTest::instance()->activateTest('ab_second_test'); // Если на одной странице несколько тестов
ABTest::instance()->submit();

...

// Пример использования:

<div class="div1">
  // Название кампании и вариант из tests.php
  <?php if (ABTest::instance()->getTestValue('ab_title') === 'old'): ?>
    <h2>Старый заголовок!<h2>
  <?php elseif (ABTest::instance()->getTestValue('ab_title') === 'new'): ?>
    <h2>Новый заголовок!<h2>
  <?php else: ?>
    <h2>Самый новый заголовок!<h2> 
  <?php endif; ?>
</div>

Сравнение двух разных версий сайта

Пример, для случая, когда необходимо сравнить две версии сайта, например, две посадочные страницы. Нужно сделать две вещи: 1) Сохранить оригинальный реферер в cookie 2) Переадресовывать на вторую страницу, сохраняя все метки в ссылке 

Пример для двух страниц на одном домене

Данный пример вы можете использовать, когда нужно сравнить две версии сайта на одном домене, которые расположены, например, по адресам: site.ru/lp1 и site.ru/lp2

1) В tests.php нужно задать вариант теста:

tests.php

<?php

return
array(
    array(
        'id'        => 'ab_two_versions', // ab_two_versions - название теста, с которым он будет показана в Roistat
        'variants'  => array(
            array( 'id' => 'old'),  // old - название варианта, с которым он будет показан в Roistat
            array( 'id' => 'new'),
        ),
    ),
);

2) На самой странице, которая является исходным вариантом, нужно вставить код:

<?php

// Поместите эти строчки в начало страницы
define('ROISTAT_AB_AUTO_SUBMIT', false);
require_once __DIR__ . '/ABTest.php'; // Путь до ABTest.php
ABTest::instance()->activateTest('ab_two_versions'); // Название теста из tests.php

// Переадресация должна работать в самом верху кода, до загрузки контента страницы
if (ABTest::instance()->getTestValue('ab_two_versions') === 'new'): // Если вариант new, то запускается переадресация
   $param = !empty($_SERVER['QUERY_STRING']) ? "?" . $_SERVER['QUERY_STRING'] : ""; // Здесь сохраняются все метки, которые были в ссылке

   setcookie("roistat_referer", isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "");
   ABTest::instance()->submit();
   header("Location: http://site.ru/{$param}"); // Замените site.ru на адрес сайта, куда будет вести переадресация
   exit();
   endif;
ABTest::instance()->submit(); ?>

Пример для двух страниц на разных доменах

Данный пример вы можете использовать, когда нужно сравнить две версии сайта, которые расположены на разных доменах, например, по адресам: lp1.site.ru и lp2.site.ru или site1.ru и site2.ru

1) В tests.php нужно задать вариант теста:

tests.php

<?php

return
array(
    array(
        'id'        => 'ab_two_versions', // ab_two_versions - название теста, с которым он будет показана в Roistat
        'variants'  => array(
            array( 'id' => 'old'),  // old - название варианта, с которым он будет показан в Roistat
            array( 'id' => 'new'),
        ),
    ),
);

2) На самой странице, которая является исходным вариантом, нужно вставить код:

<?php

// Поместите эти строчки в начало страницы
define('ROISTAT_AB_AUTO_SUBMIT', false);
require_once __DIR__ . '/ABTest.php'; // Путь до ABTest.php
ABTest::instance()->activateTest('ab_two_versions'); // Название теста из tests.php
?>

// Переадресация должна работать в самом верху кода, до загрузки контента страницы
<?php if (ABTest::instance()->getTestValue('ab_two_versions') === 'new'):  // Если вариант new, то запускается переадресация
   $abVariant = "?b=1";
   $param = !empty($_SERVER['QUERY_STRING']) ? "&" . $_SERVER['QUERY_STRING'] : ""; // Здесь сохраняются все метки, которые были в ссылке

   setcookie("roistat_referer", isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "");
   ABTest::instance()->submit(); 
   header("Location: http://site.ru/{$abVariant}{$param}"); // Замените site.ru на адрес сайта, куда будет вести переадресация
   exit();
   endif; ?>
<?php ABTest::instance()->submit(); ?>

3) На странице, куда ведет переадресация, на самом верху, до загрузки контента страницы, нужно вставить код:

<?php if ($_GET['b'] === '1'): ?>
<?php   
    setcookie('ab_two_versions', 'new', time()+14*24*60*60, '/');
    setcookie('roistat_ab', 'ab_two_versions:new', time()+14*24*60*60, '/');
?>
<?php endif; ?>

Получение результатов

В пункте меню Сплит-тестирование в Roistat начнет накапливаться статистика, исходя из которой Вы можете сделать вывод, какой вариант оказался выгодней:

1.png