Искусственный интеллектПродвинутыйСкоро
Курс Тестирование и MLOps
Как тестировать то, что каждый раз отвечает иначе: pytest и фикстуры, метрики качества, CI, kind и Prometheus.
Курс готовится к публикации
Материалы курса написаны и проверены, идёт подготовка к выходу на сайте: программа ниже — настоящая. Открытые курсы можно читать уже сейчас, а о запуске этого напишите — ответим, когда он появится.
- Модулей
- 12
- Ак. часов
- 108
- Разделов
- 118
Что нужно знать заранее. Python на уровне функций и классов, базовый HTTP (метод, статус-код, тело запроса), работа в терминале и азы git (репозиторий, коммит, клон). Опыт тестирования, знакомство с Kubernetes и машинное обучение НЕ требуются: сервис-объект даётся готовым в модуле 1, прохождение курса «Интеграция Ollama и DeepSeek в веб-системы» не нужно.
Программа курса
12 модулей; каждый — полноценное занятие с теорией, листингами, практикой и домашним заданием.
- 1
Что ломается в ИИ-системе
Этот курс о том, как проверять систему, часть которой отвечает каждый раз по-новому…
Предпосылки курсаСервис как объект тестированияОтказ без ошибкиПервый тест на pytestПроверяемые свойства ответаКарта курса
- 2
Основы pytest
В модуле 1 тест был один, лежал в случайном файле и требовал, чтобы на машине был запущен сервис и работала модель…
Поиск тестовКлючи запускаРазбор assertФикстурыПараметризацияМаркерыПокрытие
- 3
Проверки, которые не запускают программу
В модуле 2 появился инструмент, который запускает код и сравнивает полученное с ожидаемым…
PEP 8 и единый стильruff как линтер и форматтерРазбор пятнадцати находокmypy и строгий режимДефект мимо зелёных тестовПредупреждения и pre-commit
- 4
Тесты кода, который ходит в сеть
Раздел 1.4 закончился обещанием: тест, зависящий от живой модели, — не тест, а лотерея, и способ обойтись без неё разбирается в четвёртом модуле. Пора его выполнить.
Отказ живого тестаГраница подменыrespxОтправленный запросЗаписанные ответыПять отказовАсинхронные тесты
- 5
Ответ модели как данные
Модуль 1 оставил незакрытый вопрос. Сравнивать ответ модели с эталонной строкой нельзя, значит, проверять надо свойства ответа…
Просьба вместо договораЗаплатка регуляркойПараметр formatPydantic как договорОтказ вместо паденияПовтор и его пределТесты на испорченных ответахФорма против содержания
- 6
Числа вместо впечатлений
Модуль 5 закончился границей, которую стоит повторить дословно. Схема гарантирует форму ответа и не гарантирует его правильность…
Размеченный наборМатрица ошибокЛенивый классификаторТочность и полнотаУсреднения macro и microПорог и ROC-криваяМетрика как тест
- 7
Качество ответа, у которого нет эталона
Модуль 6 научил считать качество там, где верный ответ известен заранее. Обращение размечено человеком, классификатор назвал категорию, дальше арифметика: совпало…
Свойства вместо эталонаНабор примеров как кодОшибки самих проверокШум замераРегрессия промптовСудья из моделиГраницы судьи
- 8
Тесты интерфейса на Selenium
Всё, что курс проверял до сих пор, лежит ниже интерфейса: тело запроса, код ответа, схема, метрика на размеченном наборе. Пользователь не видит ничего из этого…
Что видит браузерДрайвер и протоколПоиск элементовЯвные ожиданияФлаки-тестыОбъект страницыУборка после теста
- 9
Непрерывная интеграция: пайплайн вместо памяти
Восемь модулей подряд мы запускали проверки руками: ruff check, ruff format --check, mypy, pytest. Пока проект держит один человек, этого хватает…
Обработчик коммитов против пайплайнаУстройство workflowЗелёный пайплайн, который ничего не проверилКэш и замерМатрица версийАртефактыGitLab CI и Jenkins
- 10
Контейнер, кластер и пробы
До этого модуля сервис жил в папке на машине разработчика и запускался командой uvicorn…
Образ сервисаСлои и кэш сборкиЗачем нужен KubernetesКластер kindDeployment и ServiceПробы готовности и живучестиОбновление и ресурсы
- 11
Наблюдение за сервисом в работе
Все десять предыдущих модулей отвечали на один вопрос: работает ли код. Тесты запускаются до выкладки, ловят то, о чём мы догадались подумать, и молчат обо всём…
Мониторинг против тестов и журналаСчётчик, датчик, гистограммаОпасные меткиPrometheus и язык запросовСреднее и длинный хвостМетрики моделиДашборд и алерты
- 12
Проверенный сервис поддержки
В одиннадцати модулях курса мы разбирали сервис поддержки с разных сторон: писали тесты, ловили отказы, при которых не возникает исключений, подменяли сеть,…
Постановка задачиОбязательный минимумСтруктура репозиторияОтчёт с замерамиГде проект разваливаетсяСамопроверка