Скилл Quality

Тестирование

Пирамида тестирования, фреймворки (Vitest, Playwright, bats), правила моков, Live Smoke-Test Gate для raw SQL. Для написания и ревью тестов.

Обзор

Testing — справочный навык, загружаемый разработчиками и ревьюерами при написании или проверке тестов. Определяет пирамиду тестирования, рекомендуемые фреймворки по уровням и строгие правила мокирования, которые предотвращают хрупкие или вводящие в заблуждение тесты.

Пирамида тестирования

  1. Юнит-тесты (70%) — тестируют отдельные функции и классы в изоляции. Мокают все внешние зависимости. Основа тестирования с самым быстрым циклом обратной связи.
  2. Интеграционные тесты (20%) — тестируют взаимодействие между модулями, сервисами и базами данных. Проверяют совместную работу компонентов.
  3. E2E-тесты (10%) — тестируют критические пользовательские сценарии целиком. Самые дорогие в написании и поддержке — фокус на самых ценных путях.

Рекомендуемые фреймворки

  • Бэкенд — Jest или Vitest для Node.js/TypeScript, pytest для Python
  • Фронтенд — Vitest с React Testing Library для компонентных тестов
  • E2E — Playwright (предпочтительно) или Cypress

Правила мокирования

  • Мокайте внешние API (Stripe, AWS, сторонние сервисы) — никогда не обращайтесь к реальным сервисам в тестах
  • Мокайте БД в юнит-тестах — реальные базы только в интеграционных
  • Используйте dependency injection для явного мокирования
  • Никогда не подгоняйте данные моков, чтобы тесты прошли
  • Мокайте на границах, не внутри бизнес-логики

Продвинутые шлюзы тестирования

  • Live Smoke-Test Gate — обязателен для raw SQL, кросс-datasource кода, миграций, queue/webhook. Моки не ловят запросы к неправильному клиенту, которые компилируются, но бьют не в ту БД. Запустите запрос на реальном datasource и запишите результат.
  • Live Docker Smoke Test — обязателен для кросс-контейнерных HTTP/RPC вызовов, volume-mounted конфигов, путей файловой системы. 241 юнит-тест может пройти, пока 3 рантайм-бага прячутся в exec-битах, хостнеймах и SSL-конфиге.
  • Обнаружение тихих сбоев — для подпроцессов с exit 0 при ошибке (LLM CLI, облачные инструменты). Парсите структурированный вывод вместо проверки exit-кода.
  • Spec-Lint тесты — regex-проверки markdown-контрактов в commands/*.md. Защита от тихой регрессии спецификаций команд.
  • Тестирование shell-скриптов (bats-core) — красно-зелёная дисциплина для bash-скриптов. Изоляция через BATS_TEST_TMPDIR + редирект HOME. Fixture-builder, SUCCESS-marker, guard-тесты для деструктивных флагов.
  • Post-Deploy Smoke Gate — при смене пользователя деплоя прогоните полный цикл от имени нового пользователя до переключения cron/systemd.

Когда используется

Загружается при /dr-do (TDD-цикл: тест, реализация, рефакторинг) и при /dr-qa (ревью покрытия и качества тестов). Справочный навык без привязки к модели.