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

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

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

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

Подключение

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

    Пример файла tests.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-код, выводящий что-либо на страницу).

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

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

<?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>

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

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

    tests.php
    <?php
    
    return
    array(
        array(
            'id' => 'ab_title',
            'active' => false, //  <---
            'variants'  => array(
                array( 'id' => 'old'),
                array( 'id' => 'new'),
                array( 'id' => 'newest'),
            ),
        ),
    );
    
  2. На каждой странице активируйте нужные тесты вручную:

    <?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