Тестирование сценария бота
Прежде чем опубликовать бота протестируем его, убедимся, что не совершили ошибок в процессе написан ия сценария. Затем с помощью тестового виджета поиграем в созданную игру и проверим, что переходы в сценарии работают корректно.
Тестирование .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
:
<test-case id="1">
— проверяем, что сработает стейт/Правила/Согласен?/Нет
, если пользователь не захочет сыграть в игру.<test-case id="2">
— проверяем, что при отправке сообщения, не включенного ни в один стейт, сработает стейт/NoMatch
.<test-case id="3">
— проверяем правильность работы случайного выбора фраз с помощью тегаrandom
в стейте/NoMatch
.<test-case id="4">
— проверяем ответы бота в процессе самой игры.
Тестирование с помощью тестового виджета
- Пользователь отказывается сыграть в игру.
Убедимся, что бот выдает правильную реакцию на несогласие пользователя сыграть в игру.
Теперь проверим, начнется ли вновь игра, если пользователь напишет давай поиграем
.
- Пользователь ввел сообщение, которое мы не учли при разработке сценария.
Предположим, что вместо согласия на предложение сыграть в игру, пользователь напишет как ты?
. В таком случае бот ответит одним случайно выбранным сообщением из стейта NoMatch
. Кроме того, проверим, что бот не выпал из контекста и отправит сообщение Я загадал число. Твоя догадка?
в ответ на фразу да
от пользователя, .
- Пользователь согласился сыграть.
Теперь попробуем отгадать загаданное число.
Можно заметить, что ответы боты выбираются случайным образом посредством функции selectRandomArg()
.
Попробуем отправить сообщение не знаю
и убедимся, что бот правильно отреагирует и не выпадет из контекста.