Поля набора диалогов
Файл с набором диалогов должен иметь все следующие поля:
Другие поля в файле игнорируются.
testCase
Имя тест-кейса, к которому относится шаг.
Тест-кейс может иметь несколько шагов.
В этом случае указывайте у шагов одинаковое значение в поле testCase
.
Шаги тест-кейса выполняются в том порядке, в котором они указаны в файле. Если один из шагов неуспешный, то следующие шаги тоже считаются неуспешными и не выполняются.
Пример: тест-кейс из нескольких шагов
- Таблица
- CSV
testCase | comment | request | expectedResponse | expectedState | skip | preActions |
---|---|---|---|---|---|---|
weather | /start | /Start | ||||
weather | привет | Привет, привет! | /Hello | |||
weather | Какая погода? | /Hello/Weather |
testCase ,comment ,request ,expectedResponse ,expectedState ,skip ,preActions
weather , ,/start , ,/Start , ,
weather , ,привет ,"Привет, привет!" ,/Hello , ,
weather , ,Какая погода? , ,/Hello/Weather , ,
Тест-кейс weather
состоит из трех шагов:
- Пользователь пишет «/start».
Ожидаемая реакция: бот перейдет в стейт
/Start
. - Пользователь пишет «привет».
Ожидаемая реакция: бот перейдет в стейт
/Hello
и ответит «Привет, привет!». - Пользователь пишет «Какая погода?».
Ожидаемая реакция: бот перейдет в стейт
/Hello/Weather
.
Если поле не заполнено, то используется случайный идентификатор.
comment
Комментарий к шагу. Поле заполнять необязательно.
request
Запрос пользователя, на который должен реагировать бот.
expectedResponse и expectedState
Реакция бота:
expectedResponse
— ожидаемый текст ответа бота.expectedState
— первый стейт, в который должен перейти бот. Указывайте полный путь. Путь должен начинаться с/
.
У шага должно быть заполнено хотя бы одно из этих полей.
Во время тестирования проверяются только заполненные поля. Если ожидаемые значения совпали с полученными, то шаг считается успешным.
Несколько ответов подряд
Бот может давать несколько ответов подряд:
-
В одном стейте:
state: Hello
a: Привет!
a: Как дела? -
При переходе по стейтам:
state: Hello
a: Привет!
go!: /Question
state: Question
a: Как дела?
В этих случаях указывайте в поле expectedResponse
ответы через пробел: Привет! Как дела?
Случайные ответы
Бот может давать случайный ответ:
state: Success
random:
a: Спасибо за заказ!
a: Заказ принят!
a: Спасибо за покупку!
Чтобы проверить случайный ответ, укажите все возможные варианты ответа.
Каждый дополнительный вариант укажите на новой строке в поле expectedResponse
,
все остальные поля оставьте пустыми.
- Таблица
- CSV
testCase | comment | request | expectedResponse | expectedState | skip | preActions |
---|---|---|---|---|---|---|
success | купить | Спасибо за заказ! | ||||
Заказ принят! | ||||||
Спасибо за покупку! |
testCase ,comment ,request ,expectedResponse ,expectedState ,skip ,preActions
success , ,Покупаю ,Спасибо за заказ! , , ,
, , ,Заказ принят! , , ,
, , ,Спасибо за покупку! , , ,
Шаг считается успешным, если ответ совпал с одной из трех фраз: «Спасибо за заказ!», «Заказ принят!» или «Спасибо за покупку!».
В каждом варианте ответа вы также можете использовать маски.
Маски в ответах
Текст ответа бота может формироваться динамически — например, если бот добавляет в ответ данные, полученные из внешней системы. Так как части ответа могу меняться, полный текст ответа заранее не известен.
В таких случаях вы можете использовать в поле expectedResponse
маски:
Маска | Описание | Примеры |
---|---|---|
{NUMBER} | Последовательность из цифр. |
|
{WORD} | Последовательность, которая может содержать буквы, цифры и дефис (- ). |
|
{LINK} | URL-адрес с протоколом HTTP или HTTPS. Адрес может содержать символы кириллицы. | |
{ANYTHING} | Последовательность из любых символов. Состоит хотя бы из одного символа. |
|
Чтобы экранировать маску, укажите символ \
перед маской.
Пример: \{LINK}
.
Примеры использования масок
expectedResponse | Текст, который совпадает с expectedResponse |
---|---|
Доступные дни: {WORD}, {WORD} | Доступные дни: понедельник, четверг |
Номер заказа: {NUMBER}. Перейдите по ссылке: {LINK} | Номер заказа: 15. Перейдите по ссылке: https://example.com |
Ваш секретный код: {ANYTHING} | Ваш секретный код: Abc123_?! ,. |
Укажите число в формате \{NUMBER} | Укажите число в формате {NUMBER} |
skip
Пропуск шага.
Возможные значения: TRUE
, FALSE
(значение по умолчанию). Регистр не учитывается.
Если указано TRUE
, то шаг не выполняется и не учитывается при оценке.
preActions
Имя тест-кейса, шаги которого будут выполнены перед текущим шагом.
Шаги из preActions
:
- не проверяются и не влияют на оценку;
- всегда выполняются, даже если у них в поле
skip
указаноTRUE
.
Пример использования preActions
- Таблица
- CSV
testCase | comment | request | expectedResponse | expectedState | skip | preActions |
---|---|---|---|---|---|---|
hello | /start | /Start | ||||
hello | привет | Привет, привет! | /Hello | |||
weather | Какая погода? | /Hello/Weather | hello | |||
alarm | Поставь будильник | /Hello/Alarm | hello |
testCase ,comment ,request ,expectedResponse ,expectedState ,skip ,preActions
hello , ,/start , ,/Start , ,
hello , ,привет ,"Привет, привет!" ,/Hello , ,
weather , ,Какая погода? , ,/Hello/Weather , ,hello
alarm , ,Поставь будильник , ,/Hello/Alarm , ,hello
Чтобы узнать погоду или поставить будильник, пользователь сначала должен написать «/start» и «привет». Чтобы не добавлять эти шаги в тест-кейсы weather
и alarm
, укажите их в тест-кейсе hello
:
- Пользователь пишет «/start».
Ожидаемая реакция: бот перейдет в стейт
/Start
. - Пользователь пишет «привет».
Ожидаемая реакция: бот перейдет в стейт
/Hello
и ответит «Привет, привет!».
Теперь вы можете использовать эти шаги перед тест-кейсами weather
и alarm
с помощью поля preActions
.
Тест-кейс weather
:
- Выполняются шаги
preActions
:- Пользователь пишет «/start».
- Пользователь пишет «привет».
- Пользователь пишет «Какая погода?».
Ожидаемая реакция: бот перейдет в стейт
/Hello/Weather
.
Тест-кейс alarm
:
- Выполняются шаги
preActions
:- Пользователь пишет «/start».
- Пользователь пишет «привет».
- Пользователь пишет «Поставь будильник».
Ожидаемая реакция: бот перейдет в стейт
/Hello/Alarm
.
Поле заполнять необязательно.