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

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

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

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

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

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

Оновлення ядра Бітрікс з версії 23.x до 24.x, встановлення нового модуля з Маркетплейсу, зміна PHP з 8.1 до 8.2 — будь-яка з цих дій здатна тихо зламати те, що працювало місяцями. Регресійне тестування — це систематична перевірка, що після змін старий функціонал продовжує працювати. На Бітрікс-проєктах воно особливо важливе через часті оновлення ядра (релізи виходять щотижня) та велику кількість точок розширення через події та агенти.

Що ламається при оновленнях Бітрікс

Практика показує кілька стійких патернів регресій.

Застарілі методи ядра. Бітрікс методично позначає методи як deprecated і через кілька версій видаляє. Проблема — у легасі-коді /local/, написаному на старому API D6:

// Застарілий код D6 (ламається при оновленнях)
$el = new CIBlockElement();
$el->GetList([], ['IBLOCK_ID' => 5], false, false, ['ID', 'NAME']);

// Актуальний D7 ORM
\Bitrix\Iblock\ElementTable::getList([
    'filter' => ['=IBLOCK_ID' => 5],
    'select' => ['ID', 'NAME'],
]);

Конфлікти шаблонів. Після оновлення компонентів Бітрікс (модуль sale, catalog) шаблони в /local/templates/ можуть перестати збігатися з новою логікою компонента. Класичний приклад — зміна структури $arResult у компоненті bitrix:catalog.section.

Агенти та планувальник. При оновленні ядра таблиця b_agent іноді втрачає прапорці активних агентів або змінюється сигнатура виклику. Перевіряють після кожного великого оновлення:

SELECT name, active, last_exec, next_exec, agent
FROM b_agent
WHERE active = 'Y'
ORDER BY next_exec;

Структура регресійного набору

Регресійний набір для Бітрікс-проєкту розбивають на рівні:

Smoke-тести (5–10 хвилин) — мінімальний набір, запускається після кожного деплою:

  • Відкриття головної сторінки (HTTP 200)
  • Додавання товару до кошика
  • Авторизація наявного користувача
  • Оформлення замовлення (до кроку оплати)
  • Відкриття адміністративної панелі

Базовий регрес (2–4 години) — запускається перед кожним релізом:

  • Повний флоу оформлення замовлення з кожним типом доставки та оплати
  • Розумний фільтр із кількома параметрами
  • Особистий кабінет: історія, редагування профілю
  • Основні форми: зворотній дзвінок, підписка, контакти

Повний регрес (1–2 дні) — при великих оновленнях ядра або значних змінах кодової бази.

Кейс: оновлення ядра 23.700 → 24.100

Проєкт — інтернет-магазин будівельних матеріалів, ~15 000 SKU, CDEK + Укрпошта, ЮКаса + Сбер. Після оновлення ядра регресійний прогін виявив:

  1. Розумний фільтр перестав працювати — причина: змінився формат параметрів компонента bitrix:catalog.smart.filter, шаблон у /local/templates/ використовував видалену властивість arResult['FORM_ATTRIBUTES']
  2. Email-повідомлення про скасування замовлення дублювалися — подія OnOrderStatusChange викликалася двічі через нову поведінку в \Bitrix\Sale\Order::save()
  3. Агент синхронізації з 1С завис — нова версія PHP 8.2 кидала TypeError при передачі null у strpos(), агент тихо падав, таблиця b_agent показувала його «активним»

Усі три проблеми були спіймані до викладки на продакшн саме тому, що регресійний прогін запускався на staging-оточенні з prod-дампом бази.

Інструментарій та автоматизація

Для автоматизації регресійних тестів на Бітрікс-проєктах рекомендується:

Playwright для UI-тестів із фіксацією скриншотів при помилках:

// playwright.config.js
module.exports = {
    use: {
        baseURL: 'https://staging.shop.com',
        screenshot: 'only-on-failure',
        video: 'on-first-retry',
    },
    retries: 1,
};

PHPUnit + BitrixTestCase для тестування компонентів та хелперів. Запуск у CI/CD (GitHub Actions, GitLab CI) при кожному пуші в main:

# .gitlab-ci.yml
regression:
  stage: test
  script:
    - php vendor/bin/phpunit --testsuite=regression
    - npx playwright test --reporter=html
  artifacts:
    when: on_failure
    paths:
      - playwright-report/

Візуальне регресійне тестування з @playwright/test + плагін playwright-visual-comparisons — порівняння скриншотів ключових сторінок до і після оновлення.

Терміни

Обсяг робіт Термін
Складання регресійного тест-плану 1–2 дні
Ручний регресійний прогін (середній проєкт) 2–4 дні
Автоматизація smoke-тестів 2–3 дні
Автоматизація повного регресу 5–10 днів