Claude для unit-тестов: генерация и пробелы покрытия

Как писать unit-тесты с Claude: входной код, граничные случаи, что проверить человеку и чем это отличается от code review.
Claude для unit-тестов: генерация и пробелы покрытия — иллюстрация Claude на русском

Claude быстро пишет unit-тесты: по функции и её описанию он предложит набор проверок, включая граничные случаи, о которых легко забыть. Но тесты от модели нужно проверять так же внимательно, как код. Разберём, как получать полезные тесты, а не просто высокий процент покрытия.

Что дать на вход

  • код функции или класса;
  • что она должна делать — описание или docstring;
  • тестовый фреймворк: pytest, unittest, Jest, JUnit;
  • пример существующего теста в проекте, чтобы Claude повторил стиль;
  • зависимости, которые нужно замокать.

Запрос

Напиши тесты на pytest для функции calculate_discount ниже. Покрой: обычные случаи, граничные значения (0, отрицательные суммы, очень большие суммы), некорректные типы данных. Каждый тест — с понятным названием. Не мокай саму функцию. Если поведение в каком-то случае неочевидно, спроси меня, а не придумывай.

Порядок работы

  1. Попросите сначала список сценариев, которые стоит проверить, без кода.
  2. Уберите лишние и добавьте то, что знаете о бизнес-логике.
  3. Попросите тесты по согласованному списку.
  4. Запустите тесты и посмотрите, какие падают.
  5. Разберитесь, что сломалось: тест или код.

Какие тесты модель пишет зря

  • Тесты, которые проверяют мок, а не код. Например, мок возвращает 5, и тест проверяет, что вернулось 5.
  • Тесты-копии реализации. Если тест повторяет логику функции, он пройдёт даже при ошибке.
  • Много одинаковых тестов с разными числами, которые проверяют одно и то же.
  • Тесты, подогнанные под ошибку. Если в коде баг, Claude может написать тест, который его закрепляет.

Как проверить качество тестов

Простой способ — внести в код намеренную ошибку и посмотреть, упадут ли тесты. Если не упали, тесты слабые. Для этого есть инструменты мутационного тестирования, например mutmut для Python.

Идеи для сложных случаев

Попросите Claude предложить property-based тесты с библиотекой Hypothesis: вместо конкретных чисел проверяются свойства, которые должны выполняться всегда. Например, «скидка никогда не больше суммы заказа».

Безопасность

Не отправляйте в чат код с ключами, паролями и строками подключения к базе. Замените их на заглушки.

Частые вопросы

Может ли Claude сам запустить тесты?

В чате Claude может выполнить небольшой код в своей песочнице, но проект с вашими зависимостями там не запустить. С реальным репозиторием работает Claude Code: он запускает тесты и исправляет ошибки.

Как проверить код перед написанием тестов?

См. статью Claude для code review.

Claude или ChatGPT для тестов?

Обе модели справляются. Сравнение — в статье Claude vs ChatGPT для кода.

Понравилась статья? Отправляйте друзьям!
Claude на русском
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: