# Как автоматическое тестирование интегрируется в 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 позволяет выявлять ошибки на ранних этапах разработки**, поддерживает стабильность кода и ускоряет процесс интеграции изменений.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/ci/kak-avtomaticheskoe-testirovanie-integriruetsya-v-ci.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
