Регрессионное тестирование сайта на 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 + Почта России, ЮКасса + Сбер. После обновления ядра регрессионный прогон выявил:
-
Умный фильтр перестал работать — причина: изменился формат параметров компонента
bitrix:catalog.smart.filter, шаблон в/local/templates/использовал удалённое свойствоarResult['FORM_ATTRIBUTES'] -
Email-уведомления об отмене заказа дублировались — событие
OnOrderStatusChangeвызывалось дважды из-за нового поведения в\Bitrix\Sale\Order::save() -
Агент синхронизации с 1С завис — новая версия PHP 8.2 выбрасывала
TypeErrorпри передачеnullвstrpos(), агент молча падал, таблицаb_agentпоказывала его «активным»
Все три проблемы были пойманы до выкладки на продакшн именно потому, что регрессионный прогон запускался на staging-окружении с prod-дампом базы.
Инструментарий и автоматизация
Для автоматизации регрессионных тестов на Битрикс-проектах рекомендуется:
Playwright для UI-тестов с фиксацией скриншотов при ошибках:
// playwright.config.js
module.exports = {
use: {
baseURL: 'https://staging.shop.ru',
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 дней |







