Складчина: Нагрузочное тестирование на Python. Расширенный [Stepik] [Никита Филонов]
Чему вы научитесь
- Писать нагрузочные тесты на Python с использованием Locust.
- Создавать сложные сценарии нагрузки с использованием TaskSet, SequentialTaskSet, event hooks.
- Разрабатывать масштабируемые нагрузочные фреймворки с учётом архитектурных паттернов и лучших практик.
- Запускать нагрузочные тесты в CI/CD пайплайне.
- Поднимать микросервисные системы с помощью Docker Compose и использовать их в автотестах и нагрузке.
- Реализовывать mock-сервисы для HTTP с использованием FastAPI.
- Реализовывать mock-сервисы для gRPC с использованием grpcio.
- Проектировать гибкие, переиспользуемые HTTP/gRPC API-клиенты, применимые в нагрузке, сидинге и автотестах.
- Интерпретировать клиентские метрики: RPS, latency, response time, percentiles.
- Анализировать системные метрики: CPU, RAM, disk I/O, network.
- Работать с современными инструментами: Kafka UI, pgAdmin, Postman, MinIO (S3), Redis, Grafana, Docker, Docker Compose, GitLab CI, Postman, curl, grpcurl.
- Применять библиотеку HTTPX для написания HTTP-клиентов.
- Использовать Pydantic и Pydantic Settings для валидации данных и настройки проекта
- Применять Faker для генерации тестовых данных.
- Оценивать и формировать нагрузочные профили на основе реальных сценариев использования.
- Разрабатывать сценарии сидинга и собственный сидинг-билдер для подготовки базы перед нагрузочным тестом тестовых данных перед нагрузочнывм тестированием.
- Понимать и применять принципы микросервисной и монолитной архитектуры, различать их особенности и ограничения.
- Анализировать архитектурные особенности нагружаемой системы: понимать, что, зачем и как мы тестируем.
- Использовать Prometheus + cAdvisor для сбора и анализа метрик на уровне контейнеров и сервисов.
- Эффективно проходить собеседования: получить практические советы, применимые в реальной жизни.
- Работать с Git, публиковать и доводить до финала проект на GitHub, GitLab, что станет отличным дополнением к резюме.
- Закрепиться на позиции после устройства на работу и продолжать профессиональный рост.
Для кого этот курс
— Для QA-инженеров (ручных и автоматизаторов), которые хотят выйти за пределы функционального тестирования и научиться проверять производительность систем, строить нагрузочные сценарии и анализировать реальные метрики.
— Для QA Automation-инженеров, которые уже уверенно пишут автотесты, но хотят прокачать навыки работы с нагрузкой, HTTP/gRPC, сидингом и CI/CD.
— Для разработчиков, которые хотят лучше понимать, как их сервисы ведут себя под нагрузкой, как анализировать узкие места и проектировать системы с учётом масштабирования.
— Для DevOps и SRE-инженеров, которым важно понимать, как проводить нагрузочное тестирование до релиза, отслеживать системные метрики и автоматизировать проверку SLA.
— Для начинающих специалистов, которые планируют войти в IT через тестирование и хотят с самого старта формировать инженерное мышление и разбираться в архитектуре сложных систем.
— Для тех, кто ищет работу или готовится к собеседованиям на позиции QA/performance-инженера, и хочет иметь в портфолио не просто курс, а фундаментальный, практически ориентированный опыт.
— Для тех, кто уже проходил курсы по Locust, JMeter или k6, но чувствует, что не понимает, зачем и как всё это работает. Этот курс поможет выстроить системную картину и избавиться от подхода «просто запускаю нагрузку».
— Для инженеров, которым важно разбираться в микросервисной архитектуре, взаимодействии сервисов, очередях, базе данных, кешах, и понимать, что именно нагружается и как это влияет на систему в целом.
Спойлер: программа курса Приветствие и инструкции
- Знакомимся
- Советы по изучению материала
- Инструкции по отправке заданий на проверку
- Поддержка от преподавателя и вопросы
- Правила работы с курсом и коммуникации
Введение в профессию QA Performance Engineer
- Виды тестирования производительности
- Системные ресурсы: CPU и память
- Метрики нагрузочного тестирования
- Клиент-серверная архитектура
- Монолитная архитектура
- Микросервисная архитектура
- Инструменты нагрузочного тестирования
Настройка окружения
- Установка и настройка окружения Python
- Установка и настройка PyCharm
- Установка и знакомство с Docker
- Установка и знакомство с Docker Compose
- Установка и настройка Postman
Система контроля версий Git
- Начало работы с Git
- Публикация проекта на GitHub
- Работа с GitHub Desktop
Тестовый стенд
- Установка и настройка тестового стенда
- Разбор архитектуры тестового стенда
- Практика работы с хранилищем файлов S3
- Практика работы с базой данных PostgreSQL
- Практика работы с системой мониторинга Grafana
- Практика работы с очередями Kafka
Основы работы с API
- Форматы представления данных
- Знакомство с API
- Знакомство с HTTP протоколом
- Знакомство с gRPC протоколом
Основы работы с HTTP
- Введение в HTTPX
- Практикуемся в работе с HTTPX
- Знакомство с HTTP API клиентами
- Практикуемся в реализации HTTP API клиентов
- Практикуемся в использовании HTTP API клиентов
Основы работы с Pydantic
- Знакомство с Pydantic
- Применяем Pydantic в HTTP API клиентах
- Знакомство с Faker
Основы работы с gRPC
- Введение в grpcio
- Практикуемся в работе с grpcio
- Знакомство с gRPC API клиентами
- Практикуемся в реализации gRPC API клиентов
- Практикуемся в использовании gRPC API клиентов
Введение в Locust
- Знакомство с Locust
- Подготовка HTTP API клиента для Locust
- Использование HTTP API клиентов в нагрузочных сценариях
- Подготовка gRPC API клиента для Locust
- Использование gRPC API клиентов в нагрузочных сценариях
- Сценарии нагрузки в Locust: User, TaskSet и SequentialTaskSet
- Работа с настройками Locust
- Отчеты Locust: HTML, CSV, JSON
- Как выбрать профиль нагрузки?
- Рефакторинг и улучшение нагрузочных тестов
Подготовка данных для нагрузочного тестирования
- Что такое сидинг и зачем он нужен?
- Пишем сидинг-билдер
- Практика генерации данных с помощью сидингов
Практика нагрузочного тестирования HTTP сервисов
- Практика нагрузочного тестирования. Часть 1
- Практика нагрузочного тестирования. Часть 2
- Практика нагрузочного тестирования. Часть 3
Практика нагрузочного тестирования gRPC сервисов
- Практика нагрузочного тестирования. Часть 1
- Практика нагрузочного тестирования. Часть 2
- Практика нагрузочного тестирования. Часть 3
Реализация mock сервиса
- Архитектура mock сервиса
- Знакомство с FastAPI
- Реализация mock сервиса
Улучшение нагрузочных тестов
- Настройки нагрузочных тестов с Pydantic
- Добавляем логирование для нагрузочных тестов
- Улучшение работы с API клиентами с помощью Enum для URI
Запуск нагрузочных тестов на CI/CD
- Введение в CI/CD
- CI/CD системы
- Подготовка проекта к запуску на CI
- Запуск нагрузочных тестов на GitHub Actions
- Запуск нагрузочных тестов на GitLab CI
Аналитика нагрузочного тестирования
- Регрессионный анализ в нагрузочном тестировании
- Установка и настройка Load Testing Hub
- Знакомство с Load Testing Hub
- Практика: загрузка данных в Load Testing Hub
AI Review в нагрузочных тестах
- Что такое AI Review и зачем он нужен
- Инструмент AI Review: установка и базовое использование
- Интеграция AI Review в CI/CD
Резюме
- Итоговый проект
- Рекомендации по составлению резюме
- Рекомендации по прохождению собеседований