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
    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+ років досвіду розробки на Бітрікс та сертифікацію. Гарантуємо коректне налаштування та інтерпретацію результатів. Зв'яжіться з нами для аудиту вашого проекту.

Тестування сайтів на 1С-Бітрікс

CIBlockElement::GetList і пагінація — баг, який живе роками

Класичний кейс: на сайті каталог із пагінацією через компонент bitrix:catalog.section. Замовник скаржиться — на третій сторінці дублюються товари. Лізеш у кеш компонента, чистиш — начебто ок. Через день знову. Виявляється, кастомне сортування конфліктує з параметром PAGEN_1, і при певній комбінації фільтрів CIBlockElement::GetList повертає ті самі ID. Такі штуки ловляться тільки тестуванням — не код-рев'ю, не «подивився очима».

Зламана пагінація, некоректний розрахунок знижок, помилки інтеграції з 1С — кожен з цих багів коштує бізнесу реальних грошей. Ми знаємо, як їх знайти і виправити до того, як вони вплинуть на продажі. Наша команда має понад 10 років досвіду з Бітрікс і понад 50 успішних QA-проєктів. Ми вибудовуємо QA-процес під проєкти на 1С-Бітрікс: ручне функціональне, автоматизовані E2E, навантажувальне та приймальне тестування.

Чому сайти на 1С-Бітрікс потребують професійного тестування?

Проєкти на 1С-Бітрікс — не лендінги. Під капотом — десятки модулів, інтеграції та неочевидні залежності:

  • Ланцюжки в бізнес-логіці — виправив розрахунок знижок у sale.discount, а промокод через sale.basket.discount перестав застосовуватися. Модуль знижок у Бітріксі — один із найкрихкіших: правила пріоритетів, перетини, накопичувальні програми. Одна правка — каскад збоїв.
  • Інтеграція з 1С — обмін через catalog.import.1c або REST. Збій у маппінгу властивостей інфоблоку — і на сайті товар без ціни або з нульовим залишком. Розсинхронізація замовлень — втрачені продажі.
  • Оновлення ядра — bitrix:main оновився, а кастомний компонент використовував deprecated-метод CModule::IncludeModule з нестандартними параметрами. Без регресії — російська рулетка.
  • Мультибраузерність — bitrix:sale.order.ajax рендерить форми по-різному в Safari і Chrome. Кнопка «Оформити замовлення» на iPhone може з'їхати за межі екрана.

Як функціональне тестування вирішує типові проблеми?

Перевіряємо кожен бізнес-сценарій. Не «працює-не працює», а всі граничні випадки.

Каталог (компоненти 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. Кожен модуль — свій чек-лист.
Типовий набір регресійних тест-кейсів (скорочено) - Головна сторінка: коректне відображення слайдера, категорій, блоку акцій. - Каталог: фільтр без результатів, фільтр із однією властивістю, пагінація після зміни сортування. - Картка товару: зміна кількості, різні торгові пропозиції, додавання в обране. - Кошик: зміна кількості, видалення, застосування купона. - Оформлення: успішна оплата, помилка оплати, повернення з помилкою.

Як визначити вузькі місця продуктивності магазину на Бітрікс?

Ми моделюємо навантаження, щоб зрозуміти, при якому RPS 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-авторизацією), Yandex.Tank (візуалізація в реальному часі). На виході — максимальний RPS, час відгуку за перцентилями p50/p95/p99, вузькі місця (CPU, RAM, MySQL slow queries на b_iblock_element, файловий кеш). Конкретні рекомендації: який індекс додати, який запит переписати на D7 ORM, де ввімкнути композитний кеш.

У проєкті з 100 000 товарами додавання індекса на b_iblock_element_property.IBLOCK_ELEMENT_ID скоротило час виконання фільтра з 8 секунд до 0.3 секунди — ми знайшли це саме під час навантажувального тестування.

Автоматизоване, кросбраузерне та приймальне тестування

Кросбраузерність перевіряємо там, де реально сидять покупці. Статистика з Метрики конкретного проєкту важливіша за загальноринкові дані. Мінімальний набір: Chrome (останні 2 версії), Safari на iOS, Яндекс.Браузер, Samsung Internet. Пристрої: Desktop 1920×1080 та 1366×768, iPhone 375×812 та 390×844 (обов'язково чекаут), Android 360×800 та 412×915. Інструменти: BrowserStack для реальних пристроїв, Playwright для автоматизації в Chromium/Firefox/WebKit.

Автоматизація базується на Playwright — кросбраузерність, паралельний запуск, автоматичні очікування, добре працює з динамічними формами sale.order.ajax. У порівнянні з ручним тестуванням, автоматизація скорочує час виконання регресії втричі. PHPUnit використовуємо для модульних тестів кастомних компонентів і бізнес-логіки — інтеграція з CI/CD (GitLab CI, GitHub Actions). Тестовий набір із 50 сценаріїв виконується за 15 хвилин замість годин ручної перевірки.

Фінальна перевірка (UAT) проводиться із замовником на staging з копією продової бази. Спільно складаємо 15–20 ключових шляхів покупця, фіксуємо баги в Jira/YouTrack, оформляємо протокол приймання.

QA-процес: як ми вбудовуємо тестування в розробку

Тестування не приклеюється наприкінці — воно стартує з аналізу вимог.

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

Закажіть тестування сьогодні — і ми підготуємо тест-план за 2 дні.

Терміни та вартість тестування

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

Що входить у роботу: детальний тест-план із чек-листами за модулями, автоматизований набір E2E-тестів (Playwright/Cypress) під ваш стек, звіт із результатами, скріншотами помилок і рекомендаціями, інтеграція тестів у ваш CI/CD (GitLab CI, GitHub Actions, Bitbucket Pipelines), супровід UAT — до трьох ітерацій виправлень без додаткової оплати, документація процесу тестування для вашої команди.

Баг на продакшені — це не тільки вартість виправлення. Середнє виправлення критичного дефекту коштує від 20 000 грн, а втрати від зламаного кошика за вихідні на проєкті з оборотом 5 млн/міс можуть сягати 400 000 грн. Інвестиція в тестування — це страховка вашого бізнесу.

Зв'яжіться з нами, щоб отримати комерційну пропозицію та детальний план тестування для вашого проєкту.