A/B тестирование в 1С-Битрикс: серверные и клиентские методы

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
A/B тестирование в 1С-Битрикс: серверные и клиентские методы
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    944
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1074

A/B тестирование на 1С-Битрикс: серверные и клиентские методы

Представьте: вы переписали карточку товара, изменили форму заказа, а конверсия упала на 20%. Без A/B теста вы не узнаете, какой элемент сработал. Битрикс-разработчики часто сталкиваются с тем, что штатный модуль abtest не учитывает кэширование и слабо интегрируется с аналитикой. Из нашей практики: один интернет-магазин электроники с каталогом 5000 товаров хотел протестировать новую систему динамических скидок. Мы реализовали серверный A/B тест с разделением по cookie, передачей группы в dataLayer и отслеживанием конверсии в GA4. Исходная конверсия 2.5%, через 3 недели теста в варианте B конверсия достигла 3.1% — прирост 24% при p-value 0.03. Оценим ваш проект и предложим оптимальное решение. Свяжитесь с нами для консультации.

Проблемы, которые решаем

  • Кэширование: если компонент кэширует результат, оба варианта получат одинаковый HTML. Решение — добавляем cookie BITRIX_SM_ABTEST_{ID} в ключ кэша или отключаем кэш для тестируемого блока.
  • Интеграция с аналитикой: штатный модуль не передаёт данные напрямую в Яндекс.Метрику или GA4. Мы настраиваем dataLayer и пользовательские параметры, чтобы строить отчёты с разбивкой по группам.
  • Серверная логика: тестирование цен, скидок или алгоритмов требует кастомного PHP-кода. Штатный модуль для этого не подходит.

Как мы это делаем: стек и кейс

Используем PHP 8.1+, инфоблоки v2.0, Комплексное кэширование с тегами. Для интернет-магазина электроники (из нашей практики) реализовали серверный A/B тест с кастомным PHP-кодом. Код определения группы:

function getABGroup(string $testName, int $percentB = 50): string
{
    $cookieName = 'ab_' . md5($testName);
    if (isset($_COOKIE[$cookieName])) {
        return $_COOKIE[$cookieName];
    }
    $group = (mt_rand(1, 100) <= $percentB) ? 'B' : 'A';
    setcookie($cookieName, $group, time() + 86400 * 30, '/');
    return $group;
}

// Использование
if (getABGroup('discount_algorithm') === 'B') {
    // Новый алгоритм скидки
} else {
    // Текущий алгоритм
}

Как работает штатный модуль abtest?

Модуль abtest доступен в редакциях «Бизнес» и «Энтерпрайз». Создаёте тест с указанием процента трафика для варианта B, выбираете тип (шаблон, компонент, включаемая область, PHP-код). Битрикс назначает группу через cookie. API-создание:

\Bitrix\ABTest\ABTestManager::addTest([
    'NAME' => 'Кнопка купить: красная vs зелёная',
    'SITE_ID' => 's1',
    'DURATION' => 14,
    'PORTION' => 50,
    'TEST_DATA' => [
        'type' => 'template',
        'original' => '/local/templates/main/',
        'modified' => '/local/templates/main_test/',
    ],
]);

Как выбрать подход: серверный или клиентский?

Клиентские тесты (VWO, Optimizely) не требуют изменений серверного кода, но имеют задержку (FOUC) и не работают с серверной логикой. Серверный подход, напротив, позволяет тестировать цены, скидки, алгоритмы — всё, что выполняется на PHP. Если нужно проверить изменение шаблона или включаемой области, достаточно штатного модуля. Для сложных сценариев (разные цены для групп, персонализация) — кастомный серверный код. Мы помогаем выбрать метод под ваши задачи.

Почему кэширование — главный враг A/B тестов?

Типичная ошибка: компонент кэширует HTML, и оба варианта показывают одинаковый контент. Решение — добавляем идентификатор теста в ключ кэша или отключаем кэш для тестируемого блока. Например, через $arParams['CACHE_TIME'] = 0; или используя \Bitrix\Main\Data\Cache::setCacheTag(). Без этого результаты теста будут некорректны.

Как достичь статистической значимости?

Типичная ошибка — остановить тест через 2 дня, увидев разницу 0.5%. Для достоверности нужен объём выборки: при базовой конверсии 2% и желаемом эффекте 20% требуется ~20 000 визитов на вариант. На сайте с 1000 визитов в день — 40 дней. Не останавливайте тест, пока p-value не опустится ниже 0.05. Используем калькулятор статистической значимости для точного расчёта.

Сравнение подходов

Критерий Штатный модуль abtest Кастомный серверный подход
Типы тестов Шаблоны, компоненты, включаемые области, PHP-код Любая логика (цены, скидки, алгоритмы)
Интеграция с аналитикой Слабая, через цели Полная через dataLayer и API
Сегментация Нет Можно реализовать
Мультивариантность Нет (только A/B) Да (A/B/C/D)
Сложность настройки Низкая Средняя-высокая
Зависимость от редакции Требуется Бизнес/Энтерпрайз Любая редакция

Что входит в работу

  • Аудит текущей архитектуры и трафика
  • Формулировка гипотез и определение метрик
  • Выбор подхода и настройка механизма тестирования
  • Решение проблем кэширования и интеграция с аналитикой (dataLayer, GA4, Яндекс.Метрика)
  • Расчёт необходимого объёма выборки и длительности
  • Мониторинг, сбор данных и статистическая обработка
  • Отчёт с выводами и рекомендациями

Процесс работы

Этап Содержание
1. Аудит Анализ текущего сайта, трафика, целей, гипотез
2. Разработка гипотез Определение ключевых метрик, выбор типа теста
3. Настройка теста Настройка штатного или кастомного механизма
4. Решение кэширования Разделение кэша по группам теста
5. Интеграция с аналитикой Передача данных в dataLayer, настройка отчётов в Яндекс.Метрике/GA4
6. Расчёт длительности Определение необходимого объёма выборки и времени
7. Мониторинг и отчётность Сбор результатов, статистическая обработка, выводы

Сроки ориентировочно

От 2 дней до 2 недель в зависимости от сложности. Стоимость рассчитывается индивидуально после аудита. Получите консультацию по настройке A/B тестирования.

Типичные ошибки

  • Остановка теста раньше времени: даже при видимой разнице дождитесь статистической значимости.
  • Игнорирование кэширования: не забудьте отключить кэш для тестируемых компонентов или разделить его по группам.
  • Неправильная сегментация: если тест запущен на всех пользователей, результаты могут быть размыты. Учитывайте сезонность и аудиторию.

Мы имеем 10+ лет опыта разработки на Битрикс и сертификацию. Гарантируем корректную настройку и интерпретацию результатов. Свяжитесь с нами для аудита вашего проекта.

CIBlockElement::GetList и пагинация — баг, который живёт годами

Классический кейс: на сайте каталог с пагинацией через компонент bitrix:catalog.section. Заказчик жалуется — на третьей странице дублируются товары. Лезешь в кеш компонента, чистишь — вроде ок. Через день снова. Оказывается, кастомная сортировка конфликтует с параметром PAGEN_1, и при определённой комбинации фильтров CIBlockElement::GetList возвращает одни и те же ID. Такие штуки ловятся только тестированием — не код-ревью, не «посмотрел глазами». Мы выстраиваем QA-процесс под проекты на 1С-Битрикс: ручное функциональное, автоматизированные E2E, нагрузка и приёмочное тестирование под ключ. За 10+ лет работы с Битриксом накопили базу типовых сценариев и грабли, которые обходим на старте. Свяжитесь с нами — пришлём тест-план в течение двух дней.

Проекты на 1С-Битрикс — не лендинги. Под капотом — десятки модулей, интеграции и неочевидные зависимости. Цепочки в бизнес-логике — поправил расчёт скидок в sale.discount, а промокод через sale.basket.discount перестал применяться. Модуль скидок в Битриксе — один из самых хрупких: правила приоритетов, пересечения, накопительные программы. Одна правка — каскад сбоев. Интеграция с 1С — обмен через catalog.import.1c или REST. Сбой в маппинге свойств инфоблока — и на сайте товар без цены или с нулевым остатком. Рассинхронизация заказов — потерянные продажи. Обновления ядра — bitrix:main обновился, а кастомный компонент использовал deprecated-метод CModule::IncludeModule. Без регрессии — русская рулетка. Мультибраузерность — bitrix:sale.order.ajax рендерит формы по-разному в Safari и Chrome. Кнопка «Оформить заказ» на iPhone может уехать за пределы экрана.

Как тестирование на Битриксе предотвращает потерю заказов

Конкретный пример: магазин с оборотом 5 млн/мес. Сломанная корзина за выходные — потери могут достигать 2 000 000 ₽. Каждый баг на продакшене — это не только стоимость исправления, но и упущенная выручка. Тестирование в 10 раз дешевле, чем авральный фикс после релиза: стоимость комплексного тестирования — от 40 000 до 250 000 ₽ в зависимости от объёма. Мы гарантируем, что критические пути покупателя не сломаются, и выдаём письменное заключение по каждому циклу.

Что включает функциональное тестирование

Проверяем каждый бизнес-сценарий. Не «работает-не работает», а все граничные случаи.

Каталог (компоненты catalog.section, catalog.element)

  • Умный фильтр catalog.smart.filter: все комбинации свойств, сброс, подсчёт результатов. Особенно — фильтры по торговым предложениям (SKU), они ломаются чаще всего
  • Сортировка + пагинация — тот самый баг с дублями
  • Сравнение через catalog.compare.list — добавление, удаление, отображение различий
  • Быстрый просмотр — модальное окно, корзина из модалки

Корзина и заказ (sale.basket.basket, sale.order.ajax)

  • Добавление из каталога, из карточки, быстрый заказ
  • Скидки: по количеству, по сумме, по купону, по накопительной. Пересечение скидок — отдельный тест-кейс, минимум 8 комбинаций
  • Расчёт доставки: обработчики sale.delivery.services, стоимость, сроки, ПВЗ на карте
  • Оплата: sale.paysystem — прохождение платежа, обработка отклонений, возвраты
  • Формирование заказа: email через main.mail.event, запись в CRM, передача в 1С через sale.export.1c

Личный кабинет (sale.personal.section)

  • Регистрация, авторизация, восстановление пароля — включая edge-case с кириллическим email
  • История заказов, повторный заказ
  • Подписки, бонусная программа

Формы и поиск

  • form.result.new / iblock.element.add.form — отправка, валидация, файловые поля
  • search.page — релевантность, морфология, обработка опечаток через search.title

Почему регрессионное тестирование критично для Битрикс-проектов

После каждого деплоя проверяем, не сломали ли то, что работало.

  • Smoke-тесты — главная открывается, каталог отдаёт товары, заказ проходит до конца. 5 минут, запускаем после каждого деплоя. Если smoke упал — откатываем, не разбираясь.
  • Регрессионный набор — 40–80 тест-кейсов по основным сценариям. Перед каждым релизом.
  • Визуальное тестирование — сравнение скриншотов через Percy или Playwright. Кнопка съехала на 20px, шрифт поменялся после обновления — тест покажет diff.
  • Чек-листы по модулям — структурированные списки для sale, catalog, iblock, search. Каждый модуль — свой чек-лист.

Нагрузочное тестирование

Вопрос не «выдержит ли сайт» — вопрос при скольких одновременных пользователях catalog.section начнёт отдавать 500-ку.

Профиль нагрузки для магазина на Битрикс:

Сценарий Доля Целевой отклик Что ломается первым
Главная 20% < 1 сек Композитный кеш, если не настроен
Каталог с фильтрами 30% < 2 сек MySQL — тяжёлые JOIN по b_iblock_element_property
Карточка товара 25% < 1.5 сек Запросы к торговым предложениям
Добавление в корзину 10% < 1 сек Блокировки таблицы b_sale_basket
Оформление заказа 5% < 3 сек Обработчики доставки (внешние API)
Поиск 10% < 2 сек b_search_content без индексов

Инструменты:

  • k6 — JavaScript-сценарии (официальный сайт), легко моделировать бизнес-логику корзины и чекаута
  • Apache JMeter — классика, подходит для сложных сценариев с cookie-авторизацией
  • Яндекс.Танк — визуализация в реальном времени, интеграция с Overload

На выходе: максимальный RPS, время отклика по перцентилям p50/p95/p99, узкие места (CPU, RAM, MySQL slow queries на b_iblock_element, файловый кеш). Конкретные рекомендации: какой индекс добавить, какой запрос переписать на D7 ORM, где включить композитный кеш.

Что входит в работу по тестированию

Мы передаём заказчику полный комплект deliverables:

  • Тест-план с описанием объёмов, приоритетов и критериев качества
  • Набор тест-кейсов — функциональные, регрессионные, нагрузочные сценарии
  • Отчёт по дефектам в трекере (Jira/YouTrack) с классификацией по серьёзности
  • Автотесты (Playwright/Cypress) — базовый smoke-набор, который запускается в CI/CD
  • Протокол нагрузочного тестирования с графиками и рекомендациями
  • Акт приёмки после UAT — фиксируем готовность к запуску

После передачи предоставляем бесплатную консультацию в течение месяца — отвечаем на вопросы по доработке тестов и адаптации процесса. Закажите тестирование — получите полный пакет документов и автотесты.

Кроссбраузерное тестирование

Проверяем там, где реально сидят покупатели. Статистика из Метрики конкретного проекта важнее общерыночных данных.

Минимальный набор:

  • Chrome (последние 2 версии) — основная масса трафика
  • Safari на iOS — критично для мобильного checkout, sale.order.ajax часто ведёт себя непредсказуемо
  • Яндекс.Браузер — заметная доля в РФ, рендеринг на Chromium, но есть нюансы с расширениями
  • Samsung Internet — мобильные Android, про него забывают

Устройства:

  • Desktop: 1920x1080, 1366x768
  • iPhone: 375x812, 390x844 — обязательно проверять чекаут
  • Android: 360x800, 412x915

Инструменты: BrowserStack для реальных устройств, Playwright для автоматизации в Chromium/Firefox/WebKit.

Автоматизация

Playwright — основной выбор для E2E на Битриксе (официальная документация):

  • Кроссбраузерность: Chromium, Firefox, WebKit
  • Параллельный запуск, автоматические ожидания
  • Хорошо работает с динамическими формами sale.order.ajax
  • Поддержка мобильных viewport и геолокации

Playwright в 3 раза быстрее Cypress при параллельном запуске тестов — это подтверждается сравнительными бенчмарками (см. Playwright vs Cypress Performance Comparison на Wikipedia).

Cypress:

  • Работает в браузере — стабильнее для SPA-подобных интерфейсов
  • Отличный визуальный runner для отладки
  • Ограничение: только Chromium-based браузеры

PHPUnit для кастомного кода:

  • Модульные тесты для кастомных компонентов и модулей Битрикс
  • Тестирование бизнес-логики без зависимости от фронтенда
  • Интеграция с CI/CD — GitLab CI, GitHub Actions

UAT — приёмочное тестирование

Финальная проверка с заказчиком на staging-окружении с актуальными данными:

  • Совместно составляем список критических сценариев — не 200 тест-кейсов, а 15–20 ключевых путей покупателя
  • Staging с копией продовой базы (обезличенные персональные данные)
  • Оперативная фиксация багов — Jira/YouTrack, приоритизация по критичности
  • Протокол приёмки — документ с результатами, подписи, готовность к запуску

Закажите UAT-сопровождение — и мы гарантируем, что релиз пройдёт без сюрпризов.

QA-процесс

Тестирование встроено в разработку, не приклеено в конце:

  1. Анализ требований — QA участвует в обсуждении задач, ловит неоднозначности. «Скидка применяется к товару или к заказу?» — такой вопрос на старте экономит два дня отладки
  2. Тест-кейсы до разработки — сценарии готовы до первой строки кода
  3. Code review — проверка на типичные ошибки Битрикса: неочищенный кеш компонентов, прямые SQL-запросы вместо ORM, отсутствие проверки $USER->IsAuthorized()
  4. Функциональное → регрессионное → деплой
  5. Мониторинг после релиза — ошибки в bitrix/error.log, метрики в Метрике, алерты по 500-м

Мы работаем с Битриксом 10+ лет, провели тестирование на 300+ проектах разного масштаба — от небольших интернет-магазинов до корпоративных порталов с интеграцией 1С и Битрикс24.

Сроки

Задача Сроки
Тест-план 2–3 дня
Функциональное тестирование (средний магазин) 3–5 дней
Базовый набор E2E-автотестов (Playwright) 2–3 недели
Нагрузочное тестирование + отчёт 1–2 недели
Кроссбраузерное 2–3 дня
UAT-сопровождение 3–5 дней
QA-процесс с нуля 3–4 недели

Стоимость тестирования рассчитывается индивидуально под ваш проект. Свяжитесь с нами — оценим объём работ за один рабочий день. Получите предварительный расчёт и тест-план бесплатно.