Руководство по тестированию агента

Тестирование агента выполняется с помощью решателя Тестировщик агентов, расположенному в фонде по пути "Платформа IACPaaS / Тестирование".

Содержание

Общий порядок тестирования агента

Для разработки и прогона тестов некоторого агента, помещённого в фонд, необходимо выполнить следующие шаги:
  1. Разработать ИР с тестами для агента в соответствии с онтологией тестов агента (см. ИР Платформа IACPaaS / Тестирование / Структура тестов агента), ИР с отчётом о тестировании и инфоресурсы, используемые при тестировании:
  2. Создать инфоресурс для помещения отчётов о прогоне тестов для агента на основе онтологии отчёта о прогоне тестов агента (Проблемно-независимая предметная область / Тестирование / Структура отчета о тестировании).
  3. Сформировать (и запустить) сервис на запуск решателя Тестировщик агентов (Платформа IACPaaS / Тестирование ) с указанием в качестве входных единиц хранения ИР тестируемого агента и ИР, созданный на 2 шаге.
  4. Ознакомиться с содержанием отчёта о тестировании.

Разработка ИР с тестами для агента

Процесс подготовки тестирования для отдельного агента состоит из следующих подзадач:
  1. Подготовка содержательных тестов для проверки функциональности агента (каждого из его блоков).
  2. Создание нового ИР для хранения в нем множества тестов для этого агента.
  3. Заполнение нового ИР тестами (оформление этих тестов в виде ИР).
Далее каждая из подзадач рассмотрена подробнее.

Подготовка содержательных тестов для проверки функциональности агента

Поскольку каждый блок продукций агента запускается отдельно, то следует рассмотреть этот блок как отдельную функцию, для работы которой необходимы входные данные и в результате работы которой ожидаются некоторые результаты. Для каждой функции (отдельного блока агента) рекомендуется составить набор тестов — пар <вход; ожидаемый выход>, достаточный с точки зрения некоторой выбранной стратегии тестирования (например, покрытия всех классов эквивалентности и граничных значений для входных и выходных условий тестируемой функции).

Пример 1.
Если функция тестируемого агента (назовем его "ТестовыйАгентРешатель") состоит в суммировании двух слагаемых и анализе их знаков, то в качестве одной из тестовых пар может быть:
<(8; -10);
(-2; "разные знаки")>

Пример 2.
Если функция тестируемого агента (назовем его "НайтиСредиМножества") состоит в поиске указанного поддерева среди указанного множества поддеревьев, то в качестве одной из тестовых пар может быть:
<(1. М7654 1.1. Иванов С.М. 1.2. 1977;
0. Истории 1. Ж7653 1.1. Михайлова Ю.С. 1.2. 1980 2. М7654 2.1. Иванов С.М. 2.2. 1977;
3. М7655 3.1. Чичиков А.А. 3.2. 1955);
"поддерево найдено")>.

Примечание. Рекомендуется сохранить такой набор пар в некотором файле на локальном компьютере (для дальнейшего более быстрого заполнения ИР и, если надо, замены новыми версиями таких ИР).

Создание нового ИР для хранения в нем множества тестов для этого агента

Поскольку ИР с набором тестов для тестирования агента будет подаваться на вход приложению "Тестировщик агентов", то структура этого ИР фиксирована — он должен порождаться по метаинформации ИР "Структура тестов агента"). Для создания такого нового ИР достаточно подать две заявки: После этого целесообразно открыть вновь созданный ИР и породить в нем (в соответствии со существующей "Структурой тестов агента") две вершины:

Заполнение нового ИР тестами (разработка ИР "Набор тестов агента")

Шаг 0

Например, для тестирования агента "НайтиСредиМножества" удобно создать отдельный ИР "множествоДеревьев" для хранения множеств поддеревьев. Метаинформация для этого ИР, например, может быть такой:
0. название дерева
1. поддерево 
~set (~alt (строковое значение: строка; 
числовое значение: целое;
...;
-> поддерево)
А информация "множествоДеревьев", порожденная по нему, может быть такой:
0. Истории 
1. Ж7653 
1.1. Михайлова Ю.С. 
1.2. 1980 
2. М7654 
2.1. Иванов С.М. 
2.2. 1977; 
3. М7655 
3.1. Чичиков А.А. 
3.2. 1955).

Шаг 1

Необходимо подготовить входное сообщение для тестируемого агента, которое подаст на вход блоку агента входные данные очередного теста. Для этого нужно: Например, агент «НайтиСредиМножества» отвечает на сообщения по шаблонуЗадание, поэтому в заявке на ЕХ (для входного сообщения) надо указать метаинфо "Проблемно-независимая предметная область
\Тестирование\шаблонЗадание".
Например, в ЕХ "входное сообщение 2-1" (порожденное по метаинфо "ШаблонЗадание") указать строку «найти» как значение параметра "задание", указать ссылку на вершину-элемент М7654 (ранее созданного ИР "множествоДеревьев") как значение параметра "поддерево", указать ссылку на корневую вершину "Истории" (ранее созданного ИР "множествоДеревьев") как значение параметра "множество".

Например, для входного сообщения тестируемого агента "ТестовыйАгентРешатель" его ЕХ "входное сообщение 1-1" (порожденное по метаинфо "ШаблонАрифметический") содержит значения двух параметров: число "8" как значение параметра "слагаемое 1" и число -10 как значение параметра "слагаемое 2".

Важно: при заполнении ИР сообщения запрещается выполнять порождение копии понятия, содержащего описание шаблона сообщения, и выполнять порождение копии понятия, содержащего внутреннее имя шаблона сообщения!

Шаг 2

Необходимо подготовить вЫходные сообщения от тестируемого агента, которые он формирует в процессе своей работы. Например, мы ожидаем, что агент «НайтиСредиМножества» формирует одно сообщение (по шаблону «обратная связь»), тогда в нем укажем строку «поддерево найдено» становится значением параметра «информация о готовности».

Другой пример. Мы ожидаем, что агент "ТестовыйАгентРешатель" формирует два сообщения (каждое - по шаблону "ШаблонАрифметический"), тогда в первом из них укажем число "-2" как значение параметра "сумма", а во втором - строку "разные знаки" как значение параметра "пояснение".

Важно: при заполнении ИР сообщения запрещается выполнять порождение копии понятия, содержащего описание шаблона сообщения, и выполнять порождение копии понятия, содержащего внутреннее имя шаблона сообщения!

Шаг 3

Сформировать в ИР «тесты» очередной тест для тестируемого агента, а именно: Например, очередной тест для тестирования агента «НайтиСредиМножества» будет состоять из одной вершины - ссылки на входное сообщение и одной вершины - ссылки на вЫходное сообщение, а тест для агента "ТестовыйАгентРешатель" будет содержать две вершины - ссылки на вЫходное сообщение.

Если тестируемый агент должен вносить изменения в некоторый ИР (модифицировать ИР), хранимый в фонде, то (дополнительно надо убедиться, что среди параметров входного сообщения в этом тесте присутствует и ссылка на этот модифицируемый ИР); далее под вершиной «ожидаемые конечные состояния изменяемых инфоресурсов» надо породить вершину как ссылку на этот новый ЕХ фонда.

Примечание. Шаги 1-3 далее придется повторить столько раз, сколько тестов необходимо для тестирования агента (сколько содержательных тестов было разработано для функций агента). В процессе сопровождения множества тестов для конкретного агента тоже достаточно повторять эти три шага.

Использование разработанного ИР с тестами для тестирования агента

  1. Создать новый (желательно) ИР для хранения отчета о прогоне множества тестов, например, с именем «отчет», по метаинформации "Платформа IACPaaS / Тестирование / Структура отчета о тестировании". (Дождаться одобрения заявки со стороны администратора.) Убедиться в появлении нового ИР среди ЕХ соответствующего раздела предметной области.
  2. Подать заявку на создание сервиса с использованием решателя "Тестировщик агентов". В процессе заказа указать в качестве входного ИР сервиса — построенный ЕХ с множеством конкретных тестов. Указать в качестве вЫходного ИР сервиса — ИР для хранения отчета о прогоне множества тестов.
  3. Подать заявку на создание сервиса с использованием решателя "Просмотрщик инфоресурсов", указав в качестве входного ИР сервиса — ИР для хранения отчета о прогоне множества тестов.
  4. Запустить сервис с решателем "Тестировщик агентов".
  5. Просмотреть (запустив сервис с решателем "Просмотрщик инфоресурсов") сформированный им отчет в выходном ИР.

Примечания.
  1. Шаги 1-3 выполняются однократно для тестируемого агента. Шаги 4 и 5 повторяются при каждом обновлении тестируемого агента либо множества его тестов.
  2. Текущая версия Тестировщика имеет ограничение: если тестируемый агент должен вносить изменения в хранимые ИР, то перед повторением шагов 4-5 надо позаботиться о "возвращении" в исходное состояние тех ИР, ссылки на которые порождены под вершиной «изменяемые инфоресурсы», поскольку в процессе предыдущего процесса тестирования агент внес в них изменение.