Какие виды тестирования используют при внедрении CI?

«Какие виды тестирования используют при внедрении CI?» — вопрос из категории CI/CD, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В CI-конвейер мы встраиваем несколько уровней тестирования для быстрого отлова ошибок и гарантии качества. Вот типичная пирамида:

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

Ключевой принцип — скорость обратной связи: быстрые тесты запускаются раньше, медленные и дорогие — позже или по расписанию.