Складчина: [Stepik] Автоматизация тестирования Backend с Python (Никита Филонов)
Ссылка на картинку
Чему вы научитесь
Проектировать и реализовывать стабильные, быстрые и детерминированные автотесты для backend-систем, работающих в микросервисной архитектуре.
Строить изолированную тестовую инфраструктуру для backend-приложений с использованием Docker и Docker Compose, включая сервисы, базы данных, очереди и мок-зависимости.
Разрабатывать изоляционные автотесты, которые запускаются поверх локального тестового стенда и воспроизводимо работают как локально, так и в CI/CD.
Тестировать backend-приложения, использующие HTTP и gRPC протоколы, с акцентом на проверку бизнес-сценариев, а не отдельных запросов.
Тестировать асинхронные event-driven сценарии с использованием Kafka без флейков и недетерминированного поведения.
Проектировать и реализовывать собственные mock-сервисы для HTTP и gRPC, управляя поведением внешних интеграций на уровне сценариев.
Работать с контрактами взаимодействия микросервисов и использовать их как основу для тестирования и мокирования.
Разрабатывать сценарные API-клиенты для HTTP, gRPC и Kafka, применимые в автотестах, моках и инфраструктурных сценариях.
Использовать сценарный подход для управления поведением системы и зависимостей в автотестах.
Тестировать backend-системы через API, события Kafka и прямую работу с базой данных (PostgreSQL), осознанно выбирая подход в зависимости от сценария и архитектуры системы.
Проектировать тесты так, чтобы они не зависели от порядка выполнения, состояния среды и внешних факторов.
Организовывать детерминированную подготовку тестовых данных и управлять состоянием системы перед выполнением тестов.
Интегрировать запуск тестового стенда и изоляционных автотестов в CI/CD пайплайн с автоматическим поднятием инфраструктуры, выполнением тестов и публикацией Allure-отчётов.
Анализировать причины нестабильности автотестов и устранять флейки на архитектурном уровне, а не через ретраи и костыли.
Проектировать тестовую систему так, чтобы автотесты выполнялись за миллисекунды, а асинхронные сценарии — за предсказуемое и контролируемое время.