Автоматизация тестирования и CI/CD
Мы научились писать тесты и даже запускать их вручную. Но представьте, что в проекте 1000 тестов, и каждый раз после изменения кода нужно запускать их все. Вручную это займёт часы. Именно для этого существует автоматизация тестирования и CI/CD.
Сегодня мы разберём, как тесты запускаются сами, при каждом изменении кода, и как это помогает не «сломать» работающую программу.
План лекции
Сегодня мы разберём, как автоматизировать тестирование и встроить его в процесс разработки.
- 1 Что такое автоматизация тестирования
- 2 Плюсы и минусы автоматизации
- 3 Что такое CI (непрерывная интеграция)
- 4 Что такое CD (непрерывная доставка)
- 5 Пайплайн — конвейер тестирования
- 6 Пример: GitHub Actions
- 7 Пример: Jenkins
- 8 Как это работает в реальной команде
- 9 Типичные ошибки
- 10 Итоги и практика
Что такое автоматизация тестирования
Автоматизация тестирования — это когда тесты запускаются программой, а не человеком. Специальные инструменты выполняют тесты, сравнивают результаты и сообщают об ошибках.
1000 тестов за минуты, а не часы.
Один и тот же результат каждый раз.
Человек может устать, робот — нет.
Автоматические отчёты о результатах.
Плюсы и минусы автоматизации
Автоматизация — это не «серебряная пуля». У неё есть и плюсы, и минусы.
Экономия времени, повторяемость, раннее обнаружение ошибок, поддержка регрессии.
Дорого на старте, требует навыков, тесты нужно поддерживать, не всё можно автоматизировать.
Что такое CI (непрерывная интеграция)
CI (Continuous Integration, «непрерывная интеграция») — это практика, при которой разработчики часто (несколько раз в день) сливают свой код в общую ветку.
Что такое CD (непрерывная доставка)
CD может означать две вещи: Continuous Delivery (непрерывная доставка) и Continuous Deployment (непрерывное развёртывание).
Код всегда готов к выпуску. Но решение о выпуске принимает человек.
Код автоматически выпускается в продакшен после прохождения тестов.
Пайплайн — конвейер тестирования
Пайплайн (pipeline, «конвейер») — это последовательность шагов, которые выполняются автоматически при изменении кода.
Пример: GitHub Actions
GitHub Actions — это популярный инструмент для CI/CD, встроенный в GitHub. Он позволяет запускать тесты автоматически при каждом коммите.
Пример: Jenkins
Jenkins — это ещё один популярный инструмент для CI/CD. Он более гибкий, но и более сложный в настройке.
Как это работает в реальной команде
Вот как выглядит типичный процесс разработки с CI/CD.
Типичные ошибки при автоматизации
Некоторые тесты проще выполнить вручную. Автоматизация всего — пустая трата времени.
Тесты устаревают вместе с кодом. Их нужно обновлять.
Тесты, которые падают без причины (flaky tests). Они подрывают доверие к автоматизации.
Если тесты падают, а разработчики не обращают внимания — автоматизация бесполезна.
Если тесты идут час — разработчики не будут ждать. Нужно оптимизировать.
Практическое задание
Примените полученные знания на практике.
Задание 1
Объясните своими словами, чем CI отличается от CD.
Задание 2
Нарисуйте пайплайн для своего учебного проекта: какие шаги должны быть?
Задание 3
Придумайте три теста, которые стоит автоматизировать, и три, которые лучше оставить вручную. Обоснуйте.
Шпаргалка
Сохраните этот слайд — здесь все основные понятия лекции.
Итоги лекции
Подведём итоги. Вот что вы теперь знаете.
- ✅ Автоматизация тестирования — это запуск тестов программой.
- ✅ CI — непрерывная интеграция: код часто сливается и автоматически проверяется.
- ✅ CD — непрерывная доставка или развёртывание.
- ✅ Пайплайн — конвейер шагов: сборка → тесты → развёртывание.
- ✅ GitHub Actions, Jenkins — популярные инструменты CI/CD.
- ✅ Не всё нужно автоматизировать. Ручное тестирование тоже важно.
- ✅ CI/CD — это автоматический контроль качества, который ловит ошибки сразу.
Домашнее задание
Задания для самостоятельной работы. Первые два обязательны, остальные — для оценки «отлично».
- Нарисуйте пайплайн CI/CD для своего учебного проекта. Опишите каждый шаг.
- Объясните своими словами, зачем нужна автоматизация тестирования.
- Найдите в интернете пример GitHub Actions для Python или C++. Разберите, что он делает.
- Напишите список из 5 тестов, которые стоит автоматизировать в вашем проекте.
- Попробуйте настроить GitHub Actions для своего репозитория (если есть аккаунт GitHub).
Что дальше?
Теоретический блок по тестированию завершён. Дальше — только практика.
- Практика 3: интеграционное тестирование на Python.
- Практика 4: покрытие кода на Python (pytest-cov).
- Практика 5: настройка CI/CD для учебного проекта.
Спасибо за внимание!
🤖
Автоматизация — это не роскошь, а необходимость
В современном мире невозможно представить серьёзный проект без CI/CD. Тесты должны работать сами, чтобы вы могли сосредоточиться на главном — на создании качественного продукта.