Навантажувальне тестування сайту 1С-Бітрікс: методи та кейси

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Навантажувальне тестування сайту 1С-Бітрікс: методи та кейси
Середній
~2-3 дні
Часті запитання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    946
  • 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
    732
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1075

Навантажувальне тестування сайту 1С-Бітрікс

Уявіть: інтернет-магазин на Бітрікс запускає рекламну кампанію, і в першу годину приходить 5 000 відвідувачів. Сайт падає через 10 хвилин. Типова ситуація — недостатнє навантажувальне тестування. Без нього кожен ріст трафіку — рулетка. Ми вирішуємо цю проблему: проводимо тести, виявляємо вузькі місця та гарантуємо, що сайт витримає пік. Понад 10 років досвіду у навантажувальному тестуванні Бітрікс, виконано більше 50 проектів. Середня вартість навантажувального тесту — від 100 000 до 200 000 грн, але економія 500 000 грн від запобігання збоям може перевищувати цю суму.

Навантажувальне тестування (load testing) — це процес перевірки поведінки системи під очікуваним і піковим навантаженням (Wikipedia). Для Бітрікс це особливо важливо через особливості архітектури, такі як торговий каталог та інфоблоки. Оптимізація Бітрікс під навантаженням включає налаштування кешування та SQL-індексів для підвищення пропускної здатності.

Як підготувати сайт Бітрікс до навантажувального тестування?

Перед запуском тестів переконайтеся, що базова оптимізація виконана: SQL-індекси, кешування та OPcache. Тестувати неоптимізований сайт — безглуздо (отримаєте worst case, а не реальну картину). Ми починаємо з аудиту конфігурації сервера: версії PHP та MySQL, налаштування кешування на Redis, перевірка сесій та файлового кешу. Redis швидше файлового кеша в 10 разів при високому навантаженні, що зменшує затримки. Для моніторингу сервера Бітрікс використовуйте Prometheus та Grafana.

Які інструменти обрати для тестування Бітрікс?

Основні інструменти — Apache JMeter та k6. JMeter багатофункціональний, з GUI, підтримує сценарії з авторизацією, кошиком та AJAX. k6 — сучасний, сценарії на JavaScript, легко вбудовується в DevOps. Порівняння: JMeter кращий у складних сценаріях (наприклад, з CSRF-токенами), але k6 простіше інтегрувати в CI/CD. Для вибору варто оцінити обсяг тестів та інфраструктуру.

Приклад сценарію на k6 для інтернет-магазину:

import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
    stages: [
        { duration: '2m', target: 50 },
        { duration: '5m', target: 50 },
        { duration: '2m', target: 200 },
        { duration: '5m', target: 200 },
        { duration: '2m', target: 0 },
    ],
    thresholds: {
        http_req_duration: ['p(95)<2000'],
        http_req_failed: ['rate<0.01'],
    },
};

export default function() {
    const res = http.get('https://yourshop.ru/catalog/');
    check(res, { 'status 200': (r) => r.status === 200 });
    sleep(Math.random() * 3 + 1);
}

Що тестуємо

Повний цикл включає чотири типи тестів:

  • Навантажувальний тест (Load Test) — поступове нарощування до очікуваного піку для пошуку точки деградації.
  • Стрес-тест (Stress Test) — навантаження вище максимуму для перевірки відновлення.
  • Spike Test — різкий стрибок (імітація вірусного посту).
  • Soak Test — тривале навантаження для виявлення витоків пам'яті.
Як провести навантажувальне тестування за 5 кроків 1. Складіть сценарій на основі аналітики відвідуваності та бізнес-метрик. 2. Налаштуйте інструмент (JMeter/k6) та запустіть базовий тест. 3. Організуйте моніторинг сервера (Prometheus + Grafana). 4. Запустіть повний цикл тестів — load, stress, spike, soak. 5. Аналізуйте результати, оптимізуйте та повторіть для підтвердження.

Сценарії для Бітрікс-магазину

Реалістичний сценарій навантажує типовий шлях користувача:

40% — перегляд сторінок каталогу
20% — пошук
15% — картки товарів
10% — додавання до кошика
 8% — авторизація та особистий кабінет
 7% — оформлення замовлення

Додавання до кошика через /bitrix/tools/sale_basket.php — AJAX з CSRF-токеном. JMeter або k6 мають витягувати його зі сторінки та передавати в POST.

Моніторинг під час тесту

Без моніторингу сервера тест неповноцінний. Ми використовуємо Prometheus + node_exporter + Grafana для збору метрик в реальному часі. Ключові точки:

  • PHP-FPM: pm.status_path = /fpm-status — якщо active processes = max_children, воркери вичерпані.
  • MySQL: SHOW PROCESSLIST — блокування та slow queries, важливо враховувати ізоляцію транзакцій.
  • Бітрікс: панель продуктивності під навантаженням.
  • Системні метрики: CPU, RAM, disk I/O.

Типові вузькі місця Бітрікс під навантаженням

PHP-FPM вичерпує воркери. При pm.max_children = 20 — 20 одночасних PHP-запитів. Рішення: збільшити max_children з урахуванням RAM (кожен воркер 50–150 МБ) або оптимізувати час відповіді.

MySQL: занадто багато з'єднань. 100 воркерів × 3 сайтів = 300 з'єднань. При max_connections = 151 — помилки. ProxySQL мультиплексує з'єднання.

Файловий кеш під навантаженням. При 200 користувачах — блокування. Перехід на Redis усуває проблему.

Сесії в файлах. Аналогічна проблема — Redis-сесії стабільніші.

Що входить у роботу (під ключ)

  • Складання реалістичних сценаріїв на основі аналітики
  • Налаштування інструментів (JMeter/k6) та моніторингу
  • Проведення 4 типів тестів
  • Аналіз результатів з графіками та рекомендаціями
  • Допомога в оптимізації (кешування, SQL, конфігурація)
  • Фінальний повторний тест для підтвердження покращень
  • Термін виконання: за 1 тиждень

Оцінимо ваш проект — пишіть нам!

Як інтерпретувати результати?

Метрика Добре Допустимо Погано
p95 часу відповіді < 1 с 1–3 с > 3 с
Помилки (5xx) 0% < 0.1% > 1%
CPU сервера < 50% 50–80% > 80%
PHP-FPM активні / max < 60% 60–85% > 90%

Терміни

Завдання Термін
Складання сценаріїв + налаштування інструментів 1–2 дні
Базовий навантажувальний тест + аналіз 1 день
Налаштування моніторингу 1 день
Ітерація: оптимізація + повторний тест 2–3 дні
Повний цикл (4 тести + звіт) 1 тиждень

Також можливе тестування Бітрікс24. Хочете бути впевнені в стабільності сайту? Зв'яжіться з нами — ми проведемо навантажувальне тестування та надамо детальний звіт з рекомендаціями. Замовте тест зараз.

Тестування сайтів на 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 грн. Інвестиція в тестування — це страховка вашого бізнесу.

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