Часть 2. Промпт-инжиниринг · Глава 6

Методы и анти-паттерны

Цели раздела

3 пункта

К концу раздела вы сможете:

  1. Освоить специализированные техники промпт-инженерии.
  2. Применять готовые «рецепты» для типовых QA-задач.
  3. Избегать распространённых «запахов» (анти-паттернов).

Ароматы — это готовые «рецепты»: когда какую технику применять. Сначала освойте RTCCO (глава 4), затем добавляйте по одному аромату.

Как выбрать технику под задачу QA

Почему важно выбирать не только слова, но и режим работы

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

Для тестировщика это особенно важно, потому что QA-задачи сильно различаются по своей природе:

  • где-то нужен быстрый черновик;
  • где-то — воспроизводимый формат;
  • где-то — уточнение неоднозначностей;
  • где-то — работа с большим объёмом документации;
  • где-то — многошаговая обработка с проверкой человеком.

Шесть основных режимов работы

Сначала выберите режим взаимодействия — от него зависит архитектура запроса не меньше, чем формулировка. Справочник с примерами для QA — ниже; интерактивное дерево выбора — в блоке «Схема выбора техники».

Zero-shot

Один запрос → один ответ, без примеров.

Подходит, если

  • Задача короткая и понятная
  • Формат ответа легко проверить
  • Цена ошибки невысока
  • Нужен черновик, а не финальный артефакт

Пример для QA

Составь список негативных проверок для поля email в форме регистрации.

Шпаргалка выбора

  • Zero-shot— простая короткая задача без длинного контекста
  • Few-shot— нужен корпоративный шаблон
  • Итеративный диалог— сначала снять неоднозначность
  • Chaining— задача делится на этапы
  • RAG— слишком много документов для одного промпта
  • Агент— есть инструменты, многошаговость и приёмка человеком

Схема выбора техники

Алгоритм выбора техники

Идите сверху вниз: на каждом шаге ответ «Да» завершает выбор; «Нет» — переходите к следующему вопросу.

Есть QA-задача

Шаг 1

Задача простая и одношаговая?

Да
Zero-shot
Нет
Следующий шаг

Шаг 2

Нужен стабильный формат по образцу?

Да
Few-shot
Нет
Следующий шаг

Шаг 3

Есть неоднозначность требований?

Да
Итеративный диалог
Нет
Следующий шаг

Шаг 4

Контекста много и он в разных документах?

Да
RAG или декомпозиция
Нет
Следующий шаг

Шаг 5

Есть несколько этапов обработки?

Да
Prompt chaining
Нет
Следующий шаг

Шаг 6

Нужны инструменты и действия?

Да
Агент + HITL
Нет
Проверь постановку задачи

Если ни одна ветка «Да» не подошла и вы дошли до финала — уточните постановку: без ясной цели ни одна техника не даст стабильного результата.

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

Хороший QA-промпт — это не только хороший текст, но и правильная архитектура запроса.

Продвинутые техники для тестировщика

Выберите технику — увидите шаблон для копирования

❓
Сначала вопросыАнализ требований

Перед генерацией тест-кейсов модель задаёт уточняющие вопросы — устраняет неоднозначности до начала работы.

Ты — QA-аналитик. Твоя задача — проверить полноту и ясность требований.
Перед тем как генерировать тест-кейсы, составь список из 5–10 наиболее
важных вопросов, которые нужно задать разработчикам/PM,
чтобы устранить все неоднозначности в предоставленных материалах.
💡Особенно полезен на этапе старта: позволяет выявить пропуски до начала тест-планирования.

Аромат RTCCO Базовый рецепт, описанный в главе 5. Фундамент для всех остальных методов.

Аромат «Сначала вопросы» — особенно на этапе анализа требований: сначала уточняющие вопросы, затем тест-кейсы с ответами заказчика.

Аромат: Сначала вопросы

Снять неоднозначность до генерации артефактов.

Ты — QA-аналитик. Твоя задача — проверить полноту и ясность требований.
Перед тем как генерировать тест-кейсы, составь список из 5-10 наиболее
важных вопросов, которые нужно задать разработчикам/продакт-менеджеру,
чтобы устранить все неоднозначности в предоставленных материалах.
Запах

Сразу просить тест-кейсы по сырым требованиям без уточнений.

Сгенерируй 20 тест-кейсов по этому ТЗ. [вставка 50 страниц без ответов на вопросы]

Аромат Few-shot (мало-образцовый)

Мощная техника: вы даёте модели 1–3 эталонных примера «правильного» ответа — так стабилизируется формат команды.

Few-shot: плохой vs хороший пример

❌ Плохой few-shot

1 пример, недостаточное покрытие

Пример хорошего тест-кейса:
ID: TC-001
Название: Успешная авторизация
Шаги:
  1. Ввести логин
  2. Ввести пароль
  3. Нажать Войти
Ожидаемый результат: Авторизация успешна

Проблемы

✗Только 1 пример — нет разнообразия сценариев
✗Отсутствуют предусловия
✗Нет конкретных тестовых данных
✗Размытый ожидаемый результат

✅ Хороший few-shot

3 примера: позитив + негатив + граница

Пример 1 — позитивный:
ID: TC-AUTH-001
Название: Авторизация валидным пользователем
Предусловия: Пользователь существует, статус Active
Шаги:
  1. Ввести email: user@example.com
  2. Ввести пароль: ValidPass123
  3. Нажать «Войти»
Ожидаемый результат:
  — HTTP 200, редирект на /dashboard
  — JWT записан в localStorage
  — Имя пользователя отображается в хедере

Пример 2 — негативный:
ID: TC-AUTH-NEG-001
Название: Авторизация с неверным паролем
Предусловия: Пользователь существует
Шаги: [...]
Ожидаемый результат: HTTP 401, сообщение «Неверный пароль»

Пример 3 — граничное значение:
ID: TC-AUTH-BND-001
Название: Авторизация с паролем минимальной длины
[...]

Сгенерируй аналогичные тест-кейсы для [НОВАЯ ФУНКЦИЯ],
строго соблюдая структуру и детализацию.

Почему работает

✓3 типа сценариев задают эталон разнообразия
✓Конкретные тестовые данные во всех примерах
✓Детальный ожидаемый результат (HTTP-код + UI)
✓Финальная инструкция фиксирует формат вывода
⚠️

Главный анти-паттерн Few-shot

Некачественный образец — модель воспроизведёт его стиль, структуру и ошибки. Всегда проверяйте примеры перед отправкой промпта.

Аромат "Два прохода" Разделение задачи на две части: генерация и последующая самопроверка.

🧪 Пример для QA: Сгенерировали тест-кейсы одним промптом — вторым промптом отдайте их той же модели «в роли ревьюера» с чек-листом: так выловите пропуски и дубли до ручной проверки.

Проход 1: Генерация

Проход 1
Сгенерируй 10 тест-кейсов для функции поиска товаров по названию и категории.

Проход 2: Ревью

Промпт для прохода 2
Теперь выступи в роли QA-ревьюера. Оцени сгенерированные тест-кейсы по следующему чек-листу:
- Покрыты ли все acceptance criteria?
- Есть ли негативные сценарии?
- Есть ли граничные значения?
- Нет ли дублирования?
- Достаточно ли конкретны шаги?
- Указаны ли тестовые данные?

Для каждого пункта укажи: ✅ / ❌ и рекомендации по улучшению.

Аромат "Матрица покрытия" Перекрестная проверка различных осей тестирования.

Матрица покрытия
Создай матрицу покрытия для функции 'Авторизация'. 
Оси: 
1) Платформы (Web, iOS, Android)
2) Роли пользователей (Гость, Авторизованный пользователь, Администратор)
3) Состояния (новый пользователь, существующий пользователь)
4) Сценарии (успешная авторизация, неуспешная, сброс пароля)

Аромат "Оракул" Модель задумывается о том, как проверить корректность функции.

Оракул
Ты — QA-эксперт. Для проверки корректности функции 'Расчет скидки' 
тебе даны бизнес-правила. Сформулируй список из 5-7 наблюдаемых 
сигналов («оракульских» утверждений), которые подтвердят, что функция 
работает как положено. Например: 'Система успешно применяет скидку Х% 
к товарам в корзине', 'В ответе API поле 'итоговая_стоимость' 
уменьшилось на Y%'

Метод: "Противоречивый эксперт" (Adversarial Review)

  • Когда применять: Для критичных функций.
Противоречивый эксперт
Ты — QA-инженер в роли «чёрного мыслителя». Найди максимальное 
количество способов сломать функцию [НАЗВАНИЕ].

Для каждого сценария укажи:
1. Что может пойти не так
2. Предпосылки (какие условия нужны)
3. Последствие для бизнеса/пользователя
4. Сложность воспроизведения (Easy/Medium/Hard)

Не ограничивай себя «разумными» сценариями — включай 
экстремальные и маловероятные случаи.

Метод: "Интервью с заказчиком"

  • Когда применять: На ранних этапах при неполных требованиях.
Интервью с заказчиком
Ты — опытный бизнес-аналитик. На основе описания функции 
составь 10–15 уточняющих вопросов для product-менеджера.

Вопросы должны выявлять:
- Неявные бизнес-правила
- Граничные случаи
- Зависимости от других систем
- Требования к производительности и доступности

Формат: нумерованный список с пояснением критичности каждого вопроса.

Метод Chain-of-Thought (Цепочка рассуждений, CoT) Техника предполагает, что вы просите модель "думать вслух" и показывать шаги своего рассуждения.

  • Когда использовать: Для сложных логических задач (анализ причин сбоя).
Chain-of-Thought
Задача: Определить причину сбоя в работе функции "Поиск".

Ты — senior backend developer. Проанализируй следующие фрагменты 
кода и логи, чтобы найти причину сбоя. Рассуждай шаг за шагом.

Шаг 1: Проанализируй SQL-запрос в коде. Есть ли в нем очевидные ошибки?
Шаг 2: Проверь логи на наличие ошибок базы данных.
Шаг 3: Сопоставь время ошибок в логах с кодом.
Шаг 4: Сделай вывод о причине сбоя.

[Вставьте код и логи]

Метод Self-Consistency (Самосогласованность) Техника предполагает генерацию нескольких ответов на один и тот же вопрос с небольшими вариациями, а затем выбор наиболее часто встречающегося ответа.

Self-Consistency
Сгенерируй 3 независимых набора тест-кейсов для одной и той же функции.
Каждый набор должен быть полным и независимым от других.

Затем проанализируй:
- Какие тест-кейсы встречаются во всех трёх наборах? (критически важные)
- Какие уникальны для каждого набора? (дополнительные идеи)

Другие техники

ТехникаСутьПрименение в QA
Паттерн персоны (Persona Pattern)Эмуляция конкретного пользователя с характеристикамиГенерация сценариев usability-тестирования для разных сегментов
Когнитивный верификатор (Cognitive Verifier)Самопроверка моделью собственного ответа по критериямПовышение надёжности критически важных артефактов
Альтернативные подходы (Alternate Approaches)Генерация нескольких независимых решений с сравнениемВыбор оптимальной стратегии тестирования

Анти-паттерны — типичные ошибки

Нажмите на карточку — увидите пример и исправление

🍕
Анти-паттерн"Сделай всё сразу"

Один промпт: анализ + генерация + ревью + отчёт

▼
🌫️
Анти-паттерн"Без контекста"

Запрос без требований, данных, описания системы

▼
🌊
Анти-паттерн"Слишком общий"

«Напиши тесты», «Сделай лучше», «Проверь всё»

▼
📃
Анти-паттерн"Игнорирование формата"

Не указать желаемую структуру вывода

▼
💾
Анти-паттерн"Перегрузка контекстом"

50+ страниц в одном промпте

▼
🚪
Анти-паттерн"Без ограничений"

Не сказать модели, чего она НЕ должна делать

▼
🙈
Анти-паттерн"Слепое доверие"

Использование результата без проверки

▼

Практикум: исправление анти-паттернов

Практикум: найди анти-паттерны

Промпт 1 из 3
Напиши тесты для нашего приложения.

Задание: Найдите анти-паттерны в следующих промптах и предложите исправления.

  1. Промпт: «Напиши тесты для нашего приложения.»
    • Анти-паттерны: слишком общий, без контекста, без формата.
  2. Промпт: «Вот 100 страниц требований. Проанализируй и сгенерируй тест-план, тест-кейсы, автотесты и отчёт о покрытии.»
    • Анти-паттерны: сделай всё сразу, перегрузка контекстом.
  3. Промпт: «Ты — QA. Сгенерируй тест-кейсы для формы.»
    • Анти-паттерны: без контекста (какая форма?), без ограничений, без формата.

Материалы к главе