# Тестирование чат-бота (Chatbot)

Чат-бот - это программа, предназначенная для имитации общения с человеком. Разработчики обычно проектируют чат-ботов так, чтобы пользователям было сложно определить, общаются ли они с живым человеком или с роботом.

Чат-боты - это не что иное, как приложения, которые имеют прикладной уровень, базу данных и API. Чтобы упростить работу чат-бота, мы можем сказать, что он работает на сопоставлении с образцом для классификации текста и выдачи подходящего ответа на вопросы/запросы, заданные пользователем. Чат-бот отвечает пользователю согласно заложенной в него программе. Чат-боты бывают разных типов, в зависимости от того, как они используются. Существует три основных типа чат-ботов:

* Чат-бот на основе правил (Rule-Based Chatbot): это базовый чат-бот, пользователь взаимодействует с этим типом бота, используя предопределенные параметры. Чтобы получить ответы от этих ботов, пользователям необходимо выбрать определенные параметры. Такие боты собирают запрос пользователя, анализируют его, а затем предлагают результаты в виде кнопок. Эти боты обычно используются для замены часто задаваемых вопросов;
* Независимые (Keyword) чат-боты: это боты с машинным обучением, в отличие от чат-ботов на основе правил, они анализируют то, что хочет пользователь, и реагируют соответствующим образом. Эти чат-боты используют настраиваемые ключевые слова и машинное обучение, чтобы определить, как эффективно и результативно реагировать на запросы пользователей;
* НЛП (Contextual) чат-боты: на данный момент это самые продвинутые чат-боты. Они представляют собой комбинацию лучших чат-ботов на основе правил и ключевых слов. Эти чат-боты используют [NLP](https://en.wikipedia.org/wiki/Natural_language_processing), чтобы понять контекст и намерения запросов пользователей и действовать соответственно. Эти чат-боты могут легко обрабатывать несколько запросов от одного и того же пользователя.

**Частые проблемы чат-ботов**:

* Сломанные скрипты, которые приводят к сбоям в работе;
* Долгие паузы перед ответами;
* Нет связи с другими бизнес-каналами;
* Слишком много намерений или бизнес-задач для одного бота;
* Недостаток речи и/или точности (Lack of utterance and/or accuracy);
* Нет права на ошибку;
* Плохая навигация;
* Плохой дизайн разговора.

**Виды тестирования чат-ботов**

**1. Functional Testing**

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

![https://www.qamadness.com/wp-content/uploads/2021/01/chatbot-testing-1.png](https://www.qamadness.com/wp-content/uploads/2021/01/chatbot-testing-1.png)

Этот поток может варьироваться, и вам может потребоваться добавить другие этапы - горячий, холодный и ледяной; с чаем, алкоголем или ароматизатором; и так далее. Логика будет усложняться, когда вы добавите возможность заказать кофе в зернах, десерты или другие продукты, которые покупатель обычно может найти в кофейне.

Другой сценарий более сложен. Он обрабатывает прямые запросы пользователей и извлекает необходимую информацию. Например, пользователь видит «Привет! Что бы вы хотели заказать?" сообщение и набирает ответ. Пусть это будет «Капучино с одним сахаром и холодный напиток без сахара для Бена». Здесь есть несколько сущностей, которые чат-бот должен понимать:

* Тип кофе - капучино, колд брю;
* Варианты сахара - да, нет;
* Количество сахаров - один, ноль;
* Имя заказчика - Бен.

Разработчики вставляют эти данные на ранних этапах и строят на их основе логику чат-бота. Чтение и извлечение информации функционирующим ботом также называется заполнением слотов (slot filling).

ТЕСТИРОВАНИЕ: Чтобы узнать, знаком ли бот с основными сущностями, инженеру по контролю качества необходимо будет выполнить тесты, специфичные для предметной области. Важно убедиться, что чат-бот понимает все термины, связанные с кофе, которые могут использовать клиенты.

СОВЕТЫ ПО КАЧЕСТВУ: Убедитесь, что вы добавили достаточное количество объектов и значений для каждого, чтобы чат-бот мог правильно понять запрос. В идеальном случае вам нужно будет охватить оба сценария - один для тех, кто уже знает, и один для тех, кто выбирает, что заказать.

**2. Валидация входных данных (Validating Inputs - Some More Functional Testing)**

Если чат-бот принимает такие входные данные, как адреса электронной почты, номера телефонов и почтовые индексы, для системы очень важно распознать правильный формат данных.

ТЕСТИРОВАНИЕ: Скармливайте чат-боту адреса электронной почты, номера телефонов и почтовые индексы в разных неправильных форматах, например:

* адрес электронной почты без символа @;
* адрес электронной почты с пробелами;
* неправильное количество цифр в почтовом индексе;
* буквы в номере мобильного телефона.

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

СОВЕТЫ ПО КАЧЕСТВУ: Проверка данных должна быть немедленной и сопровождаться соответствующим сообщением. Сообщение может показывать пример правильного адреса электронной почты, номера мобильного телефона и т. д. или просто уведомлять об ошибке. Если ввод действителен, пользователь должен увидеть «сообщение об успехе» - доказательство того, что система получила ваши данные и распознала их как действительные.

**3. Негативные входные данные (Unknown Inputs - Error Handling & Limit Value Testing)**

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

ТЕСТИРОВАНИЕ: Запустите исследовательские тесты, чтобы узнать, как чат-бот обрабатывает нестандартные входные данные. Они могут включать:

* Случайные разговоры, не связанные с целью чат-бота;
* Бессмысленные предложения или выражения, которые обычно не используются;
* Грамматические ошибки, опечатки, сленг, разные варианты английского языка;
* Сбивающие с толку и оскорбительные сообщения.

СОВЕТЫ ПО КАЧЕСТВУ: Креативность клиентов не имеет границ, особенно когда они хотят поиграть с чат-ботом. Вы не можете охватить все возможные сценарии и сообщения. Есть несколько вещей, которые нужно сделать:

* Добавьте варианты общих ключевых слов с опечатками в жаргон чат-бота. Если бот не может понять небольшие изменения запроса, разработчикам нужно научить его это делать;
* Работайте над светской беседой, чтобы поддержать основную непринужденную беседу. Это придаст человечности, сделает разговор непринужденным и веселым. Эти запросы привлекают внимание пользователей и оказывают положительное влияние на пользовательский опыт;
* Придумывайте ответы на оскорбительные сценарии. Вам нужно будет создать несколько дополнительных слотов для ненормативной лексики, чтобы чат-бот мог дать остроумный ответ. Напишите экстренный ответ на несоответствующие запросы. Хотя приведенные выше пункты являются скорее рекомендациями, этот является обязательным. Вы можете использовать ответ «Извините, я не понял» для любого запроса, который не полностью соответствует логике;
* Избегайте бесконечных циклов. Когда чат-бот не получает соответствующий запрос или ответ на вопрос, он должен попросить уточнить запрос или предложить дополнительные варианты. Убедитесь, что разговор завершен, и программа не показывает один и тот же ответ вечно. Вместо этого запрограммируйте чат-бота на завершение разговора или подключите человека-эксперта после трех или пяти запросов «Я не понял» подряд.

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

**4. UI Testing**

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

ТЕСТИРОВАНИЕ: Необходимо проверять весь поток на наличие битых ссылок, графических элементов и пробелов в логике.

СОВЕТЫ ПО КАЧЕСТВУ: Предоставьте пользователям возможность оставлять отзывы. Таким образом, они сообщат, если обнаружат какие-то дефекты, которые вы могли пропустить. 100% покрытие тестами - это миф, и оставить пару мелочей незамеченными - это нормально.

**5. Compatibility Testing**

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

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

СОВЕТЫ ПО КАЧЕСТВУ: Проверьте чат-бот на широко используемых устройствах, браузерах и версиях ОС перед выпуском. При необходимости настройте стиль и параметры окна чат-бота.

**6. UX Testing**

Это один из наиболее очевидных аспектов чат-бота для проверки. UX-тестирование будет основываться как на бизнес-требованиях, так и на личном опыте пользователей. Важно убедиться, что чат-бот выполняет свою основную задачу, генерируя правильные и точные ответы.

ТЕСТИРОВАНИЕ: На основе бизнес-требований создайте сценарии для пользовательских запросов. Основная идея - проверить эти запросы с точки зрения пользователя, который впервые видит вашего чат-бота. Итак, начните с ответов на следующие вопросы:

* Понимает ли чат-бот вопросы?
* Предоставляет ли он мгновенные ответы на эти запросы?
* Является ли информация актуальной, точной и полезной для пользователя?
* Требуется ли для завершения пути пользователя больше или меньше шагов?
* Привлекательно ли это для пользователей?
* Склонны ли они отказываться от чат-бота?
* Как сделать беседу более увлекательной?

СОВЕТЫ ПО КАЧЕСТВУ: Главное правило - вести разговор как можно более нормально. Итак, вот несколько основных правил, которые помогут вам достичь этой цели:

* Разговор с чат-ботом должен иметь логический ход, очень похожий на реальный разговор с человеком. Например, начните с приветствия, а затем задайте вопрос, чтобы начать разговор:
  * Могу я чем-нибудь помочь?
  * Что вы ищете?
  * Заинтересован ли ты в…?
* Обратите внимание на варианты ввода. Если у вас есть текстовое поле, в котором пользователи могут вводить свои запросы, убедитесь, что чат-бот понимает разные запросы. Допустим, вы хотите заказать товар в канцелярском магазине. Существует несколько вариантов начала разговора:

  * Я хочу заказать блокнот.
  * Мне нужен блокнот.
  * Какие тетради у вас есть?
  * Можно мне лиловый блокнот с точками размером 5×3,5 дюйма?

  Может быть разумно предоставить стандартный набор ответов, это зависит от цели вашего чат-бота и разнообразия доступных товаров/услуг.
* Каждый ответ должен быть логически связан с предыдущим запросом или вопросом. Крайне важно, чтобы чат-бот предоставлял только актуальную и необходимую информацию. Мгновенно уведомляйте клиентов об ошибках в их запросах. Подтвердите сообщение об успешном завершении, если чат-бот запрашивает ввод контактных данных;
* Всегда должно быть последнее сообщение, сигнализирующее об окончании разговора. Оно может содержать ссылки на некоторые полезные ресурсы, рекомендации по дальнейшему общению или прощальную фразу;
* Рассмотрите возможность подключения пользователя к помощнику-человеку. Хотите вы того или нет, но есть вопросы, с которыми боты не справятся. И просто так предоставьте возможность вернуться к началу или вернуться к предыдущему шагу. Чат-бот требует четкой навигации, как и любой другой онлайн-сервис.

**7. Performance Testing**

Люди, использующие чат-боты, рассчитывают получить точные ответы на свои запросы и получить их мгновенно. Это означает, что тестирование производительности чат-бота необходимо. Следовательно, задержка - время, необходимое чат-боту для получения ответа и его отображения, - должна быть минимальной.

ТЕСТИРОВАНИЕ: QA-инженер должен проверять разные запросы, которые охватывают маленькие и большие диалоги и содержат разные типы контента. Чтобы каждый ответ появился на экране, должно пройти одинаковое время, независимо от его места в пути пользователя и избранного контента.

СОВЕТЫ ПО КАЧЕСТВУ: Задержка, которая длится более пары секунд, вызывает разочарование, и пользователь, скорее всего, откажется от чат-бота. Задержка может зависеть от содержания ответа, но рекомендуемое время ответа составляет до двух секунд.

**8. Integration/API Testing**

Как правило, чат-бот не работает сам по себе - он становится неотъемлемой частью цифровой экосистемы компании. То есть вам в конечном итоге нужно будет подключить его к официальному сайту, учетной записи в социальной сети, мессенджеру или другому приложению.

ТЕСТИРОВАНИЕ: Если вы используете программное обеспечение для создания ботов, вы, вероятно, найдете API, который позволяет подключать чат-бот к вашей системе и запускать тесты API. Если вы используете собственное решение, необходимо запустить интеграционные тесты, чтобы проверить, как бот и другие системные функции ведут себя при подключении.

СОВЕТЫ ПО КАЧЕСТВУ: Обратите внимание как на технические, так и на дизайнерские аспекты вашего чат-бота. Это часть вашей цифровой системы, и она должна легко интегрироваться. Все упомянутые выше аспекты функциональности и производительности должны соответствовать стандартам качества после подключения чат-бота к веб-сайту или другой платформе. Дизайн должен соответствовать другим медиа и имиджу бренда в целом. Последний аспект подпадает под UX-тестирование, но на этом этапе может стать очевидным несоответствие.

**9. Localization Testing**

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

ТЕСТИРОВАНИЕ: Доверьте тестирование локализации тому, кто умеет редактировать тексты. Если QA-специалист не уверен в своих навыках корректора, поручите эту задачу другому члену команды. Кроме того, свежий взгляд всегда полезен. Итак, проверьте ответы на орфографические, лексические и грамматические ошибки, пунктуацию и связность. Также убедитесь, что форматирование правильное. Всякий раз, когда у вас есть список вещей, используйте маркеры или цифры. Делайте предложения короткими и делите информацию на абзацы, если сообщение длинное.

СОВЕТЫ ПО КАЧЕСТВУ: Было бы здорово, если бы чат-бот распознавал часовой пояс пользователя и соответственно приветствовал его. Что касается языка, то система должна иметь доступ к соответствующим настройкам устройства или начать разговор, указав эти данные. Если важна валюта и другие детали локализации, чат-бот также должен указывать их с помощью вопросов.

Источники:

* [Building a Chatbot using Chatterbot in Python](https://www.datacamp.com/community/tutorials/building-a-chatbot-using-chatterbot)
* [Chatbot Testing: Features to Check & Quality Tips to Keep In Mind](https://www.qamadness.com/chatbot-testing/)

Доп. материал:

* [Как тестировать чат-бот / Chatbot testing](https://www.youtube.com/watch?v=9wpy2CwR-fU)
* [BDD-тестирование чат-бота](https://habr.com/ru/company/oleg-bunin/blog/551430/)
* [Chatbot Best Practices](https://www.chatbot.com/chatbot-best-practices/)
* [Как улучшить сценарий чат-бота: коридорные тесты](https://robochat.io/blog/%D1%87%D0%B0%D1%82-%D0%B1%D0%BE%D1%82-%D1%82%D0%B5%D1%81%D1%82/)
* [Using A/B Testing to Create Effective Chatbot Strategy](https://landbot.io/blog/chatbot-ab-testing)
* [Основные различия между Viber и Telegram и как тестировать боты для них](https://blog.ithillel.ua/articles/osnovnye-razlichija-mezhdu-viber-i-telegram-i-kak-testirovat-boty-dlja-nih)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://vladislaveremeev.gitbook.io/qa_bible/testirovanie-v-raznykh-sferakh-oblastyakh-testing-different-domains/testirovanie-chat-bota-chatbot.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
