раздел 43

Автотестирование с нуля

Путь инженера по автотестам: от тест-дизайна и первого баг-репорта до тест-стратегии продукта, своего фреймворка в CI и нагрузочного прогона. Практика сразу на двух треках, Python с pytest и TypeScript с Vitest: трек выбираешь сам, задачи идут парами. Ты младший автотестировщик сервиса билетов «Антракт», до «Ночи продаж» четыре месяца, а в наследство достался репозиторий tests_final_v2/. Тесты проверяются мутантами: тест засчитан, только если ловит спрятанный баг. API-тесты, базы, UI и E2E, двойники, контракты, flaky, CI и метрики на своём стенде в Docker.

117 уроков117 тем · 15 кластеров

Начать раздел
Хочу пройти

Без входа у каждого урока видно начало. Войди, чтобы читать целиком, отмечать пройденное и решать задачи. войти

«Автотестирование с нуля» покупается один раз и остаётся навсегда: 500 ₽. Оплата пока не подключена, доступ открывается промокодом. ввести промокод

Мастерская: Прогон: тесты ядра цен

этапов 0 из 10

Мастерская: Дублёр: касса без сети

этапов 0 из 10

Мастерская: Кулисы: API-тесты в процессе

этапов 0 из 9

Уроки раздела

Профессия и мышление тестировщика

  1. Кто такой автотестировщикJ~25 минкурс
  2. Зачем тестироватьJ~20 минкурс
  3. Жизненный цикл ПО и место тестовJ~25 минкурс
  4. Виды тестированияJ~25 минкурс
  5. Классы эквивалентности и граничные значенияJ~20 минкурс
  6. Таблицы решений, состояния и pairwiseJ~25 минкурс
  7. Баг-репорт и тест-кейсJ~25 минкурс
  8. Босс П1. Чек-лист релизаJ~35 минкурс

Рабочее место

  1. Терминал для тестировщикаJ~25 минкурс
  2. Git для тестировщикаJ~25 минкурс
  3. Как устроен веб: запрос, ответ и коды статусаJ~30 минкурс
  4. JSON, REST и OpenAPI: читаем описание APIJ~25 минкурс
  5. Docker для тестировщикаJ~45 минкурс
  6. DevTools браузераJ~25 минкурс

Язык: Python и JavaScript для автотестов

  1. Первая программаJ~25 минкурс
  2. Значения и типыJ~20 минкурс
  3. Переменные, выражения и условияJ~20 минкурс
  4. КоллекцииJ~20 минкурс
  5. Циклы и обходJ~15 минкурс
  6. ФункцииJ~15 минкурс
  7. Проектирование функций и именаJ~15 минкурс
  8. Модули и пакетыJ~20 минкурс
  9. Ошибки и исключенияJ~25 минкурс
  10. Классы и объектыJ~25 минкурс
  11. Строки и датыJ~20 минкурс
  12. Файлы, JSON, конфиг и переменные окруженияJ~20 минкурс
  13. Асинхронность: ждать и не простаиватьJ~20 минкурс
  14. Типы: подписи, которые проверяет машинаJ~20 минкурс
  15. Качество кода: читаемость, скорость и линтерJ~25 минкурс
  16. Босс. Касса фестиваляJ~25 минкурс

Первые автотесты

Изделие «Прогон: тесты ядра цен», крейт progon

  1. Что такое автотестJ~25 минкурс
  2. Анатомия тестаJ~20 минкурс
  3. Проверки и контрактыJ~25 минкурс
  4. ПараметризацияJ~25 минкурс
  5. Фикстуры: подготовка и уборкаJ~25 минкурс
  6. Организация тестов: папки, conftest и маркерыJ~30 минкурс
  7. Свойства хорошего тестаJ~30 минкурс
  8. TDD с нуля: красный, зелёный, рефакторингJ~20 минкурс
  9. Покрытие кода: что говорит цифра и о чём молчитJ~25 минкурс
  10. Босс П2. Ядро ценJ~25 минкурс

Тестовые двойники и данные

Изделие «Дублёр: касса без сети», крейт dubler

  1. Зависимости: почему юнит-тест не ходит в сетьJ~30 минкурс
  2. Двойники: dummy, stub, spy, mock, fakeJ~40 минкурс
  3. Моки на практикеJ~45 минкурс
  4. Внедрение зависимостей: часы, номера и почта параметромJ~35 минкурс
  5. Время и случайность: тесты без ожидания и без лотереиJ~40 минкурс
  6. Тестовые данные: фабрики и строителиJ~35 минкурс
  7. Property-based тесты: правило вместо примераM~35 минкурс
  8. Snapshot и approval тесты: когда снимок помогает, а когда врётM~25 минкурс
  9. Мутационное тестирование: mutmut и StrykerM~30 минкурс
  10. Босс блока E. Генеральная репетицияM~70 минкурс

API-тестирование и архитектура фреймворка

Изделие «Кулисы: API-тесты в процессе», крейт kulisy

  1. Что проверять в API: статус, тело, заголовки, схема, побочный эффектM~35 минкурс
  2. HTTP-клиент в коде: сессия, базовый URL, таймауты и ретраиM~30 минкурс
  3. Авторизация в API-тестах: токены, роли и вход один разM~30 минкурс
  4. Схема ответа: модели pydantic и zod, JSON Schema из OpenAPIM~30 минкурс
  5. Негативные сценарии и идемпотентность: 401, 403, 409, 422 и Idempotency-KeyM~35 минкурс
  6. Жизненный цикл тестовых данных: создать, проверить, убратьM~30 минкурс
  7. Архитектура API-тестов, часть 1: слои, конфиг и константыM~45 минкурс
  8. Архитектура API-тестов, часть 2: модели, билдеры, фабрики, декораторы и свои проверкиM~50 минкурс
  9. Асинхронные операции: ждать по условию, а не по часамM~35 минкурс
  10. Моки HTTP: respx и MSW перехватывают сеть, а не клиентM~35 минкурс
  11. Отчёты: шаги, вложения и Allure для человека в три часа ночиM~30 минкурс
  12. Босс П3. Наследство ГлебаM~60 минкурс

Базы данных в тестах

  1. SQL для тестировщика: SELECT, WHERE, JOIN и COUNT на базе «Антракта»M~25 минкурс
  2. Проверка в базе после вызова API: результат или реализацияM~30 минкурс
  3. База из тестов: psycopg, pg и слой запросовM~30 минкурс
  4. Данные в базе: сиды, фабрики, откат и изоляцияM~30 минкурс
  5. Testcontainers: настоящий Postgres в тестеM~35 минкурс
  6. Миграции и схема как контрактM~25 минкурс
  7. Гонки: два запроса за одно местоM~35 минкурс
  8. Босс П4. Место 14БM~70 минкурс

UI и E2E

  1. Фронтенд для тестировщика: из чего сделана страницаM~50 минкурс
  2. Локаторы: роль, подпись, текст и data-testidM~60 минкурс
  3. Playwright: первый тест покупкиM~60 минкурс
  4. Ожидания: ни одного sleepM~60 минкурс
  5. Page Object и компонентыM~60 минкурс
  6. Состояние и вход: сессия и данные через APIM~60 минкурс
  7. Сеть в UI-тестах: page.route, MSW и где мок врётM~60 минкурс
  8. Компонентные тесты: проверять как зритель, а не как разработчикM~70 минкурс
  9. Визуальная регрессия и снапшоты разметкиM~70 минкурс
  10. Браузеры, экраны, воркеры и доступностьM~60 минкурс
  11. Хороший e2e и сколько их нужноM~40 минкурс
  12. Босс П5. Кнопка «Купить»M~80 минкурс

Стратегия: какие тесты писать

  1. Пирамида тестов: что в ней верно и что устарелоM~30 минкурс
  2. Трофей, соты и размеры тестов GoogleM~30 минкурс
  3. Unit, integration, contract, e2e: договориться о словахM~35 минкурс
  4. Что тестировать: карта рисков «Антракта»M~30 минкурс
  5. Архитектура и тестируемость: порты, ядро и скромная оболочкаM~40 минкурс
  6. Вертикальные слайсы: где проходит граница тестаM~30 минкурс
  7. Контрактное тестирование: OpenAPI, Pact и кто владеет контрактомM~35 минкурс
  8. Фейки внешних систем и вебхуки: шлюз с памятью, подпись и дублиM~45 минкурс
  9. Босс П6. Партнёр «ПлатиМ»M~80 минкурс

Надёжность набора тестов

  1. Откуда берутся flaky: шесть причин и размер тестаS~30 минкурс
  2. Флакость как вероятность: считать, а не гадатьS~25 минкурс
  3. Карантин: убрать моргающий тест из блокирующих и не потерять егоS~25 минкурс
  4. Изоляция и параллельный прогон: загрязнители, жертвы и свои данныеS~30 минкурс
  5. Скорость набора: профиль, дорогие фикстуры и тесты по изменениямS~30 минкурс
  6. Легаси без тестов: характеристики, швы и ростокS~35 минкурс
  7. Запахи тестов: рефакторинг без потери пойманных баговS~30 минкурс
  8. Босс П7. Пятничный flakyS~60 минкурс

CI/CD и инфраструктура тестов

  1. CI с нуля: конвейер, GitHub Actions и быстрая обратная связьM~45 минкурс
  2. Стенд в CI: docker compose в job, готовность без sleep и логи упавшего стендаM~45 минкурс
  3. Шарды, матрицы и отчёты: e2e на четырёх машинах и итог прямо в PRM~45 минкурс
  4. Ворота качества: что блокирует merge и как тесты не исчезают молчаS~45 минкурс
  5. Окружения: dev, stage, превью веток, флаги функций и тестовые данные на общем стендеS~45 минкурс
  6. Тестирование в проде: smoke после выкладки, синтетика, канарейка и телеметрия как оракулS~40 минкурс
  7. Босс П8. КонвейерS~70 минкурс

Нефункциональное

  1. Нагрузочное тестирование: перцентили, SLO, Locust и k6S~35 минкурс
  2. Профиль «Ночи продаж»: модель трафика, данные и узкое местоS~35 минкурс
  3. Безопасность для тестировщика: IDOR, права и вредные входные данныеS~40 минкурс
  4. Устойчивость: таймауты, повторы, деградация и простой chaosS~35 минкурс
  5. Совместимость и версии API: старые клиенты и дифф спецификацииS~30 минкурс

Метрики и команда

  1. Метрики качества и закон ГудхартаS~30 минкурс
  2. Тест-стратегия и автотестировщик в командеS~25 минкурс

Тесты и ИИ-агенты

  1. TDD в цикле агента: тест как ограничитель и почему агент «чинит» тестыS~30 минкурс
  2. Spec-driven development: критерии приёмки как тестыS~25 минкурс
  3. Тесты, написанные ИИ: что делегировать агенту и как их ревьюитьS~25 минкурс

Финал и карьера

  1. Финал П9. Ночь продажS~80 минкурс

Понятия курса

Понятия разобраны внутри уроков. Нажми на понятие, чтобы открыть урок, где оно объясняется.

Профессия и мышление тестировщика

Рабочее место

Язык: Python и JavaScript для автотестов

Первые автотесты

Тестовые двойники и данные

API-тестирование и архитектура фреймворка

Базы данных в тестах

  • База из тестов: драйвер и слой запросовpsycopg 3 и pg, адрес базы из настроек, параметры вместо склейки строк, слой запросов вместо SQL в тесте, одно соединение на прогон, autocommit и типы драйвера.урок 65 · База из тестов: psycopg, pg и слой запросовопираются: урок 66
  • Босс П4. Место 14БВоспроизвести двойную продажу места тестом с барьером на настоящем стенде, проверить фикс (FOR UPDATE, частичный уникальный индекс, миграция 0002 на данных), набор интеграционных тестов в контейнерах и 50 стабильных прогонов antrakt-check.урок 70 · Босс П4. Место 14Бопираются: урок 71
  • Гонки в тестахCheck-then-act и окно между проверкой и записью; детерминированная гонка через точку переключения, барьер и инвариант на стенде, стабильность в 50 прогонов; частичный уникальный индекс, FOR UPDATE и ON CONFLICT; модель состояний на hypothesis и fast-check как охотник за порядком шагов.урок 69 · Гонки: два запроса за одно местоопираются: урок 70
  • Данные в базе: сиды, фабрики, уборкаСиды, данные теста и мусор; связные фабрики в базе, случайность с сидом и счётчик для уникальности; откат транзакции, TRUNCATE и удаление по префиксу; уборщик и изоляция параллельных потоков.урок 66 · Данные в базе: сиды, фабрики, откат и изоляцияопираются: урок 67
  • Миграции и схема как контрактОкно выкатки, в котором старый код живёт на новой схеме; что его ломает; expand/contract; тесты миграций вперёд с нуля, на данных, на совместимость и назад; миграция на грязных данных с предварительной проверкой.урок 68 · Миграции и схема как контрактопираются: урок 69
  • Проверка в базе после вызова APIНаблюдаемое поведение против реализации, управляемые и неуправляемые зависимости, когда проверка в базе честная (инвариант, скрытое обязательство, схема, слой данных) и как узнать проверку реализации по рефакторингу.урок 64 · Проверка в базе после вызова API: результат или реализацияопираются: урок 65
  • SQL для тестировщикаSELECT, WHERE, LIKE и ловушка с _, COUNT, JOIN, GROUP BY с HAVING и NOT EXISTS на базе «Антракта»: разбор инцидента, поиск дублей и мусора тестов, правила работы с общей базой только на чтение.урок 63 · SQL для тестировщика: SELECT, WHERE, JOIN и COUNT на базе «Антракта»опираются: урок 64
  • Testcontainers: настоящий Postgres в тестеГде SQLite врёт (голые колонки, типы, timestamptz, LIKE, блокировки), Postgres в контейнере из кода теста, миграции стенда вместо второй схемы, контейнер на прогон и откат на тест, параллельные воркеры и версия образа.урок 67 · Testcontainers: настоящий Postgres в тестеопираются: урок 68

UI и E2E

Стратегия: какие тесты писать

Надёжность набора тестов

CI/CD и инфраструктура тестов

Нефункциональное

Метрики и команда

Тесты и ИИ-агенты

Финал и карьера

  • Финал П9. Ночь продажТест-стратегия релиза, фреймворк из П3-П8, CI, нагрузочный прогон и синтетический мониторинг, защита перед командой; грейды, портфолио и собеседование автотестировщика.урок 117 · Финал П9. Ночь продаж