Ответ
В CI-конвейер мы встраиваем несколько уровней тестирования для быстрого отлова ошибок и гарантии качества. Вот типичная пирамида:
- Статический анализ кода (SAST): Запускаю линтеры и анализаторы безопасности (например,
gosec,bandit,SonarQube) до сборки. - Модульные тесты (Unit): Проверяют изолированные функции. Выполняются первыми и самые быстрые. В пайплайне это выглядит так:
# .gitlab-ci.yml пример unit-tests: script: - go test ./... -v -short - Интеграционные тесты: Проверяют взаимодействие сервисов, например, контейнера приложения с тестовой базой данных, поднятой через
docker-compose. - End-to-End (E2E) тесты: Автоматизируют сценарии работы пользователя в среде, максимально близкой к продакшену. Использую инструменты вроде Selenium или Cypress.
- Тесты производительности/нагрузки: Интегрирую на поздних стадиях пайплайна или в отдельном окружении с помощью
k6илиLocust.
Ключевой принцип — скорость обратной связи: быстрые тесты запускаются раньше, медленные и дорогие — позже или по расписанию.