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

Поля набора диалогов

Файл с набором диалогов должен иметь все следующие поля:

Другие поля в файле игнорируются.

testCase

Имя тест-кейса, к которому относится шаг.

Тест-кейс может иметь несколько шагов. В этом случае указывайте у шагов одинаковое значение в поле testCase.

Шаги тест-кейса выполняются в том порядке, в котором они указаны в файле. Если один из шагов неуспешный, то следующие шаги тоже считаются неуспешными и не выполняются.

Пример: тест-кейс из нескольких шагов
testCasecommentrequestexpectedResponseexpectedStateskippreActions
weather/start/Start
weatherприветПривет, привет!/Hello
weatherКакая погода?/Hello/Weather

Тест-кейс weather состоит из трех шагов:

  1. Пользователь пишет «/start». Ожидаемая реакция: бот перейдет в стейт /Start.
  2. Пользователь пишет «привет». Ожидаемая реакция: бот перейдет в стейт /Hello и ответит «Привет, привет!».
  3. Пользователь пишет «Какая погода?». Ожидаемая реакция: бот перейдет в стейт /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, все остальные поля оставьте пустыми.

testCasecommentrequestexpectedResponseexpectedStateskippreActions
successкупитьСпасибо за заказ!
Заказ принят!
Спасибо за покупку!

Шаг считается успешным, если ответ совпал с одной из трех фраз: «Спасибо за заказ!», «Заказ принят!» или «Спасибо за покупку!».

подсказка

В каждом варианте ответа вы также можете использовать маски.

Маски в ответах

Текст ответа бота может формироваться динамически — например, если бот добавляет в ответ данные, полученные из внешней системы. Так как части ответа могу меняться, полный текст ответа заранее не известен.

В таких случаях вы можете использовать в поле expectedResponse маски:

МаскаОписаниеПримеры
{NUMBER}Последовательность из цифр.
  • 0123
  • 15
{WORD}Последовательность, которая может содержать буквы, цифры и дефис (-).
  • Привет
  • GPT-3
{LINK}URL-адрес с протоколом HTTP или HTTPS. Адрес может содержать символы кириллицы.
{ANYTHING}Последовательность из любых символов. Состоит хотя бы из одного символа.
  • Привет, привет!
  • Abc123_?! ,.
примечание

Чтобы экранировать маску, укажите символ \ перед маской. Пример: \{LINK}.

Примеры использования масок
expectedResponseТекст, который совпадает с expectedResponse
Доступные дни: {WORD}, {WORD}Доступные дни: понедельник, четверг
Номер заказа: {NUMBER}. Перейдите по ссылке: {LINK}Номер заказа: 15. Перейдите по ссылке: https://example.com
Ваш секретный код: {ANYTHING}Ваш секретный код: Abc123_?! ,.
Укажите число в формате \{NUMBER}Укажите число в формате {NUMBER}

skip

Пропуск шага.

Возможные значения: TRUE, FALSE (значение по умолчанию). Регистр не учитывается.

Если указано TRUE, то шаг не выполняется и не учитывается при оценке.

preActions

Имя тест-кейса, шаги которого будут выполнены перед текущим шагом.

Шаги из preActions:

  • не проверяются и не влияют на оценку;
  • всегда выполняются, даже если у них в поле skip указано TRUE.
Пример использования preActions
testCasecommentrequestexpectedResponseexpectedStateskippreActions
hello/start/Start
helloприветПривет, привет!/Hello
weatherКакая погода?/Hello/Weatherhello
alarmПоставь будильник/Hello/Alarmhello

Чтобы узнать погоду или поставить будильник, пользователь сначала должен написать «/start» и «привет». Чтобы не добавлять эти шаги в тест-кейсы weather и alarm, укажите их в тест-кейсе hello:

  1. Пользователь пишет «/start». Ожидаемая реакция: бот перейдет в стейт /Start.
  2. Пользователь пишет «привет». Ожидаемая реакция: бот перейдет в стейт /Hello и ответит «Привет, привет!».

Теперь вы можете использовать эти шаги перед тест-кейсами weather и alarm с помощью поля preActions.

Тест-кейс weather:

  1. Выполняются шаги preActions:
    1. Пользователь пишет «/start».
    2. Пользователь пишет «привет».
  2. Пользователь пишет «Какая погода?». Ожидаемая реакция: бот перейдет в стейт /Hello/Weather.

Тест-кейс alarm:

  1. Выполняются шаги preActions:
    1. Пользователь пишет «/start».
    2. Пользователь пишет «привет».
  2. Пользователь пишет «Поставь будильник». Ожидаемая реакция: бот перейдет в стейт /Hello/Alarm.

Поле заполнять необязательно.