Тестирование сценария со слот-филлингом
подсказка
Тестирование сценария бота со слот-филлингом представляет собой пошаговое описание взаимодействие пользователя с ботом и ожидаемых ответных реакций.
Рассмотрим тестирование слот-филлинга на простом сценарии:
require: slotfilling/slotFilling.sc
module = sys.zb-common
theme: /
state: Start
q: $regex</start>
a: Начнём!
state: Weather
intent!: /Погода
a: Погода в {{$parseTree._City}} на {{$parseTree._Date.value}}
state: CatchAll
event: noMatch
a: noMatch
Здесь интент /Погода
реагирует на запрос клиента прогноза погоды. Слоты заполнены следующим образом:
Здесь @City
— кастомная сущность, в которой мы указали все города, доступные для прогноза погоды.
Поведение сценария при разных запросах клиента:
Погода на завтра в Москве
: слоты заполнены, бот сразу предоставит ответ.Погода на завтра
: слотCity
не заполнен, будут заданы уточняющие вопросы. Как только будет дан корректный ответ, управление перейдет в сценарий, бот даст ответ.Погода в Москве
: слотDate
не заполнен, будут заданы уточняющие вопросы. Как только будет дан корректный ответ, управление перейдет в основной, бот даст ответ.
Тест для сценария:
<test>
<test-case>
<q>/start</q>
<a>Начнём!</a>
<q>Прогноз погоды</q>
<a>В каком городе?</a>
<q>В Москве</q>
<a>На какую дату?</a>
<q>На 11 декабря 2019</q>
<a>Погода в Москве на 2019-12-11T00:00:00</a>
</test-case>
</test>
В этом тест-кейсе мы рассматриваем случай, когда слоты не заполнены. Поэтому после <q>Прогноз погоды</q>
следует сценарий дозапроса. После того, как все слоты заполнены, сценарий выходит из слот-филлинга.
При написании тестов для сценария со слот-филлингом учитывайте различные ситуации, например, когда один слот заполнен, но последующие требуют заполнения.