Перейти к основному содержимому

Тестирование сценария бота

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

Тестирование .xml

Напишем простой тест, охватывающий переходы по стейтам для бота. Для этого создайте файл text.xml, в папке test и напишите следующий тест:

<test>
<test-case id="1">
<q>/start</q>
<a state = "/Правила"/>
<q>нет</q>
<a state = "/Правила/Согласен?/Нет"/>
</test-case>
<test-case id="2">
<q>/start</q>
<a state = "/Правила"/>
<q>как дела?</q>
<a state = "/NoMatch"/>
</test-case>
<test-case id="3">
<random>1,2</random>
<q>/NoMatch</q>
<a>Что вы имеете ввиду?</a>
<q>/NoMatch</q>
<a>Ничего не пойму</a>
<q>/NoMatch</q>
<a>Я не понял.</a>
</test-case>
<test-case id="4">
<q>/start</q>
<a>Игра больше-меньше. Загадаю число от 0 до 100, ты будешь отгадывать. Начнём?</a>
<q>да</q>
<random>23</random>
<a>Я загадал число. Твоя догадка?</a>
<q>21</q>
<a>Мое число больше!</a>
<q>30</q>
<a>Подсказка: число меньше</a>
<q>25</q>
<a>Мое число меньше!</a>
<q>23</q>
<a>Ты выиграл! Хочешь еще раз?</a>
</test-case>
</test>

Нажмите на иконку Сохраните написанный сценарий, расположенную справа на верхней панели, для сохранения написанного сценария.

Каждый test-case проверяет, соответствует ли реальный ответ бота ожидаемому. Реплика пользователя обозначается тегом <q>, а реакция <a>.

Каждому test-case можно присвоить свой идентификатор id:

  1. <test-case id="1"> — проверяем, что сработает стейт /Правила/Согласен?/Нет, если пользователь не захочет сыграть в игру.
  2. <test-case id="2"> — проверяем, что при отправке сообщения, не включенного ни в один стейт, сработает стейт /NoMatch.
  3. <test-case id="3"> — проверяем правильность работы случайного выбора фраз с помощью тега random в стейте /NoMatch.
  4. <test-case id="4"> — проверяем ответы бота в процессе самой игры.
подсказка

Тестирование с помощью тестового виджета

  1. Пользователь отказывается сыграть в игру.

Убедимся, что бот выдает правильную реакцию на несогласие пользователя сыграть в игру.

Тестовый виджет

Теперь проверим, начнется ли вновь игра, если пользователь напишет давай поиграем.

Тестовый виджет

  1. Пользователь ввел сообщение, которое мы не учли при разработке сценария.

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

Тестовый виджет

  1. Пользователь согласился сыграть.

Теперь попробуем отгадать загаданное число.

Тестовый виджет

Можно заметить, что ответы боты выбираются случайным образом посредством функции selectRandomArg().

Тестовый виджет

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

Тестовый виджет

Мы отгадали число и убедились в правильной работе сценария.

игра

Теперь подключите самостоятельно канал и поиграйте с ботом.