# Тесты

Пишите тест-кейсы с критериями приёмки — модель проверки оценит каждое изменение агента

> Full REST + WebSocket API reference: https://api.happ.tools/reference

**Тесты** ловят плохой ответ до того, как его увидит клиент. Вы описываете разговор и что агент должен (и не должен) делать; Happ проигрывает его в скрытом чате плейграунда — с тем же промптом, моделью, инструментами и базой знаний, что и в живых чатах, — а **модель проверки** оценивает диалог: **Пройдено** или **Не пройдено**, оценка от 0 до 1 и вердикт.

Откройте их из боковой панели агента: **Монитор** > **Тест**. Тесты проходят как текстовые чаты; голос проверяйте кнопкой **Тест звонком** в верхней панели.

<TestsPageDemo />

## Добавление тест-кейса [#add-a-test-case]

**Добавить кейс** открывает редактор:

| Поле                                 | Что делает                                                                                                                                               |
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Название                             | До 300 символов, например «Находит товар в каталоге»                                                                                                     |
| Режим                                | **AI-клиент** — модель играет клиента по вашему сценарию (до 12 реплик). **Скрипт** — до 10 сообщений клиента, которые отправляются дословно, по порядку |
| Сценарий клиента / Сообщения клиента | Кто клиент, чего хочет, какие данные даёт — или точные сообщения                                                                                         |
| Критерии приёмки                     | Что агент должен делать и чего не должен, например «Вызывает search\_in\_vector() перед тем, как назвать цену»                                           |
| Динамические переменные              | Значения для `{{placeholders}}` в промпте на время теста — как на настоящем звонке                                                                       |
| Моки инструментов                    | Подставные ответы инструментов (см. ниже)                                                                                                                |
| Лимиты расходов                      | **Макс. сообщений в диалоге** (2–200) и &#x2A;*Макс. стоимость, $**. Превышение лимита останавливает кейс с ошибкой                                      |

Новые кейсы сохраняются **выключенными**: включите **Запускать со всеми** в таблице, чтобы они попали в **Запустить все**.

**Предложить (AI)** составляет черновики кейсов за вас: модель читает промпт, инструменты и базу знаний агента. Добавьте необязательный фокус («возвраты, грубые клиенты»), выберите количество (1–10), оставьте нужные.

## Моки инструментов [#mock-the-tools]

**Вызовы инструментов в тестах настоящие, если их не замокать** — тест может создать реальный заказ в вашей CRM. Мокайте всё, что меняет данные:

* **Мокать все инструменты** — каждый вызов инструмента в каждом тесте этого агента получает подставной ответ.
* **Этот тест / Все тесты** — мок одного инструмента для одного кейса или для всего агента. Правила проверяются сверху вниз, срабатывает первое совпавшее; правило может проверять аргумент вызова (`parameter = value`) и возвращать ошибку.

## Запуск [#run]

* **Запустить все** запускает все включённые кейсы; ▶ в строке — один кейс, даже выключенный.
* **Прогнать на** выбирает главную версию или [черновик](/docs/agents/versions) — проверьте эксперимент до того, как он пойдёт в работу.
* **Модель проверки** — модель судьи. По умолчанию — как у агента; другая, более сильная модель судит лучше.

Перед каждым запуском Happ показывает оценку: кейсы, модели, токены и **оценку стоимости**. Кейсы выполняются по три одновременно.

## Результаты [#read-the-results]

**Запуски** — список всех запусков со статусом (**В очереди**, **Выполняется**, **Завершён**, **Ошибка**), пройдено / всего, токенами, стоимостью и длительностью. Откройте запуск, чтобы увидеть:

* кейсы, которые **ухудшились** и **исправились** по сравнению с предыдущим запуском;
* каждый кейс: оценку, **вердикт** судьи, полный **диалог** с каждым вызовом инструмента, его входом и выходом;
* **Предложить правку** — минимальное изменение промпта, с которым кейс прошёл бы. Это предложение: внесите его сами и запустите кейс снова.

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

**API:** [api.happ.tools/reference](https://api.happ.tools/reference)

## Дальше [#next]

* [Версии и черновики](/docs/agents/versions) — проверьте эксперимент в черновике
* [Аудитор](/docs/agents/auditor) — проверка ответов вживую, а не только в тестах
* [Инструменты](/docs/agents/tools) — что агент может вызывать
