TDD и CI/CD
Этот материал объясняет ключевые понятия TDD и CI/CD с примерами, контрольными вопросами и основными компонентами.
Коротко
TDD: тесты пишут до кода (Red–Green–Refactor). CI/CD: автоматизированная интеграция и доставка через pipeline.
Определение
TDD работает по циклу:
- Red: написать тест, который не проходит
- Green: написать минимум кода для прохождения теста
- Refactor: улучшить код без изменения функциональности
CI/CD:
- CI: сборка и тестирование после каждого коммита
- CD: автоматизированная доставка (Delivery до staging, Deployment до production)
Важные моменты для экзамена
- TDD = сначала тесты
- Red-Green-Refactor цикл
- CI = автоматизированная сборка и тестирование
- CD = автоматизированная доставка
- TDD повышает покрытие тестами
- CI/CD снижает ручные ошибки (безопасность)
- Быстрые релизы (экономическая эффективность)
- Pipeline должен быть задокументирован
Основные компоненты
- Unit Tests
- Фреймворки для тестирования (JUnit/pytest)
- CI серверы (Jenkins/GitHub Actions)
- Build Tools
- Container/Deployment
- Pipeline скрипты
- Стратегии rollback
- Staging окружение
- Инструменты для проверки качества кода
Пример с pytest
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5
Преимущества и недостатки
Преимущества
- Выше качество кода
- Автоматизированная QA
- Быстрая локализация ошибок
- Воспроизводимые развертывания
Недостатки
- Начальные инвестиции времени
- Требует инфраструктуры
- Нужна дисциплина в команде
Типичные экзаменационные вопросы
- Что означает Red-Green-Refactor? Написать тест, реализовать минимум, затем рефакторить.
- Цель CI? Автоматизированное тестирование и интеграция кода.
- В чём разница Delivery и Deployment? Delivery доставляет в staging, Deployment доставляет в production.
Развернутый ответ
TDD заставляет с самого начала продумать требования и интерфейсы. CI/CD в DevOps контексте стал стандартом и показывает профессиональный подход в проектах.
Как учиться
- Разработать простую функцию через TDD.
- Настроить GitHub Actions pipeline для сборки и тестов.
- Нарисовать pipeline на бумаге (подготовка к экзамену).
- Ничего не выпускать без тестов.



