Modern QA2026Рабочий процесс Claude Code: от спецификации до набора тестов
Join

Course02 AI-Augmented Test Design

Cutting-edge · Chapter 02

Рабочий процесс Claude Code: от спецификации до набора тестов

Updated Jul 2026

Почему Claude Code превосходен в генерации тестов

Claude Code работает как CLI-агент с окном контекста в 200K токенов, способностью читать файлы из вашей файловой системы, выполнять команды и итерировать результаты. Это делает его уникально мощным для генерации тестов, потому что он может:

  1. Читать вашу реальную кодовую базу -- без необходимости копирования и вставки
  2. Следовать существующим паттернам тестов -- он читает ваши тестовые файлы и воспроизводит стиль
  3. Запускать сгенерированные тесты -- он выполняет pytest/jest, читает ошибки и исправляет их
  4. Итерировать автономно -- один промпт может создать, запустить и исправить полный набор тестов

Это принципиально отличается от использования чат-интерфейса, где вы копируете фрагменты туда-обратно.

Трёхшаговый рабочий процесс

Шаг 1: Подача контекста и генерация

# Feed the spec and existing test as context, request a test suite
claude "Read the OpenAPI spec at ./docs/api-spec.yaml and the existing
test file at ./tests/test_users.py. Generate a comprehensive test suite
for the /api/v2/orders endpoint following the same patterns and style
as the users tests. Include error cases for all documented 4xx responses."

Что происходит под капотом:

  • Claude читает ./docs/api-spec.yaml (артефакт спецификации)
  • Claude читает ./tests/test_users.py (образец стиля)
  • Claude определяет ограничения эндпоинта, типы полей, требования к аутентификации
  • Claude генерирует новый тестовый файл, следуя существующим паттернам

Советы для Шага 1:

  • Указывайте Claude на конкретные файлы, а не просите его «найти» что-то
  • Явно укажите существующий тестовый файл, чтобы он соответствовал стилю вашей команды
  • Будьте конкретны в том, какое покрытие вам нужно ("all documented 4xx responses")

Шаг 2: Запуск и самовосстановление

# Ask Claude to run the tests and fix test bugs (not application bugs)
claude "Run the tests you just generated. Fix any failures that are
due to test bugs (not application bugs). Do not change assertions
that are testing real behavior."

Что происходит под капотом:

  • Claude выполняет pytest tests/test_orders.py -v
  • Он читает вывод ошибок
  • Он различает:
    • Ошибки тестов: ошибки импорта, неправильные имена фикстур, отсутствующая настройка
    • Ошибки приложения: утверждения, которые падают, потому что в приложении есть реальный дефект
  • Он исправляет только ошибки тестов и сообщает об ошибках приложения

Критически важная инструкция: "Do not change assertions that are testing real behavior." Без этого Claude может ослабить утверждения, чтобы тесты прошли, что сводит на нет весь смысл.

Шаг 3: Анализ пробелов в покрытии

# Run coverage and generate tests for uncovered lines
claude "Run pytest --cov=app.routes.orders --cov-report=term-missing
and tell me which lines in the orders route are not covered.
Generate additional tests to cover those lines."

Что происходит под капотом:

  • Claude запускает команду покрытия
  • Он читает столбец Missing, чтобы определить непокрытые диапазоны строк
  • Он читает эти конкретные строки в исходном файле
  • Он генерирует дополнительные тесты, нацеленные именно на эти строки

Продвинутый процесс: генерация набора из нескольких файлов

Для крупных функциональностей, охватывающих несколько файлов:

# Step 1: Survey the feature
claude "Read all files in app/services/payment/ and app/routes/payment.py.
List every public function and endpoint, noting which ones have existing
tests in tests/test_payment*.py and which ones do not."

# Step 2: Generate for uncovered functions
claude "For every function you identified as not having tests,
generate a test file. Follow the patterns in tests/test_payment_processing.py.
Organize by module: one test file per source file."

# Step 3: Run and iterate
claude "Run all payment tests: pytest tests/test_payment*.py -v.
Fix test bugs. Report any application bugs you find."

# Step 4: Integration tests
claude "Now generate integration tests that test the full payment flow:
create order -> process payment -> confirm order -> send receipt.
Use the test database and mock external APIs (Stripe, SendGrid)."

Claude Code vs генерация через чат

Возможность Claude Code (CLI) Чат-интерфейс
Чтение ваших реальных файлов Да (читает из файловой системы) Нет (вы вставляете фрагменты)
Соответствие существующему стилю Да (читает существующие тесты) Частично (вы вставляете примеры)
Выполнение тестов Да (запускает pytest/jest) Нет
Итеративное исправление ошибок Да (читает вывод, редактирует, перезапускает) Нет (вы копируете ошибки обратно)
Генерация нескольких файлов Да (создаёт несколько файлов) Неудобно (один файл за раз)
Контекст токенов 200K (вмещает полную спецификацию + тесты) Варьируется (часто меньше)

Шаблон: полная сессия с Claude Code

Вот полный шаблон сессии, который вы можете адаптировать для любой функциональности:

# 1. Reconnaissance
claude "Read app/routes/orders.py and docs/openapi.yaml (the /orders section).
Summarize: how many endpoints, what methods, what auth is required,
what fields are validated."

# 2. Style reference
claude "Read tests/test_users.py. Note the patterns:
- How fixtures are used
- How auth headers are set up
- The naming convention for test functions
- How parametrize is used
You will follow these patterns exactly."

# 3. Generation
claude "Generate a comprehensive test suite for the orders endpoints.
Cover:
- All documented success responses
- All documented error responses (4xx)
- Boundary values for quantity (1, 100, 0, 101, -1)
- Boundary values for price fields
- Auth: valid token, expired token, missing token, wrong role
- Idempotency: same request twice with same idempotency key
Save to tests/test_orders.py"

# 4. Execution + fix
claude "Run pytest tests/test_orders.py -v --tb=long.
Fix any test bugs (import errors, fixture issues, setup problems).
Do NOT weaken assertions. Report any real application bugs separately."

# 5. Coverage analysis
claude "Run pytest tests/test_orders.py --cov=app.routes.orders
--cov-report=term-missing. Generate additional tests for uncovered lines.
Add them to the same file."

# 6. Flaky check
claude "Run pytest tests/test_orders.py --count=3 -v.
If any test fails inconsistently, identify the cause and fix it.
Common causes: time dependency, random data, database state."

# 7. Final review
claude "Review all tests in tests/test_orders.py. For each test, ask:
would this test fail if the feature was broken? Flag any tautology tests
(tests that pass regardless of implementation correctness)."

Типичные подводные камни при работе с Claude Code

Подводный камень 1: Позволить Claude ослабить утверждения

# BAD: Claude changes 403 to 200 to make the test pass
# This hides a real authorization bug

# GOOD: instruct Claude explicitly
claude "If a test expects 403 but gets 200, that is an APPLICATION BUG.
Report it but do not change the assertion."

Подводный камень 2: Не указать тестовый фреймворк

Claude по умолчанию использует наиболее распространённый фреймворк для языка. Если вы используете vitest вместо jest или pytest-asyncio вместо обычного pytest, укажите это явно.

Подводный камень 3: Генерация всего за один промпт

Очень длинные промпты ухудшают качество вывода. Разбивайте крупные задачи генерации на сфокусированные промпты по 20-30 тестов каждый.

Подводный камень 4: Забыть зафиксировать между шагами

Claude Code редактирует файлы на месте. Если Шаг 3 пошёл не так и испортил файл, вы теряете Шаги 1-2. Делайте коммит (или хотя бы stash) между основными шагами.

Метрики: генерация тестов с Claude Code

На основе практических паттернов использования:

Метрика Типичное значение
Тестов в час (включая ревью) 40-60
Доля прохождения с первого запуска 70-85%
Тесты, требующие исправления после первого запуска 15-30%
Тесты, удалённые при ревью 5-15%
Прирост покрытия за сессию 10-25 процентных пунктов
Стоимость токенов на набор из 50 тестов $0.50-$2.00

Ключевой вывод

Убийственная функция Claude Code -- это цикл генерация-запуск-исправление. В отличие от генерации через чат, где вы вручную копируете ошибки обратно, Claude Code читает вывод тестов, диагностирует сбои и исправляет их автономно. Это превращает многочасовой ручной процесс в 30-минутную сессию под наблюдением.