Часть 4. Расширение и масштабирование · Глава 13

ИИ-агенты в тестировании

Цели раздела

4 пункта

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

  1. Отличать задачи для промпта, цепочки промптов и агента — и не подключать агента «ради моды».
  2. Понимать архитектуру агента (инструменты, память, цикл планирования) и роль HITL в QA.
  3. Знать классы агентов для тестирования и типовые сценарии по ролям в команде.
  4. Применять чек-листы запуска и ограничения безопасности перед автономными действиями агента.

Для junior: достаточно разделов о выборе «промпт vs агент», классах агентов и ограничениях; остальное — после месяца работы с шаблонами из главы 7.

Для разных уровней

Для junior: Прочитайте разделы «Агент vs чат», «Классы агентов для QA» и «Безопасность и human approval». Остальное — после месяца работы с промптами из главы 7.
Для middle+: Читайте полностью.

Промпт, цепочка промптов или агент?

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

ЗадачаЧто выбратьПочему
Сгенерировать 10 тест-кейсов по одному требованиюПромптОдин или два запроса, без автономного цикла
Разобрать требования → сгенерировать кейсы → собрать матрицу покрытияЦепочка промптовНесколько шагов, но без вызова внешних инструментов из «чёрного ящика»
Мониторить PR, анализировать изменения, запускать проверки, заводить тикетыАгентМного шагов, инструменты, решения по ходу
Сравнить скриншот с макетом (визуальный разбор)Мультимодальный промпт (Глава 8)Обычно один запрос с изображением

Правило: если задача закрывается 1–3 промптами и без обращения к API, файловой системе или браузеру в автономном режиме — начинайте с промпта или цепочки. Агент оправдан, когда нужны инструменты, ветвления и несколько итераций под контролем HITL.

Агент vs чат: принципиальная разница

Формула

Агент = LLM + Tools + Memory + Planning Loop + (опционально) другие агенты

Нажмите на карточку «Чат» или «Агент» — появится пояснение. Ниже — блок Chaining vs Agentic.

  1. 1Задача от QA
  2. 2Агент
  3. 3Инструмент (браузер / API / файлы)
  4. 4Результат инструмента
  5. 5Достаточно данных?
  6. 6Ответ QA-инженеру
  7. Если данных недостаточно — агент снова выбирает инструмент

Цепочка промптов vs агентный workflow: Chaining — линейный конвейер, жёсткое ветвление, нет инструментов, высокий контроль. Agentic — агент решает следующий шаг, динамическое ветвление, есть вызов инструментов, ниже контроль. В QA: chaining — многошаговая генерация документов; agentic — исследовательское тестирование, triage.

Минимальный агент за 20 минут

Цель: не «настоящий» LangGraph-агент, а один автоматизированный шаг: файл лога → черновик баг-репорта через локальную LLM. Без фреймворков — только Python и HTTP API Ollama.

Предусловия: Ollama запущен (ollama serve), модель скачана (ollama pull qwen3:8b или qwen3.5:9b). Время: ~5 мин подготовка + ~5 мин скрипт + ~10 мин проверка вывода.

1. Сохраните обезличенный фрагмент лога в error.log (пример):

Текст
2026-05-20T10:01:02Z ERROR payment-service user_id=[USER_42] card_declined code=insufficient_funds
2026-05-20T10:01:02Z INFO  payment-service retry=1 status=failed

2. Скрипт log_to_bug.py:

Python
#!/usr/bin/env python3
import json
import pathlib
import urllib.request

LOG_PATH = pathlib.Path("error.log")
PROMPT = """Ты — QA Engineer. По фрагменту лога составь ЧЕРНОВИК баг-репорта.
Ограничения: только факты из лога; не выдумывай версии ПО и окружение;
если данных не хватает — блок [НЕ ХВАТАЕТ ДАННЫХ].
Формат: Summary, Steps, Expected, Actual, Environment (если есть в логе), Notes for dev.

Лог:
---
{log}
---
"""

def main() -> None:
    log_text = LOG_PATH.read_text(encoding="utf-8")
    body = {
        "model": "qwen3:8b",
        "prompt": PROMPT.format(log=log_text),
        "stream": False,
        "options": {"temperature": 0.2},
    }
    req = urllib.request.Request(
        "http://127.0.0.1:11434/api/generate",
        data=json.dumps(body).encode(),
        headers={"Content-Type": "application/json"},
        method="POST",
    )
    with urllib.request.urlopen(req, timeout=120) as resp:
        data = json.loads(resp.read().decode())
    print(data["response"])
    pathlib.Path("bug_draft.md").write_text(data["response"], encoding="utf-8")

if __name__ == "__main__":
    main()

3. Запуск: python3 log_to_bug.py → откройте bug_draft.md.

4. HITL (обязательно): сверьте каждый факт с error.log; severity и окружение — только после вашего решения. Скрипт = инструмент, не агент с циклом планирования; следующий шаг к «настоящему» агенту — добавить ветвление («нужны ещё логи?») и лимит итераций (см. разделы «HITL и точки контроля» и «Failure Modes агентов» ниже).

Классы агентов для QA

Нажмите на тип агента — увидите применение

Single-Agent vs Multi-Agent

Single — одна задача, один набор инструментов. Multi — оркестратор делегирует специализированным агентам; оправдан при параллельном исследовании. Multi-agent сложнее в отладке; начинать с single-agent.

Когда агент, когда промпт

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

HITL и точки контроля

Уровни: нажмите на уровень, чтобы развернуть

Агент предлагает план, человек одобряет перед исполнением

По типам инструментов

read-only (поиск, код)→approval не нужен
test execution, bug reporting→да
environment control, destructive→обязательно

Практические сценарии по ролям

Нажмите на роль, чтобы увидеть сценарии

Кейсы применения (кратко)

Нажмите на кейс — откроется пояснение

Шаблоны заданий агенту

Структура задания агенту

Нажмите на блок, чтобы развернуть. Полные шаблоны — в Приложении H.

Что проверить/сделать

Чек-лист запуска агента (3 фазы)

Разверните фазу и отмечайте пункты по мере выполнения

Безопасность и human approval

  • Действия в production
  • Создание/обновление данных, видимых пользователям
  • Уведомления
  • Финансовые транзакции
  • Изменение конфигурации shared resources
  • Баг-репорты critical/blocker
  • Назначение на человека

Агенты для QA: применение, не хайп

Не говорить
  • «Агенты заменят тестировщиков»
  • «Протестируй всё»
  • «Cursor/Copilot сделают за вас»
Говорить
  • Агент — делегирование рутины, не ответственности
  • HITL обязателен
  • Агент требует больше контроля
  • Реалистично — ускорение исследования на 30–60%, не полная автоматизация
  • Cursor/Continue/Copilot — coding assistants, не полноценные агенты

Failure Modes агентов

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


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