Автоматическое тестирование сайта при деплое
ДаниилТехнический директор AmSales
Отвечает за разработку: сайты, веб-приложения, ИИ-интеграции, приложения для Битрикс24 и бэкенд.

Коротко: Автоматическое тестирование при деплое - это процесс запуска автоматизированных проверок кода и функциональности сайта в момент его обновления. В 2026 году это необходимо для соблюдения требований ГОСТ Р 56939-2024 и автоматизированного контроля Роскомнадзора. Правильная настройка CI/CD позволяет предотвратить утечки данных и сбои в работе критических сервисов до того, как их заметит пользователь или регулятор.
Кстати, в AmSales мы делаем разработку сайтов под ключ и ИИ-интеграцию и анализ звонков под ключ. Если нужна помощь - напишите нам.
Зачем автоматизировать тестирование при каждом деплое
Когда разработчики выкатывают обновление, они рискуют сломать то, что уже работало. В 2026 году масштаб веб-приложений стал настолько велик, что ручная проверка каждого изменения - это путь к катастрофе. Ошибка в одной строке кода может обрушить корзину в интернет-магазине или, что еще хуже, открыть доступ к персональным данным пользователей. Автоматическое тестирование при деплое решает эту задачу, проверяя систему на целостность сразу после переноса кода на сервер.
Основная цель здесь - минимизация рисков. Если тесты провалены, процесс деплоя останавливается, и «битый» код не попадает в продакшн. Это экономит деньги компании. Представьте ситуацию: обновление вышло, база данных заблокировалась из-за некорректного запроса, и поддержка тратит 4 часа на восстановление. С автотестами такая ситуация исключается на этапе сборки.
Три уровня контроля
Обычно автоматизация охватывает три ключевых направления. Сначала идут Unit-тесты, проверяющие отдельные функции. Затем - интеграционные тесты, которые смотрят, как модули общаются между собой (например, сайт и платежный шлюз). И, наконец, сквозные (E2E) сценарии, которые имитируют действия реального пользователя: зашел на сайт, положил товар в корзину, оплатил.
Внедрение такой системы превращает процесс разработки из лотереи в предсказуемый конвейер. Вы точно знаете, что новая фича не «отвалила» авторизацию. Это критично для бизнеса, где простой сайта стоит миллионы рублей в час. Чем выше сложность системы, тем меньше шансов у человека заметить регрессионную ошибку вручную.
Новый ГОСТ Р 56939-2024 и требования безопасности
Законодательство в сфере разработки ПО стало жестче. Если раньше стандарты были скорее рекомендательными, то теперь ситуация иная. С 20.12.2024 вступил в силу ГОСТ Р 56939-2024 «Разработка безопасного программного обеспечения». Этот стандарт заменил устаревшую редакцию 2016 года и установил новые планки для тех, кто создает критически важные системы. Теперь безопасность закладывается не на этапе эксплуатации, а на этапе написания кода.
Главное отличие нового стандарта - акцент на жизненном цикле разработки. Безопасность должна быть частью процесса, а не надстройкой. Это означает, что автоматизация тестирования ПО теперь должна включать не только проверку логики, но и проверку отсутствия уязвимостей. Если ваш продукт относится к категории систем, имеющих значение для национальной безопасности или управления государственными ресурсами, соблюдение этого ГОСТа - вопрос выживания бизнеса на рынке.
Почему старые методы не работают
Редакция 2016 года не учитывала современные темпы разработки. Сегодняшний DevOps требует скорости, а старые методики проверки безопасности были слишком медленными и громоздкими. Новый стандарт гармонизирует требования безопасности с современными методами разработки. Он требует, чтобы проверки безопасности запускались автоматически на каждый коммит или pull request. Это и есть современный стандарт качества, который диктует рынок и государство.
Для бизнеса это означает переход от модели «проверим перед релизом» к модели «проверяем постоянно». Если вы не внедрили автоматизированные проверки на соответствие ГОСТ Р 56939-2024, вы рискуете не только получить штрафы, но и потерять доверие крупных заказчиков, для которых комплаенс является обязательным условием контракта.
Как настроить CI/CD через GitLab CI и Jenkins
CI/CD (Continuous Integration / Continuous Deployment) - это фундамент, на котором строится автоматическое тестирование при деплое. Без него автоматизация превращается в набор разрозненных скриптов. В 2026 году индустрия разделилась на два основных лагеря: GitLab CI и Jenkins. Каждый инструмент хорош по-своему, и выбор зависит от масштабов вашей команды.
GitLab CI предлагает максимально бесшовный подход. Все настройки хранятся в файле.gitlab-ci.yml прямо в вашем репозитории. Это позволяет разработчикам видеть результаты тестов прямо в интерфейсе слияния веток. Это удобно: вы написали код, отправили его, и через пару минут получили вердикт: "Build Success" или "Test Failed". Это идеальный вариант для средних и крупных команд, которые хотят высокой скорости работы.
Jenkins: мощь и гибкость
Jenkins - это тяжелая артиллерия. Он не такой "коробочный", как GitLab, но обладает бесконечным количеством плагинов. Если у вас сложная инфраструктура с кучей разнородных систем (разные ОС, специфическое оборудование, старые legacy-модули), Jenkins справится лучше. Он позволяет строить невероятно сложные цепочки деплоя, где каждый шаг может быть очень специфичным. Однако за это приходится платить: настройка Jenkins требует выделенного DevOps-инженера, который будет поддерживать этот "комбайн" в рабочем состоянии.
Для эффективного внедрения CI/CD важно соблюдать порядок:
- Создание этапа сборки (Build) - проверка синтаксиса кода.
- Этап тестирования (Test) - запуск юнит-тестов и линтеров.
- Этап проверки безопасности (Security Scan) - поиск уязвимостей.
- Этап развертывания (Deploy) - автоматическая выкатка на тестовый или продакшн-сервер.
Выбор инструментов: pytest против Robot Framework
Когда архитектура CI/CD готова, нужно выбрать инструмент, который будет фактически "нажимать на кнопки" и проверять сайт. Здесь идет вечный спор между разработчиками и QA-инженерами. Основные игроки - это pytest и Robot Framework. Выбор зависит от того, кто будет писать эти тесты и насколько глубоко они должны проверять систему.
Pytest - это выбор программистов. Это мощный фреймворк на языке Python, который позволяет писать тесты так же, как вы пишете основной код. Он невероятно быстрый, поддерживает параметризацию (когда один тест проверяет десять разных вариантов данных) и имеет огромное сообщество. Если ваши тесты - это фактически код, который должен проверяться линтерами и проходить через сложные логические условия, выбирайте pytest. Он лучше всего подходит для Unit и интеграционных тестов.
Robot Framework - это инструмент для тех, кто предпочитает более высокоуровневый подход. Он использует ключевые слова (keywords) вместо чистого кода. Это позволяет QA-инженерам, которые не являются профессиональными разработчиками, писать понятные сценарии: "Открыть браузер", "Ввести логин", "Нажать кнопку". Это делает тесты читаемыми даже для бизнес-аналитиков. Однако Robot Framework может быть менее гибким в очень специфических сценариях, где требуется сложная математическая логика или работа с нестандартными протоколами.
| Характеристика | Pytest | Robot Framework |
| Основной пользователь | Разработчик | QA-инженер / Тестировщик |
| Стиль написания | Чистый код (Python) | Ключевые слова (Keyword-driven) |
| Сложность обучения | Высокая (нужно знать Python) | Низкая (подходит для не-программистов) |
| Гибкость | Максимальная | Средняя |
Автоматизация проверок по стандартам Роскомнадзора
С 30 мая 2025 года ситуация с проверками на сайтах стала критической для бизнеса. Роскомнадзор перешел на автоматизированный мониторинг. Теперь не нужно ждать, пока инспектор зайдет на ваш сайт - за вас это делают автоматические системы. Они круглосуточно сканируют веб-ресурсы на соответствие требованиям ГОСТ Р 52872-2019 и актуальным приказам. Если ваш сайт не соответствует нормам, вы попадаете в список на проверку немедленно.
Что именно ищет автоматика? В первую очередь - это формы сбора персональных данных. Если на сайте есть поле "Имя" или "Телефон", но рядом нет явного согласия на обработку данных или ссылки на политику конфиденциальности, система это зафиксирует. Также проверяются cookie-баннеры: они должны быть информативными и давать пользователю право выбора. Еще одна зона риска - JavaScript-скрипты. Автосканеры проверяют, не собирают ли они данные тайно, без уведомления пользователя.
Важно понимать: если автоматизированная система Роскомнадзора обнаружит нарушение, сайт может быть переведен на ручную проверку инспектором. А это уже совершенно другой уровень давления и последствий. Поэтому автоматизация тестирования при деплое должна включать в себя обязательный блок "Compliance Check". Это набор тестов, которые проверяют наличие всех необходимых юридических элементов на каждой странице сайта. Если вы забыли добавить ссылку на политику конфиденциальности в новом блоке футера - деплой должен упасть.
DevSecOps подход: защита кода на этапе коммита
Традиционная модель безопасности строилась так: разработали, протестировали, запустили, а потом пришел специалист по безопасности и нашел дыры. В 2026 году это не работает. Сейчас актуален подход DevSecOps. Его суть - интеграция функций безопасности непосредственно в процесс разработки (CI/CD). Безопасность становится не "контролером в конце пути", а частью каждого шага.
DevSecOps настройка подразумевает, что проверка безопасности запускается на каждом коммите. Это называется "Shift Left" - сдвиг тестирования безопасности влево, то есть ближе к моменту написания кода. Если разработчик вставил в код уязвимую библиотеку или случайно открыл доступ к базе данных через небезопасный запрос, система CI/CD заблокирует этот коммит еще до того, как он попадет в общую ветку. Это радикально снижает стоимость исправления ошибок. Исправить ошибку в коде на этапе написания стоит в десятки раз дешевле, чем исправлять последствия взлома.
Как это выглядит на практике? В ваш пайплайн встраиваются инструменты SAST (Static Application Security Testing) и DAST (Dynamic Application Security Testing). SAST анализирует сам исходный код на наличие паттернов уязвимостей (например, SQL-инъекций), не запуская приложение. DAST имитирует атаки на уже запущенное (но тестовое) приложение, проверяя его поведение в реальном времени. Сочетание этих двух методов в рамках DevSecOps - единственный способ гарантировать безопасность современного веб-ресурса.
Обязательный пентест по новым приказам ФСТЭК
Если ваш сайт является государственным информационным ресурсом (ГИС) или относится к 1 или 2 классу защищенности, у вас нет выбора. С 1 сентября 2026 года вступил в силу Приказ ФСТЭК России № 60. Он изменил порядок аттестации и ввел жесткое требование: анализ уязвимостей и тестирование на проникновение (пентест) стали обязательными элементами периодического контроля.
Раньше пентест часто воспринимался как формальность, которую делают раз в год перед проверкой. Теперь это системный процесс. Для ГИС 1 и 2 классов защищенности, которые подключены к интернету, пентест стал обязательным инструментом контроля. Это означает, что вы должны не просто "надеяться на защиту", а регулярно проводить имитацию реальных хакерских атак, чтобы проверить устойчивость своих систем. Это не рекомендация, это требование регулятора.
Как это соотносится с автоматизацией? Пентест не заменяет автоматическое тестирование при деплое, но он дополняет его. Автоматика ловит типичные ошибки программистов (забытый пароль, открытый порт, ошибка в логике), а пентест ищет сложные цепочки уязвимостей, которые может использовать профессиональный хакер. В 2026 году разделение на "просто тестирование" и "тестирование на проникновение" стало четким: первое делает ваша команда в рамках CI/CD, второе - специализированные эксперты в рамках периодического контроля.
Типичные ошибки при внедрении автотестов в бизнес
Многие компании подходят к автоматизации с энтузиазмом, который быстро сменяется разочарованием. Основная причина - непонимание того, что автотесты - это не "купил и работает", а непрерывный процесс. Вот основные ошибки, которые мы наблюдаем в практике.
Первая ошибка - попытка автоматизировать всё сразу. Бизнес хочет "чтобы проверялось всё". В итоге команда тратит месяцы на написание тестов для второстепенных функций, которые меняются каждую неделю. Результат: тесты постоянно падают не из-за багов, а из-за изменения дизайна или мелких правок в UI. Это называется "хрупкостью тестов". Правильный подход - автоматизировать только критический путь (Happy Path) и самые важные функции (оплата, регистрация, поиск).
Вторая ошибка - отсутствие интеграции с процессами разработки. Тесты живут отдельно, в документации или в папке "tests", которую никто не смотрит. Если тест упал, разработчик об этом узнает через неделю от пользователя. Автоматическое тестирование при деплое должно быть частью пайплайна: упал тест - упал деплой. Это единственный способ сделать автоматизацию полезной.
Третья ошибка - игнорирование "ложноположительных" срабатываний. Если ваши тесты срабатывают по ошибке (flaky tests), команда быстро перестает им верить. "А, это просто тесты опять глючат, а не баг" - это фраза, которая убивает культуру качества. Если тест нестабилен, его нужно немедленно чинить или удалять, иначе он превращается в белый шум, за которым скрываются реальные катастрофы.
Краткий итог: что запомнить
- Автоматическое тестирование при деплое - это обязательный элемент CI/CD в 2026 году для защиты бизнеса и соблюдения законов.
- Соблюдение ГОСТ Р 56939-2024 требует внедрения DevSecOps: проверка безопасности должна быть автоматизирована на каждом этапе разработки.
- Роскомнадзор использует автоматизированные сканеры, поэтому проверка форм, куки и политик конфиденциальности должна быть частью ваших автотестов.
- Для критических систем (ГИС) пентест стал обязательным элементом периодического контроля согласно приказу ФСТЭК № 60.
- Выбирайте инструменты под задачу: pytest для глубокой логики, Robot Framework для высокоуровневых сценариев QA.
/ Поможем с этим