Поля набора диалогов
Файл с набором диалогов должен иметь все следующие поля:
Другие поля в файле игнорируются.
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.
Поле заполнять необязательно.