Блог · Тестирование
24 октября 2026

A/B-тесты на
статическом сайте

Как проверять гипотезы без Optimizely и Google Optimize — на чистом JavaScript и своей аналитике.

Коротко
  • Для простого A/B-теста не нужна платная платформа — достаточно случайного распределения и своей событийной аналитики
  • Вариант нужно назначать синхронно в начале <head>, иначе пользователь увидит мигание между вариантами
  • Номер варианта сохраняется в cookie, чтобы пользователь видел одну и ту же версию при повторных визитах
  • Для статистической значимости обычно нужно от нескольких сотен конверсий на вариант
01 / Зачем

Зачем A/B-тест без готовой платформы

Не всегда нужен Optimizely за деньги

Готовые платформы для A/B-тестов удобны, но стоят денег и добавляют внешний скрипт, который замедляет загрузку страницы. Для простой гипотезы — например, другой текст на кнопке или другой порядок блоков — вся логика умещается в десяток строк своего JavaScript.

Плюс: полный контроль над данными и никакой зависимости от стороннего сервиса, который может измениться или подорожать.

02 / Устройство

Как это устроено

Три шага: назначить, показать, посчитать

01
Назначаем вариантПри первом визите случайно выбираем A или B и сохраняем выбор в cookie
02
Показываем нужную версиюCSS-классом или условным рендерингом — в зависимости от сохранённого варианта
03
Считаем конверсиюОтправляем событие с номером варианта в свою аналитику при каждом целевом действии
03 / Без мигания

Назначение варианта без мигания

Та же логика, что и с тёмной темой

Если назначать вариант скриптом, подключённым обычным способом, пользователь на мгновение увидит вариант по умолчанию, а затем — переключение на назначенный. Решение то же, что и для anti-FOUC при тёмной теме: синхронный скрипт в начале <head>.

<!-- в начале <head>, до CSS -->
<script>
(function(){
  var v = localStorage.getItem('ab_variant');
  if (!v) {
    v = Math.random() < 0.5 ? 'a' : 'b';
    localStorage.setItem('ab_variant', v);
  }
  document.documentElement.setAttribute('data-variant', v);
})();
</script>
04 / Результат

Как считать результат

Конверсия по варианту, а не общая цифра

В таблицу событий (см. статью про аналитику воронки) добавляется поле variant. Дальше — простой SQL-запрос: сколько уникальных сессий с вариантом A дошло до цели, и сколько — с вариантом B. Сравниваем проценты конверсии между группами.

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

05 / FAQ

Частые вопросы

Короткие ответы на главное

Сколько нужно трафика для A/B-теста?

Зависит от текущей конверсии и ожидаемого эффекта, но обычно нужно минимум несколько сотен конверсий на каждый вариант, чтобы результат был статистически значим.

Не мигают ли варианты при таком подходе?

Если назначать вариант синхронно в начале <head>, как и с тёмной темой, мигания не будет — вариант применяется до первой отрисовки.

Можно ли тестировать более двух вариантов сразу?

Да, но с каждым добавленным вариантом нужно больше трафика для статистической значимости — для небольшого сайта обычно достаточно A/B, не A/B/C/D.

Хотите проверить гипотезу на сайте?

Настроим A/B-тест и подсчёт результатов под вашу конкретную задачу.