Промпты для автотестов: 3 уровня сложности с примерами | AiManual
AiManual Logo Ai / Manual.
29 Дек 2025 Промпт

Три уровня промптов для автотестов: от новичка до сеньора

Практическое руководство по промпт-инжинирингу для автотестов. Готовые промпты для Python, советы по качеству кода и эксперименты.

Зачем нужны промпты для автотестов?

Современные AI-ассистенты вроде GitHub Copilot, Cursor или ChatGPT могут стать мощными союзниками в написании автотестов. Но результат напрямую зависит от качества вашего промпта. Правильно сформулированное задание экономит часы рутинной работы и помогает создавать более качественные тесты.

💡
Промпт-инжиниринг для автотестов — это навык, который развивается от простых запросов к сложным многошаговым инструкциям. Как и в программировании, здесь есть свои уровни мастерства.

Уровень 1: Новичок (базовые запросы)

На этом уровне разработчик просит AI написать простые тесты для конкретной функции. Промпты прямолинейны и не содержат контекста о проекте.

Основная проблема: AI не знает о стиле кодирования проекта, соглашениях об именовании или используемых библиотеках.

1Пример промпта новичка

# Промпт для новичка:
"""Напиши тест для функции calculate_discount(price, discount_percent)"""

# Или более конкретно:
"""Создай unit-тест на pytest для функции:
def calculate_total(items, tax_rate):
    subtotal = sum(item['price'] * item['quantity'] for item in items)
    return subtotal * (1 + tax_rate)"""

Что получаем в ответе: базовый тест, который проверяет очевидные случаи, но часто без edge cases, моков или правильной структуры.

Уровень 2: Продвинутый (контекст + требования)

Разработчик добавляет контекст проекта, требования к качеству и конкретные техники тестирования. Это похоже на работу с продвинутым промптом для AI-ассистентов, но специализированно для тестов.

2Пример промпта продвинутого уровня

"""
Напиши комплексные pytest-тесты для функции process_order(order_data, inventory).

КОНТЕКСТ ПРОЕКТА:
- Проект использует Python 3.9+, pytest, pytest-mock
- Стиль: Google docstrings, snake_case для функций
- В проекте уже есть фикстуры для БД и внешних API

ТРЕБОВАНИЯ К ТЕСТАМ:
1. Покрыть happy path (успешный заказ)
2. Проверить edge cases:
   - Недостаточно товара на складе
   - Невалидный order_id
   - Просроченный платеж
3. Использовать моки для:
   - inventory.check_stock()
   - payment_gateway.charge()
4. Добавить параметризованные тесты для разных типов скидок
5. Проверить корректность логгирования ошибок
6. Использовать фикстуру для временной БД

СИГНАТУРА ФУНКЦИИ:
def process_order(order_data: dict, inventory: InventoryService) -> OrderResult:
    """Обрабатывает заказ, проверяет наличие, списывает средства."""
    ...
"""
💡
Чем больше контекста вы предоставляете, тем ближе результат к реальным потребностям проекта. Это особенно важно при работе с длинным контекстом, как в промптах для анализа кода.

Уровень 3: Сеньор (системный подход + эксперименты)

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

3Пример промпта сеньор-уровня

"""
Спроектируй и реализуй тестовую стратегию для микросервиса UserService.

ЦЕЛИ ЭКСПЕРИМЕНТА:
1. Достичь 85% покрытия кода (branch coverage)
2. Обнаружить race conditions в concurrent операциях
3. Снизить время выполнения тестов на 30%
4. Улучшить читаемость тестов для новых разработчиков

АРХИТЕКТУРА СЕРВИСА:
- FastAPI приложение с 15 эндпоинтами
- PostgreSQL для хранения данных
- Redis для кэширования и сессий
- RabbitMQ для асинхронных задач
- Интеграция с 3 внешними API

ТЕКУЩИЕ ПРОБЛЕМЫ:
- Медленные интеграционные тесты (10+ минут)
- Хрупкие тесты из-за моков
- Неполное покрытие edge cases
- Отсутствие property-based тестов

ЗАДАНИЕ:
1. Проанализируй текущие тесты и предложи рефакторинг
2. Создай матрицу тестирования (unit/integration/e2e)
3. Напиши шаблоны для каждого типа тестов
4. Предложи стратегию мокинга внешних зависимостей
5. Добавь нагрузочные тесты для критичных эндпоинтов
6. Создай документацию по запуску тестов

ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:
- Готовая структура тестовой директории
- Конфигурационные файлы для pytest
- Примеры тестов каждого типа
- Рекомендации по CI/CD pipeline
"""
УровеньФокусРезультатВремя экономии
НовичокОтдельные тестыБазовые проверки30-60 минут
ПродвинутыйКачество + покрытиеПроизводственные тесты2-4 часа
СеньорСистема + стратегияАрхитектура тестированияДни/недели

Готовый промпт для быстрого старта

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

"""
Напиши автотесты для следующей функции с учетом лучших практик.

ФУНКЦИЯ ДЛЯ ТЕСТИРОВАНИЯ:
[вставь сигнатуру функции и её описание]

ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ:
- Фреймворк: [pytest/unittest/JUnit/etc]
- Язык: [Python/Java/JavaScript/etc]
- Версия: [укажи версию]

ТРЕБОВАНИЯ К КАЧЕСТВУ ТЕСТОВ:
1. Покрытие основных сценариев использования
2. Проверка edge cases и граничных значений
3. Использование моков для внешних зависимостей
4. Читаемые имена тестов (test_<что>_<при_каких_условиях>_<ожидаемый_результат>)
5. Параметризация где это уместно
6. Проверка обработки ошибок и исключений
7. Соответствие стилю кодирования проекта

КОНТЕКСТ ПРОЕКТА (если известен):
- [опиши архитектурные особенности]
- [укажи используемые библиотеки]
- [отметь ограничения или требования]

ДОПОЛНИТЕЛЬНЫЕ ЗАДАЧИ (опционально):
- [анализ покрытия кода]
- [интеграция с CI/CD]
- [нагрузочное тестирование]

ПРЕДПОЧТИТЕЛЬНЫЙ ФОРМАТ ВЫВОДА:
- Полный код тестов
- Пояснения к ключевым решениям
- Рекомендации по улучшению
"""

Советы по использованию промптов для автотестов

  • Начинайте с малого: Не пытайтесь сразу покрыть тестами весь проект. Начните с одной критичной функции, как в промптах для тестирования логики.
  • Итеративно улучшайте: Первый результат редко бывает идеальным. Уточняйте промпт на основе полученного кода.
  • Добавляйте контекст постепенно: Сначала получите базовые тесты, затем добавляйте требования к качеству, моки, интеграции.
  • Экспериментируйте с формулировками: Разные AI по-разному реагируют на одни и те же запросы. Находите оптимальный стиль.
  • Проверяйте сгенерированный код: AI может допускать ошибки или использовать устаревшие практики. Всегда ревьюируйте результат.

Важно: Промпты для автотестов — это инструмент, а не замена экспертизы. Они помогают автоматизировать рутину, но архитектурные решения и стратегия тестирования остаются за разработчиком.

Эксперименты и метрики качества

Как оценить эффективность ваших промптов? Проводите эксперименты:

  1. Измеряйте время: Сколько времени экономит хороший промпт vs написание вручную?
  2. Анализируйте покрытие: Насколько полно AI покрывает edge cases?
  3. Оценивайте читаемость: Будут ли тесты понятны другим разработчикам?
  4. Тестируйте устойчивость: Как часто тесты требуют доработки при изменении кода?

Как и в научных промптах МФТИ, важна методология: формулируйте гипотезу, проводите эксперимент, анализируйте результаты.

Заключение

Переход от простых запросов к сложным системным промптам — это путь от экономии времени к улучшению качества всего тестового процесса. Начните с уровня, соответствующего вашим текущим задачам, и постепенно усложняйте промпты по мере роста экспертизы.

💡
Лучший промпт — тот, который эволюционирует вместе с вашим проектом. Сохраняйте успешные формулировки, создавайте библиотеку шаблонов и делитесь ими с командой. Как и хорошие промпты для заголовков, они становятся ценным активом.