7.8 KiB
A/B-тесты
Модуль experiments распределяет посетителей между вариантами, применяет
вариант к публичной странице и считает показы и конверсии. Назначение стабильно:
посетитель получает один вариант эксперимента на всём сроке cookie.
Проверка представлений
Цель Представление сравнивает два оформления одного набора данных без изменения запроса или рубрики. Для каждого варианта выбирается опубликованное представление. Если эксперимент выключен или вариант недоступен, AVE.cms использует обычное назначение представления.
Цели эксперимента
| Цель | Ключ цели | Поведение |
|---|---|---|
| API или тег | Не требуется | Вариант получает собственный компонент или тег [mod_experiment:code]. |
| Обычный блок | ID блока | Модуль автоматически оборачивает результат блока. |
| Системный блок | ID системного блока | Модуль автоматически оборачивает результат системного блока. |
| CSS-селектор | Например, #buy-button |
Вариант применяется к найденным DOM-элементам. |
| Цена | CSS-селектор цены | Меняется только отображаемый текст цены. |
Режим Цена не меняет цену товара, корзины, заказа или платежа. Для теста
расчётной цены нужен отдельный проектный обработчик
experiments.assignment.resolved и серверная проверка на всех этапах заказа.
Варианты
Эксперимент содержит минимум два варианта. Вес задаёт относительную долю, а охват - процент посетителей, участвующих в тесте. Payload варианта поддерживает:
control- оставить исходное содержимое;replace- заменить содержимое цели;beforeиafter- вставить HTML рядом с целью;- замену текста, добавление CSS-класса и ссылки;
- отображаемое значение цены.
Эксперимент можно оставить черновиком, запустить, приостановить или завершить. Период начала и окончания необязателен.
Когда результату можно доверять
Поле Минимум показов на вариант задаёт фиксированную выборку. До её набора модуль показывает состояние Данных мало и не называет победителя. По умолчанию требуется 500 показов каждого варианта.
После набора выборки контрольный вариант A сравнивается с лучшей альтернативой двухпропорционным z-тестом. Для нескольких альтернатив учитывается число сравнений. Возможны три вывода: данных мало, разница в пределах погрешности или победитель с достоверностью не ниже 95%. Интерфейс также показывает разницу в процентных пунктах и её 95-процентный интервал. Устойчивый результат появляется в колокольчике панели.
Не меняйте варианты и основное событие во время теста. Если условия изменились, очистите статистику и начните набор заново.
Вставка в шаблон
[mod_experiment:promo_button]
На месте тега создаётся стабильный слот. Вариант загружается после получения страницы, поэтому общий full-page cache не смешивает варианты разных посетителей.
Для автоматической фиксации конверсии добавьте атрибут кнопке или ссылке:
<button data-experiment-conversion="promo_button">Отправить</button>
Произвольное событие задаётся вторым атрибутом:
<a data-experiment-conversion="promo_button"
data-experiment-event="checkout_started">Оформить</a>
Из JavaScript событие можно отправить вручную:
window.AVEExperiments.convert('promo_button', 'form_sent');
Публичный API
GET /api/v1/experiments/{code}
GET /api/v1/experiments/assignments?codes=promo_button,hero_title
POST /api/v1/experiments/event
Последний endpoint принимает code и event. ID варианта от клиента не
принимается: сервер повторно вычисляет назначение и записывает событие только в
этот вариант. Запрос дополнительно содержит подписанное сервером назначение;
для одного посетителя одно событие учитывается не чаще раза в день.
Hooks
experiments.assignment.resolved
Вызывается после серверного выбора варианта. В контексте доступны:
experiment- полная запись эксперимента;variant- выбранный вариант;visitor_hash- обезличенный хеш посетителя.
Результатом события является массив назначения. Обработчик может вернуть изменённый массив, например для проектной интеграции с сервисным слоем.
experiments.event.recorded
Вызывается после записи события. Контекст содержит experiment, variant,
event_code и флаг unique.
Кеш и приватность
В HTML кешируется только одинаковый для всех слот и конфигурация активных
целей. Назначение запрашивается клиентом через API. Случайный seed хранится год
в cookie ave_experiment_seed с HttpOnly, SameSite=Lax и Secure на HTTPS.
IP и исходный seed в статистике не сохраняются.
Права и удаление
view_experiments- просмотр экспериментов и результатов;manage_experiments- сброс статистики и операционное управление;manage_experiment_code- изменение HTML-вариантов и автоподключения с повторным подтверждением паролем.
Деинсталляция удаляет эксперименты, варианты, статистику, дедупликацию посетителей и настройки модуля.