Учебный центр
Курсы и материалы из собственной работы. Не из чужих слайдов.
Курсы
Все курсыPytest с нуля: Первые тесты за 2.5 часа
Первый тест за 10 минут. Assert, фикстуры, параметризация — только база для быстрой победы.
Pytest для джунов: Моки и интеграция
Моки для HTTP/файлов, coverage, pytest.ini, conftest.py — от учебных тестов к реальным задачам.
Pytest: Профессиональные инструменты
pytest-xdist (8x ускорение), src layout, продвинутые фикстуры, плагины — production-ready инструменты.
k6: нагрузочное тестирование как система
70% практики, 30% методологии: учимся строить стратегию нагрузочного тестирования, писать реалистичные сценарии, читать метрики и вшивать k6 в релизный процесс
Учебные материалы
Разборы из работы. Открыты целиком.
Рекомендуемые
asyncio в Python
Пока запрос ждёт БД, поток может делать другую работу. Когда это спасает, когда event loop встаёт, и как не заблокировать его синхронным кодом.
Feature-Sliced Design, когда components/ уже не открывается
Двести файлов в одной папке, фичу нельзя выкинуть. Слои, слайсы и public API, чтобы импорт шёл вниз, а не во все стороны.
TypeScript, если уже пишешь на JavaScript
Тот же JS, только редактор орёт до запуска. Типы, интерфейсы, generics и как переезжать по одному файлу.
Docker и Compose, чтобы окружение перестало спорить
У разработчика Python 3.12, у тестировщика 3.9, на сервере другой Postgres. Dockerfile и compose, чтобы это перестало быть разговором на час.
Утечки памяти в Python
Сервис не падает сразу. Память растёт неделю, потом OOM. Как это увидеть до ночи с пейджером: tracemalloc, циклы ссылок, кэш, который никто не чистит.
Poetry и uv вместо requirements.txt
Poetry собирает и публикует пакет. uv ставит зависимости быстро. Оба фиксируют версии, чтобы «у меня поставилось» совпало с CI.
Типы в Python, чтобы ревью не гадало
Аннотации, TypedDict, Protocol, mypy. Типы не ускоряют рантайм. Они ускоряют человека, который читает чужой код.
Омниканал: клиент не должен чинить ваши стены
Начал на сайте, закончил в магазине. Если консультант не видит, что человек уже купил, это не омниканал, а набор витрин.
PostgreSQL из Python
SQLAlchemy, asyncpg, N+1, индексы, EXPLAIN. Когда ORM врёт, и что смотреть в плане запроса.
Все материалы
Упаковка идеи: кому, зачем, что меняется
Не «всем, кому нужно качество». Сегмент, боль, проверка гипотезы за одну формулировку.
Umami: своя аналитика без Google
Скрипт в два килобайта, данные на своём сервере. Куда люди уходят, какой канал приводит заявку, где кнопку не видно.
Customer Journey Map: где клиент спотыкается
Карта пути: что человек пытается сделать, где бросает, какой отдел держит этот шов.
Self-hosted CMS и Next.js
Strapi, Directus, Keystone, Payload, Medusa. Не что моднее, а кому принадлежит контент, кто его правит и что ломается при деплое.
Когда flaky в CI, смотрите трейс, не угадывайте
Тест падает раз в двадцать. Лог врёт порядком. Трейс, счётчик и артефакт рядом с тестом, без продового стека.
pytest-benchmark: бюджет времени рядом с тестом
Сериализация вдруг стала в три раза медленнее, а функциональные тесты зелёные. Бюджет в миллисекундах и baseline в CI.
Тест не должен ждать семь секунд
Retry с паузами 1, 2, 4 секунды. В проде это нормально. В тесте sleep надо подменить, иначе сюит спит.
Синхронные тесты БД, пока async ещё рано
Тест вставил пользователя и оставил его в базе. Следующий падает. Фикстуры, транзакция, rollback без async.
Гонка в потоках: два пакета молока
Два потока прочитали одно число и оба записали плюс один. Счётчик врёт. Холодильник с молоком, потом Lock.
Если нужен разбор один на один, напишите.
Разбор задачи или материала. Отвечаю в течение суток.