> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/ci/kak-avtomaticheskoe-testirovanie-integriruetsya-v-ci.md).

# Как автоматическое тестирование интегрируется в CI?

Автоматическое тестирование является **неотъемлемой частью CI (Continuous Integration)** и интегрируется через **построение пайплайна**, который выполняется при каждом коммите или пул-реквесте.

***

#### **Принцип работы**

1. **Коммит в репозиторий**
   * Разработчик пушит изменения в ветку (например, `develop` или `feature`).
2. **Триггер CI**
   * CI-система (Jenkins, GitLab CI/CD, GitHub Actions) обнаруживает новый коммит и запускает пайплайн.
3. **Сборка проекта**
   * Компиляция или установка зависимостей.
   * Создание артефактов (например, Docker-образов).
4. **Запуск автоматических тестов**
   * Юнит-тесты: проверка отдельных функций или классов.
   * Интеграционные тесты: проверка взаимодействия компонентов.
   * E2E-тесты (при необходимости): проверка работы системы целиком.
5. **Отчётность и уведомления**
   * CI формирует отчёт о прохождении тестов.
   * При падении тестов разработчики получают уведомление (Slack, email).
6. **Решение о следующем шаге**
   * Если тесты прошли успешно, изменения могут быть слиты в основную ветку или отправлены на staging.
   * Если тесты упали, процесс останавливается, и ошибки исправляются.

***

#### **Пример GitHub Actions**

```yaml
name: CI Pipeline

on: [push, pull_request]

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: 3.11
      - name: Install dependencies
        run: pip install -r requirements.txt
      - name: Run tests
        run: pytest tests/
```

* При каждом push или PR пайплайн собирает проект и запускает тесты автоматически.

***

Итог: **автоматическое тестирование в CI позволяет выявлять ошибки на ранних этапах разработки**, поддерживает стабильность кода и ускоряет процесс интеграции изменений.
