gadget59.ru лекции
Тестирование ПО · Лекция 9 · 22 слайда

Автоматизация тестирования и CI/CD: как тесты работают сами

Автоматизация тестирования и CI/CD

Мы научились писать тесты и даже запускать их вручную. Но представьте, что в проекте 1000 тестов, и каждый раз после изменения кода нужно запускать их все. Вручную это займёт часы. Именно для этого существует автоматизация тестирования и CI/CD.

Сегодня мы разберём, как тесты запускаются сами, при каждом изменении кода, и как это помогает не «сломать» работающую программу.

🤖 Автоматизация 🔄 CI 🚀 CD ⚙️ GitHub Actions
Это девятая, финальная лекция теоретического блока. Она показывает, как все предыдущие темы (тесты, покрытие, отладка, интеграция) соединяются в реальном процессе разработки.
Формат: лекция + практика в конце. После этой лекции — только практические работы.

План лекции

Сегодня мы разберём, как автоматизировать тестирование и встроить его в процесс разработки.

  • 1 Что такое автоматизация тестирования
  • 2 Плюсы и минусы автоматизации
  • 3 Что такое CI (непрерывная интеграция)
  • 4 Что такое CD (непрерывная доставка)
  • 5 Пайплайн — конвейер тестирования
  • 6 Пример: GitHub Actions
  • 7 Пример: Jenkins
  • 8 Как это работает в реальной команде
  • 9 Типичные ошибки
  • 10 Итоги и практика
Если вы пропустили предыдущие лекции — вернитесь. Без понимания тестирования автоматизация будет «магией».

Что такое автоматизация тестирования

Автоматизация тестирования — это когда тесты запускаются программой, а не человеком. Специальные инструменты выполняют тесты, сравнивают результаты и сообщают об ошибках.

Аналогия. Представьте, что вы проверяете 1000 дверей: открывается ли каждая. Вручную это займёт часы. Автоматизация — это робот, который проверяет все двери за минуту и сообщает, какая сломалась.
⏱️
Быстро
1000 тестов за минуты, а не часы.
🔁
Повторяемо
Один и тот же результат каждый раз.
🛡️
Надёжно
Человек может устать, робот — нет.
📊
Отчётность
Автоматические отчёты о результатах.
Автоматизация не заменяет ручное тестирование полностью. Но она берёт на себя рутинные проверки, освобождая время для творческих задач.

Плюсы и минусы автоматизации

Автоматизация — это не «серебряная пуля». У неё есть и плюсы, и минусы.

✅
Плюсы
Экономия времени, повторяемость, раннее обнаружение ошибок, поддержка регрессии.
❌
Минусы
Дорого на старте, требует навыков, тесты нужно поддерживать, не всё можно автоматизировать.
Что автоматизироватьЧто оставить вручную повторяющиеся проверкиисследовательское тестирование регрессионные тестыпроверка удобства использования модульные тестытестирование «глазами пользователя»
Не всё нужно автоматизировать. Если тест выполняется один раз — автоматизация не окупится.

Что такое CI (непрерывная интеграция)

CI (Continuous Integration, «непрерывная интеграция») — это практика, при которой разработчики часто (несколько раз в день) сливают свой код в общую ветку.

Разработчик 1
→
Общая ветка
←
Разработчик 2
Что происходит при CIЗачем код автоматически собираетсяпроверить, что он компилируется запускаются тестыпроверить, что ничего не сломалось результат сообщается командебыстро узнать о проблеме
CI — это «конвейер», который при каждом изменении кода автоматически проверяет, что ничего не сломалось.

Что такое CD (непрерывная доставка)

CD может означать две вещи: Continuous Delivery (непрерывная доставка) и Continuous Deployment (непрерывное развёртывание).

📦
Continuous Delivery
Код всегда готов к выпуску. Но решение о выпуске принимает человек.
🚀
Continuous Deployment
Код автоматически выпускается в продакшен после прохождения тестов.
ЭтапЧто происходит CIкод собирается и тестируется CD (Delivery)код готов к выпуску CD (Deployment)код автоматически выпускается
CI/CD — это единый процесс: от изменения кода до его выпуска в продакшен. Тесты — ключевая часть этого процесса.

Пайплайн — конвейер тестирования

Пайплайн (pipeline, «конвейер») — это последовательность шагов, которые выполняются автоматически при изменении кода.

1. Коммит (изменение кода)
↓
2. Сборка (build)
↓
3. Модульные тесты
↓
4. Интеграционные тесты
↓
5. Проверка покрытия
↓
6. Развёртывание (если всё хорошо)
Если хотя бы один шаг пайплайна упал (тест не прошёл) — процесс останавливается. Код не попадёт в продакшен, пока ошибка не будет исправлена.

Пример: GitHub Actions

GitHub Actions — это популярный инструмент для CI/CD, встроенный в GitHub. Он позволяет запускать тесты автоматически при каждом коммите.

# .github/workflows/test.yml name: Python Tests on: push: # при каждом пуше pull_request: # и при каждом pull request jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.11' - run: pip install pytest - run: pytest # запуск тестов
Этот файл говорит GitHub: «При каждом изменении кода запусти тесты». Если тесты упадут — вы увидите красный крестик рядом с коммитом.

Пример: Jenkins

Jenkins — это ещё один популярный инструмент для CI/CD. Он более гибкий, но и более сложный в настройке.

ИнструментПлюсыМинусы GitHub Actionsвстроен в GitHub, простойработает только с GitHub Jenkinsгибкий, работает с любыми системамисложнее в настройке GitLab CIвстроен в GitLabработает только с GitLab
// Jenkinsfile (упрощённо) pipeline { agent any stages { stage('Test') { steps { sh 'pytest' // запуск тестов } } } }
Независимо от инструмента, идея одна: при изменении кода автоматически запускаются тесты. Если тесты не проходят — код не принимается.

Как это работает в реальной команде

Вот как выглядит типичный процесс разработки с CI/CD.

1. Разработчик пишет код локально
↓
2. Запускает тесты локально
↓
3. Делает push в общую ветку
↓
4. CI автоматически запускает тесты
↓
5. Если тесты прошли — код принимается
↓
6. Если нет — разработчик исправляет
CI/CD — это автоматический контроль качества. Ошибки ловятся сразу, а не через неделю после релиза.

Типичные ошибки при автоматизации

1. Автоматизировать всё подряд
Некоторые тесты проще выполнить вручную. Автоматизация всего — пустая трата времени.
2. Не поддерживать тесты
Тесты устаревают вместе с кодом. Их нужно обновлять.
3. «Хрупкие» тесты
Тесты, которые падают без причины (flaky tests). Они подрывают доверие к автоматизации.
4. Игнорировать результаты
Если тесты падают, а разработчики не обращают внимания — автоматизация бесполезна.
5. Слишком долгий пайплайн
Если тесты идут час — разработчики не будут ждать. Нужно оптимизировать.

Практическое задание

Примените полученные знания на практике.

Задание 1

Объясните своими словами, чем CI отличается от CD.

Задание 2

Нарисуйте пайплайн для своего учебного проекта: какие шаги должны быть?

Задание 3

Придумайте три теста, которые стоит автоматизировать, и три, которые лучше оставить вручную. Обоснуйте.

Решения разберём на практическом занятии. Не бойтесь ошибаться — это навык, который приходит с опытом.

Шпаргалка

Сохраните этот слайд — здесь все основные понятия лекции.

ТерминЧто значит Автоматизациязапуск тестов программой CIнепрерывная интеграция CDнепрерывная доставка / развёртывание Пайплайнконвейер шагов CI/CD GitHub Actionsинструмент CI/CD от GitHub Jenkinsгибкий инструмент CI/CD

Итоги лекции

Подведём итоги. Вот что вы теперь знаете.

  • ✅ Автоматизация тестирования — это запуск тестов программой.
  • ✅ CI — непрерывная интеграция: код часто сливается и автоматически проверяется.
  • ✅ CD — непрерывная доставка или развёртывание.
  • ✅ Пайплайн — конвейер шагов: сборка → тесты → развёртывание.
  • ✅ GitHub Actions, Jenkins — популярные инструменты CI/CD.
  • ✅ Не всё нужно автоматизировать. Ручное тестирование тоже важно.
  • ✅ CI/CD — это автоматический контроль качества, который ловит ошибки сразу.
На этом теоретический блок по тестированию завершён. Дальше — только практика: вы будете писать тесты, запускать их в CI/CD и проверять качество кода.

Домашнее задание

Задания для самостоятельной работы. Первые два обязательны, остальные — для оценки «отлично».

  1. Нарисуйте пайплайн CI/CD для своего учебного проекта. Опишите каждый шаг.
  2. Объясните своими словами, зачем нужна автоматизация тестирования.
  3. Найдите в интернете пример GitHub Actions для Python или C++. Разберите, что он делает.
  4. Напишите список из 5 тестов, которые стоит автоматизировать в вашем проекте.
  5. Попробуйте настроить GitHub Actions для своего репозитория (если есть аккаунт GitHub).
Если задание кажется сложным — разбейте его на части. Сначала один шаг пайплайна, потом второй.

Что дальше?

Теоретический блок по тестированию завершён. Дальше — только практика.

  • Практика 3: интеграционное тестирование на Python.
  • Практика 4: покрытие кода на Python (pytest-cov).
  • Практика 5: настройка CI/CD для учебного проекта.
Тестирование — это не «дополнительная работа», а неотъемлемая часть разработки. Чем раньше вы это поймёте, тем успешнее будет ваша карьера.

Спасибо за внимание!

🤖

Автоматизация — это не роскошь, а необходимость

В современном мире невозможно представить серьёзный проект без CI/CD. Тесты должны работать сами, чтобы вы могли сосредоточиться на главном — на создании качественного продукта.

🤖 Автоматизация 🔄 CI 🚀 CD ⚙️ GitHub Actions