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

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

Практический кейс от Ростелекома с промптами разного качества для автотестов PetStore API. Узнайте разницу в результате в зависимости от экспертизы.

Почему качество промптов критично для автотестов?

В современной разработке AI-ассистенты становятся незаменимыми инструментами для автоматизации рутинных задач, включая написание тестов. Однако результат работы модели напрямую зависит от качества входных данных — промптов. Как показывает практика Ростелекома, разница между промптом новичка и senior-инженера может быть колоссальной: от простых, но неэффективных тестов до комплексных решений с высокой степенью покрытия и поддерживаемости.

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

Кейс: PetStore API — тестирование с разным уровнем экспертизы

Рассмотрим практический пример из опыта Ростелекома: создание автотестов для стандартного PetStore API (Swagger). Этот API используется для демонстрации возможностей RESTful сервисов и содержит операции для работы с питомцами, заказами и пользователями.

💡
PetStore API — отличный полигон для обучения промпт-инжинирингу, так как имеет понятную документацию и типовые CRUD-операции. Подобные подходы можно применять и к более сложным системам, как показано в статье про промпты для роботакси Waymo.

1Уровень 1: Новичок (Junior QA Engineer)

Новичок обычно просит модель сделать "просто тесты" без конкретики. Результат — базовые, но ограниченные проверки.

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

Напиши автотесты для PetStore API на Python

Что получится в результате:

  • Несколько простых тестов для основных endpoints
  • Отсутствие структуры проекта
  • Нет обработки ошибок и edge cases
  • Хардкод данных в тестах
  • Отсутствие фикстур и setup/teardown логики

Такой подход приводит к хрупким тестам, которые сложно поддерживать и масштабировать. При изменении API или данных тесты перестают работать.

2Уровень 2: Опытный инженер (Middle QA Engineer)

Опытный инженер понимает важность структуры, переиспользования кода и обработки различных сценариев.

Пример промпта Middle-инженера:

Создай автотесты для PetStore API на Python с использованием pytest. Требования:
1. Используй библиотеку requests для HTTP-запросов
2. Реализуй фикстуры для setup и teardown
3. Добавь параметризацию тестов
4. Включи проверки статус-кодов и структуры ответов
5. Добавь тесты на негативные сценарии
6. Используй переменные окружения для конфигурации

Структура проекта:
- tests/
  - conftest.py (общие фикстуры)
  - test_pets.py
  - test_orders.py
  - test_users.py
- config.py (конфигурация)
- utils/ (вспомогательные функции)

Ключевые улучшения:

  • Четкая структура проекта
  • Использование фикстур pytest
  • Параметризация для тестирования разных данных
  • Обработка негативных сценариев
  • Конфигурация через переменные окружения

3Уровень 3: Senior-инженер (Senior/Lead QA Engineer)

Senior-инженер думает о масштабируемости, поддерживаемости, интеграции в CI/CD и бизнес-ценности тестов.

Промпт Senior-инженера:

Разработай фреймворк для автотестирования PetStore API на Python, соответствующий best practices. Требования:

1. Архитектура:
   - Паттерн Page Object Model (адаптированный для API)
   - Сервисные слои: API Client, Data Models, Test Cases
   - Поддержка разных окружений (dev, staging, prod)

2. Качество кода:
   - Type hints для всех функций
   - Документация в формате Google Docstrings
   - Логирование с разными уровнями (DEBUG, INFO, ERROR)
   - Валидация ответов через Pydantic модели

3. Тестовое покрытие:
   - Приоритизация тестов (Critical, High, Medium, Low)
   - Тесты на boundary values и edge cases
   - Тесты на производительность (response time < 500ms)
   - Тесты на безопасность (валидация входных данных)

4. Интеграция:
   - Готовность к интеграции с Jenkins/GitLab CI
   - Генерация Allure отчетов
   - Параллельный запуск тестов
   - Retry механизм для flaky тестов

5. Данные:
   - Фабрика тестовых данных (Factory Boy)
   - Очистка тестовых данных после выполнения
   - Поддержка разных типов данных (valid, invalid, boundary)

6. Дополнительно:
   - Health check тесты для мониторинга
   - Тесты на backward compatibility
   - Скрипты для генерации тестовых данных

Структура проекта:
petstore_tests/
├── api/
│   ├── clients/
│   ├── models/
│   └── schemas/
├── tests/
│   ├── smoke/
│   ├── regression/
│   └── integration/
├── data/
│   ├── factories/
│   └── fixtures/
├── utils/
│   ├── logger.py
│   └── helpers.py
├── config/
│   ├── environments.py
│   └── constants.py
└── reports/

Преимущества подхода Senior:

АспектПреимуществоБизнес-ценность
АрхитектураМасштабируемость, переиспользованиеСнижение стоимости поддержки
Качество кодаЧитаемость, поддерживаемостьБыстрое подключение новых разработчиков
Интеграция CI/CDАвтоматизация, раннее обнаружение ошибокСокращение time-to-market
ОтчетностьПрозрачность, метрики качестваData-driven принятие решений

Готовый промпт для комплексного тестирования API

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

Разработай фреймворк для автотестирования REST API на Python с использованием pytest. API спецификация доступна по URL: [ВСТАВЬ_СЮДА_SWAGGER_JSON_URL]

Роли и требования:
Ты — senior QA automation engineer с 5+ лет опыта. Создай production-ready решение.

Технические требования:
1. Язык: Python 3.9+
2. Фреймворк: pytest
3. HTTP клиент: requests или httpx
4. Валидация: Pydantic v2
5. Логирование: structlog
6. Конфигурация: pydantic-settings

Архитектурные принципы:
- SOLID principles
- DRY (Don't Repeat Yourself)
- Separation of Concerns
- Low coupling, high cohesion

Структура проекта (создай полную иерархию):
[project_name]/
├── api/
│   ├── clients/          # API клиенты для каждого ресурса
│   ├── models/          # Pydantic модели для request/response
│   ├── schemas/         # JSON схемы для валидации
│   └── base_client.py   # Базовый HTTP клиент
├── tests/
│   ├── conftest.py      # Общие фикстуры
│   ├── smoke/           # Smoke тесты
│   ├── regression/      # Регрессионные тесты
│   ├── integration/     # Интеграционные тесты
│   └── performance/     # Тесты производительности
├── data/
│   ├── factories/       # Фабрики тестовых данных
│   ├── fixtures/        # JSON фикстуры
│   └── generators/      # Генераторы данных
├── utils/
│   ├── logger.py        # Настройка логирования
│   ├── assertions.py    # Кастомные assertions
│   ├── helpers.py       # Вспомогательные функции
│   └── waiters.py       # Ожидания и retry логика
├── config/
│   ├── __init__.py
│   ├── settings.py      # Настройки из переменных окружения
│   ├── environments.py  # Конфигурация окружений
│   └── constants.py     # Константы
├── reports/             # Генерация отчетов
├── docker/              # Docker конфигурация
├── .github/workflows/   # GitHub Actions
├── requirements/
│   ├── base.txt
│   ├── dev.txt
│   └── prod.txt
├── pyproject.toml       # Современная конфигурация
├── Dockerfile
├── docker-compose.yml
└── README.md

Детальные требования к коду:
1. Для каждого API endpoint создай:
   - Pydantic модель для request/response
   - API клиент с методами CRUD
   - Параметризованные тесты с разными данными

2. Реализуй фикстуры для:
   - Авторизации и аутентификации
   - Создания и очистки тестовых данных
   - Настройки тестового окружения
   - Генерации уникальных данных

3. Добавь кастомные маркеры pytest для:
   - Приоритета тестов (p0, p1, p2)
   - Типа тестов (smoke, regression, integration)
   - Времени выполнения (fast, slow)

4. Реализуй продвинутые фичи:
   - Retry механизм для неустойчивых тестов
   - Параллельный запуск тестов (pytest-xdist)
   - Генерация Allure отчетов
   - Валидация схемы ответа
   - Тесты на производительность с threshold
   - Health check endpoints

5. Конфигурация через переменные окружения:
   - BASE_URL
   - API_KEY / TOKEN
   - LOG_LEVEL
   - TEST_TIMEOUT
   - ENABLE_PARALLEL

6. Обработка ошибок:
   - Кастомные exceptions
   - Retry с exponential backoff
   - Circuit breaker pattern для unstable endpoints
   - Детальное логирование ошибок

7. Тестовые данные:
   - Используй Faker для генерации реалистичных данных
   - Создай фабрики для complex объектов
   - Реализуй cleanup после тестов
   - Поддержка разных локалей

8. Документация:
   - Google style docstrings
   - README с инструкцией по запуску
   - Комментарии для сложной логики
   - Type hints везде

Сгенерируй полный код для проекта, начиная с pyproject.toml и заканчивая примером теста. Код должен быть готов к использованию в production.
💡
Этот промпт можно адаптировать для разных API и технологий. Для работы с локальными моделями кодирования ознакомьтесь с лучшими промптами для локальных моделей и готовыми промптами для кодинг-агентов.

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

  1. Начинайте с контекста — объясните модели, какую роль она играет и какой у вас уровень экспертизы
  2. Конкретизируйте технологии — укажите версии библиотек, фреймворки, инструменты
  3. Определите архитектуру — продумайте структуру проекта заранее
  4. Укажите best practices — какие принципы должны быть соблюдены
  5. Включите нефункциональные требования — производительность, безопасность, логирование
  6. Попросите примеры — всегда запрашивайте полные примеры реализации
  7. Итеративно улучшайте — уточняйте промпт на основе полученных результатов

Помните: AI-модель не понимает ваш бизнес-контекст. Чем подробнее вы опишете требования и ограничения, тем качественнее будет результат. Для тестирования разных подходов используйте коллекцию промптов для сравнительного анализа LLM.

Заключение

Качество промптов для автотестов напрямую влияет на эффективность работы AI-ассистентов. От простого "напиши тесты" до детализированных технических заданий — разница в результате может быть огромной. Инвестируя время в создание качественных промптов, вы получаете не просто код, а готовые, масштабируемые решения, которые экономят время и ресурсы в долгосрочной перспективе.

Практика Ростелекома показывает: senior-подход к промпт-инжинирингу позволяет создавать автотесты, которые не только проверяют функциональность, но и становятся ценным активом компании — документацией, примером best practices и основой для будущих проектов.