Нагрузочное тестирование на Python. Расширенный [Stepik] [Никита Филонов]

Складчина: Нагрузочное тестирование на Python. Расширенный [Stepik] [Никита Филонов]

upload_2026-1-17_0-11-54.png

Чему вы научитесь

  • Писать нагрузочные тесты на 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, но чувствует, что не понимает, зачем и как всё это работает. Этот курс поможет выстроить системную картину и избавиться от подхода «просто запускаю нагрузку».
— Для инженеров, которым важно разбираться в микросервисной архитектуре, взаимодействии сервисов, очередях, базе данных, кешах, и понимать, что именно нагружается и как это влияет на систему в целом.

Спойлер: программа курса Приветствие и инструкции

  1. Знакомимся
  2. Советы по изучению материала
  3. Инструкции по отправке заданий на проверку
  4. Поддержка от преподавателя и вопросы
  5. Правила работы с курсом и коммуникации

Введение в профессию QA Performance Engineer

  1. Виды тестирования производительности
  2. Системные ресурсы: CPU и память
  3. Метрики нагрузочного тестирования
  4. Клиент-серверная архитектура
  5. Монолитная архитектура
  6. Микросервисная архитектура
  7. Инструменты нагрузочного тестирования

Настройка окружения

  1. Установка и настройка окружения Python
  2. Установка и настройка PyCharm
  3. Установка и знакомство с Docker
  4. Установка и знакомство с Docker Compose
  5. Установка и настройка Postman

Система контроля версий Git

  1. Начало работы с Git
  2. Публикация проекта на GitHub
  3. Работа с GitHub Desktop

Тестовый стенд

  1. Установка и настройка тестового стенда
  2. Разбор архитектуры тестового стенда
  3. Практика работы с хранилищем файлов S3
  4. Практика работы с базой данных PostgreSQL
  5. Практика работы с системой мониторинга Grafana
  6. Практика работы с очередями Kafka

Основы работы с API

  1. Форматы представления данных
  2. Знакомство с API
  3. Знакомство с HTTP протоколом
  4. Знакомство с gRPC протоколом

Основы работы с HTTP

  1. Введение в HTTPX
  2. Практикуемся в работе с HTTPX
  3. Знакомство с HTTP API клиентами
  4. Практикуемся в реализации HTTP API клиентов
  5. Практикуемся в использовании HTTP API клиентов

Основы работы с Pydantic

  1. Знакомство с Pydantic
  2. Применяем Pydantic в HTTP API клиентах
  3. Знакомство с Faker

Основы работы с gRPC

  1. Введение в grpcio
  2. Практикуемся в работе с grpcio
  3. Знакомство с gRPC API клиентами
  4. Практикуемся в реализации gRPC API клиентов
  5. Практикуемся в использовании gRPC API клиентов

Введение в Locust

  1. Знакомство с Locust
  2. Подготовка HTTP API клиента для Locust
  3. Использование HTTP API клиентов в нагрузочных сценариях
  4. Подготовка gRPC API клиента для Locust
  5. Использование gRPC API клиентов в нагрузочных сценариях
  6. Сценарии нагрузки в Locust: User, TaskSet и SequentialTaskSet
  7. Работа с настройками Locust
  8. Отчеты Locust: HTML, CSV, JSON
  9. Как выбрать профиль нагрузки?
  10. Рефакторинг и улучшение нагрузочных тестов

Подготовка данных для нагрузочного тестирования

  1. Что такое сидинг и зачем он нужен?
  2. Пишем сидинг-билдер
  3. Практика генерации данных с помощью сидингов

Практика нагрузочного тестирования HTTP сервисов

  1. Практика нагрузочного тестирования. Часть 1
  2. Практика нагрузочного тестирования. Часть 2
  3. Практика нагрузочного тестирования. Часть 3

Практика нагрузочного тестирования gRPC сервисов

  1. Практика нагрузочного тестирования. Часть 1
  2. Практика нагрузочного тестирования. Часть 2
  3. Практика нагрузочного тестирования. Часть 3

Реализация mock сервиса

  1. Архитектура mock сервиса
  2. Знакомство с FastAPI
  3. Реализация mock сервиса

Улучшение нагрузочных тестов

  1. Настройки нагрузочных тестов с Pydantic
  2. Добавляем логирование для нагрузочных тестов
  3. Улучшение работы с API клиентами с помощью Enum для URI

Запуск нагрузочных тестов на CI/CD

  1. Введение в CI/CD
  2. CI/CD системы
  3. Подготовка проекта к запуску на CI
  4. Запуск нагрузочных тестов на GitHub Actions
  5. Запуск нагрузочных тестов на GitLab CI

Аналитика нагрузочного тестирования

  1. Регрессионный анализ в нагрузочном тестировании
  2. Установка и настройка Load Testing Hub
  3. Знакомство с Load Testing Hub
  4. Практика: загрузка данных в Load Testing Hub

AI Review в нагрузочных тестах

  1. Что такое AI Review и зачем он нужен
  2. Инструмент AI Review: установка и базовое использование
  3. Интеграция AI Review в CI/CD

Резюме

  1. Итоговый проект
  2. Рекомендации по составлению резюме
  3. Рекомендации по прохождению собеседований