Программируемый тест
Принцип работы
А/Б-тестирование (или сплит-тестирование) – это проверка, какой из двух или более вариантов интерфейса (или какого-либо взаимодействия с пользователем) приносит больше прибыли. Тестировать можно фразы, внешний вид и расположение элементов и даже разные версии сайта целиком.
Подключение
- Скачайте файл Программируемый тест и поместите его в любую папку на сервере.
-
Создайте файл 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'),
),
),
);
|
-
В начале файла, отдающего страницу, подключите библиотеку для А/Б-тестирования:
<?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>
Многостраничный сайт
-
Если требуется проводить разные тесты на разных страницах, все тесты по умолчанию нужно пометить как неактивные. В 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'),
),
),
);
-
На каждой странице активируйте нужные тесты вручную:
| <?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>
|
Сравнение двух разных версий сайта
Если вы хотите сравнить две версии сайта (например, две посадочные страницы):
- Сохраните оригинальный реферер в cookie.
- Настройте переадресацию на вторую страницу, сохраняя все метки в ссылке.
Пример для двух страниц на одном домене
Данный пример можно использовать, когда нужно сравнить две версии сайта на одном домене (например, site.ru/lp1
и site.ru/lp2
).
-
В 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'),
),
),
);
|
-
На странице, которая является исходным вариантом, нужно вставить код:
| <?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
).
-
В 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'),
),
),
);
|
-
На странице, которая является исходным вариантом, нужно вставить код:
| <?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(); ?>
|
-
Вставьте код в начало страницы, на которую ведет переадресация (до загрузки контента страницы):
<?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 начнет накапливаться статистика, которая поможет вам выбрать самый эффективный вариант: