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

Тестировщица и коллега сверяют диалог бота с планом переходов, сгенерированная иллюстрация

Определите, что именно принимаете

Начните с одной задачи посетителя: выбрать услугу и оставить обращение, уточнить условие или найти нужный материал. Запишите исходную точку, действия человека и признак завершения. «Бот работает» нельзя проверить одним наблюдением. «После подтверждения учебное обращение один раз попало ответственному с выбранной услугой» уже позволяет сравнить ожидание с фактом.

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

Для начала выберите существующий сценарий, а не придумывайте функции во время приёмки. В каталоге ботов Nazara собраны отдельные проекты и демонстрации; наличие карточки не означает, что каждый бот умеет принимать оплату, записывать клиента или связываться с оператором. Отметьте, какие действия действительно входят в Вашу версию, и проверяйте именно их.

Если ещё не определены обязанности бота, сначала разберите, какие задачи можно передать боту. На этапе приёмки нужны согласованные условия: кому предназначен диалог, какие сведения он собирает, где заканчивается автоматический ответ и что получает ответственный сотрудник. Неизвестное условие отмечайте как вопрос к сценарию, а не как случайный сбой программы.

Соберите карту веток и ожидаемых ответов

Перечислите состояния разговора и допустимые переходы между ними. Например, в условном боте приёма заявок человек выбирает услугу, описывает задачу, проверяет сведения и подтверждает отправку. У каждого шага могут быть исправление, отмена и помощь. Это учебный пример, не описание готового продукта. Для Вашего диалога нужны фактические названия кнопок и условия перехода.

Удобно завести таблицу: номер проверки, исходное состояние, ввод, ожидаемый ответ, ожидаемое изменение данных, фактический результат. Ответ в чате и изменение записи разделяйте. Сообщение «получено» может появиться раньше, чем обращение увидит сотрудник. Если процедура требует двух подтверждений, предусмотрите два наблюдения, не объединяя их одной галочкой.

Начальное состояниеДействиеЧто проверяем
Выбор услугиДопустимая кнопкаОткрыт следующий шаг, выбор сохранён
Описание задачиНеподходящий тип сообщенияПонятное пояснение, данные не потеряны
Проверка сведенийВернуться и исправитьИзменено нужное поле, остальные сохранены
ПодтверждениеПовторное нажатиеНет второго нежелательного обращения
Незавершённый диалогОтмена и новый запускЯсно, что сохранено и с чего начинается новый путь

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

При изменении сценария сохраняйте версию карты. Иначе успешная проверка вчерашней ветки будет выглядеть подтверждением новой логики. Запишите дату, версию бота и проверяющего, но не ставьте отметку «пройдено» автоматически после обновления. Особенно внимательно возвращайтесь к веткам, которые используют изменённое поле или общий обработчик кнопок.

Проверьте ввод вне предложенных кнопок

Посетитель не обязан отвечать так, как задумал автор. Там, где ожидается текст, он может отправить фотографию или голосовое сообщение. Вместо выбора услуги написать вопрос. После паузы продолжить старую мысль. Подготовьте такие проходы заранее: бот должен объяснять допустимое действие, сохранять понятный контекст и не выдавать техническую ошибку за нормальное завершение.

Документация Telegram о клавиатурах различает обычные кнопки ответов и inline-кнопки. Обычная текстовая кнопка отправляет текст, тогда как inline-кнопки могут запускать другие действия. Поэтому нельзя считать нажатие единственным источником ввода: человек способен прислать сообщение вручную. Для конкретного бота проверьте оба пути, если они предусмотрены его интерфейсом.

Проверяйте пустое по смыслу сообщение, очень длинный ответ, лишние пробелы и неподходящий формат. Если ограничение есть, посетителю нужно узнать, что изменить. Фраза «ошибка» не объясняет, требуется ли сократить описание, выбрать вариант или попробовать позже. При этом бот не должен молча обрезать важные сведения и показывать человеку уже изменённый смысл как его собственный ответ.

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

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

Пройдите возврат, отмену и старые сообщения

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

Отмена тоже требует проверки результата. Человеку нужно понимать, прекращена ли только текущая форма или удалено уже отправленное обращение. Не пишите «всё отменено», если запись осталась в обработке. Для уже подтверждённой заявки может требоваться другой порядок; тогда бот должен направить к нему, а не создавать ложное ощущение отменённой работы.

Отдельно нажмите кнопку из более раннего сообщения. Интерфейс чата хранит историю, и посетитель может вернуться к прежней клавиатуре. Ожидание должно быть определено: понятный отказ для устаревшего действия, переход к актуальному шагу или безопасное повторное открытие. Для кнопок Telegram разработчику полезно учитывать структуру CallbackQuery; владелец сценария проверяет видимый результат, а не подменяет его чтением API.

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

Проверьте подтверждение и получение обращения

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

Повторите нажатие подтверждения, если это безопасно в тестовой среде. Проверьте не только число сообщений, но и число созданных обращений. Два уведомления об одной записи и две разные записи — разные дефекты. Защита от повторов зависит от реализации: её нельзя подтвердить по тому, что кнопка стала серой на одном устройстве.

Недоступность внешней системы воспроизводите только согласованным безопасным способом. Не отключайте рабочий канал и не отправляйте сообщения реальным клиентам ради проверки. Если подтверждение доставки недоступно, сформулируйте ограничение приёмки: известно, что бот принял данные, но получение сотрудником пока не проверено. Такое ограничение нельзя скрывать сообщением об окончательной готовности.

В случае передачи человеку проверьте, кто отвечает дальше и какой контекст получает сотрудник. В этой статье оценивается именно проход сценария. Организацию работы оператора подробнее раскрывает материал о передаче сложного вопроса бота человеку. Не засчитывайте передачу только по появлению фразы «оператор уведомлён»: найдите соответствующее тестовое обращение у получателя.

Запишите ошибку так, чтобы её повторили

В описании дефекта укажите начальное состояние, последовательность действий, ожидаемый и фактический результат. Добавьте время и версию сценария. «Не работает кнопка» оставляет слишком много вариантов; «после возврата с подтверждения поле услуги очищается, хотя ожидалось сохранение» позволяет разработчику воспроизвести проблему.

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

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

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

Примите решение по проверенным веткам

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

Затем предложите человеку, не писавшему сценарий, выполнить задачу без подсказок. Назовите цель, но не объясняйте заранее, какую кнопку искать. Если он застрял, отметьте точный шаг и вопрос. Согласованные проверки логики и удобство самостоятельного прохода дополняют друг друга; один удачный разговор знакомого с проектом сотрудника не подтверждает понятность всем посетителям.

Используйте чек-лист как запись собственной проверки. Отметки сохраняются в этом браузере и не означают автоматического тестирования Вашего бота. Если ветка не пройдена, оставьте её незавершённой. При запуске ограниченной версии прямо перечислите доступные действия, а неподготовленные функции уберите из обещаний и меню.

Если нужна помощь с проверкой, через Умную форму можно описать одну задачу посетителя и переход, который вызывает сомнение. Для начала достаточно обезличенного примера; доступы, пароли и переписку клиентов отправлять не нужно.

Частые вопросы

Сколько тестовых проходов достаточно

Фиксированного числа нет. Ориентируйтесь на покрытие согласованных веток и существенных ошибок. Десять повторов одного успешного пути не проверяют отмену или восстановление после паузы.

Нужно ли проверять каждое устройство

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

Можно ли тестировать на настоящем клиенте

Для технической приёмки подготовьте безопасные данные и получателя. Рабочее обращение может вызвать реальные сообщения или действия, которые потом трудно отменить. Проверку с пользователем организуйте отдельно с понятными условиями участия.

Что делать с непостоянным ответом ИИ

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

Нужны ли автоматические тесты

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

Можно ли запустить только часть сценария

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