Соединение с тестовым скриптом

В этом рабочем процессе вы соединяете требование с MATLAB® скрипт с помощью Исходящего Редактора Ссылок и API. Состояние верификации в Редакторе Требований отражает результаты испытаний. Эти рисунки следуют за рабочим процессом для включения внешних результатов испытаний в состоянии верификации требования. Для получения дополнительной информации смотрите, Включают Результаты Внешних Источников в Состояние Верификации.

Соединение с тестовым скриптом Используя исходящий редактор ссылок

Создайте набор требования под названием counter_req.slreqx в Редакторе Требований и сохраняют его в перезаписываемом месте. Этот набор требования имеет дочерние требования, которые имеют идентификаторы требования и описания. Для получения дополнительной информации о том, как создать наборы требования, смотрите работу с Требованиями в Редакторе Simulink.

У вас есть скрипт MATLAB по имени runmytests.m это запускает тест для Counter класс в Counter.m. Тестовый скрипт содержит пользовательские методы, которые пишут результатам формат TAP в файл с именем results.tap. Примите, что вы запустили тест, и он произвел results.tap файл, который содержит результаты теста. Вы хотите соединить результаты теста к требованию в counter_req.slreqx. Выполните эти шаги, чтобы создать и просмотреть состояние верификации с тестом под названием counterStartsAtZero в runmytests.m скрипт:

Создайте регистр тип ссылки

Откройте файл шаблона в matlabroot/toolbox/slrequirements/linktype_examples/linktype_TEMPLATE.m. Выполните эти шаги:

  1. Создайте новый файл MATLAB.

  2. Скопируйте содержимое linktype_TEMPLATE в новый файл. Сохраните файл как linktype_mymscripttap.m.

  3. В linktype_mymscripttap.m

    1. Замените имя функции linktype_TEMPLATE с linktype_mymscripttap.m.

    2. Установите linkType.Label как 'MScript TAP Results'.

    3. Установите linkType.Extensions как {'.M'}.

    4. Не прокомментируйте команду для GetResultFcn для того, чтобы использовать его в linktype_mymscripttap и войдите:

       linktype.GetResultFcn = @GetResultFcn;
       .........
       function result = GetResultFcn(link)
          testID = link.destination.id;
          testFile = link.destination.artifact;
          resultFile = getResultFile(testFile);
          
          if ~isempty(resultFile) && isfile(resultFile)
              tapService = slreq.verification.services.TAP();
              result = tapService.getResult(testID, resultFile);
          else
              result.status = slreq.verification.Status.Unknown;
          end
          
       end
       
       function resultfile = getResultFile(testFile)
          resultMap = ["runmytests.m", "results.tap";...
                       "othertests.m", "results2.tap"];
          resultfile = resultMap(resultMap(:,1) == testFile,2);
       end
      GetResultFcn использует служебный slreq.verification.services.TAP интерпретировать файлы результата для верификации. Смотрите slreq.verification.services.TAP для получения дополнительной информации. Для получения дополнительной информации о GetResultFcn, смотрите Типы Ссылки и Ссылки.

  4. Сохраните linktype_mymscripttap.m.

  5. Укажите тип ссылки. В командной строке, введите:

    rmi register linktype_mymscripttap

    Примечание

    Если команда возвращает предупреждение, то необходимо не указать файл и следовать за шагом 5 снова. Не укажите файл путем ввода:

    rmi unregister linktype_mymscripttap

Создайте ссылку

Выполните эти шаги, чтобы добавить ссылку вручную в Исходящем Редакторе Ссылок:

  1. Откройте редактор требований и в counter_req.slreqx набор требований, щелкните правой кнопкой по дочернему требованию 1.1 и выберите Open Outgoing Links dialog.

  2. В диалоговом окне Outgoing Links Editor, во вкладке Requirements, нажимают New.

  3. Введите эти детали, чтобы установить ссылку:

    • Описание: runmytestscounterStartsAtZero

    • Тип документа: MScript TAP Results

    • Документ: runmytests.m

    • Местоположение : counterStartsAtZero

  4. Нажмите OK. Ссылка подсвечена в разделе Links Редактора Требований.

Просмотрите состояние верификации

Обновите состояние верификации в Редакторе Требований. Нажмите Refresh, чтобы видеть состояние верификации для требований в Редакторе Требований. Это показывает состояние верификации для целого набора требования, который передал или перестал работать.

Требования для counterStartsAtZero полностью проверяются. Здесь, состояние верификации показывает, что из трех тестов, один тест передал.

Соединение с тестовым скриптом Используя API

Создайте набор требования под названием counter_req.slreqx в Редакторе Требований и сохраняют его в перезаписываемом месте. Этот набор требования имеет дочерние требования, которые имеют идентификаторы требования и описания. Для получения дополнительной информации о том, как создать наборы требования, смотрите работу с Требованиями в Редакторе Simulink.

У вас есть скрипт MATLAB по имени runmytests.m это запускает тест для Counter класс в Counter.m. Тестовый скрипт содержит пользовательские методы, которые написали результаты в формате TAP в файл с именем results.tap. Примите, что вы запустили тест, и он произвел results.tap файл, который содержит результаты теста. Вы хотите соединить результаты теста к требованию в counter_req.slreqx. Выполните эти шаги, чтобы создать и просмотреть состояние верификации с тестом под названием counterStartsAtZero в runmytests.m скрипт:

Создайте и укажите тип ссылки

Откройте файл шаблона в matlabroot/toolbox/slrequirements/linktype_examples/linktype_TEMPLATE.m. Выполните эти шаги:

  1. Создайте новый файл MATLAB.

  2. Скопируйте содержимое linktype_TEMPLATE в новый файл. Сохраните файл как linktype_mymscripttap.m.

  3. В linktype_mymscripttap.m:

    1. Замените имя функции linktype_TEMPLATE с linktype_mymscripttap.m.

    2. Установите linkType.Label как 'MScript TAP Results'.

    3. Установите linkType.Extensions как {'.M'}.

    4. Не прокомментируйте команду для GetResultFcn для того, чтобы использовать его в linktype_mymscripttap и войдите:

       linktype.GetResultFcn = @GetResultFcn;
       .........
       function result = GetResultFcn(link)
          testID = link.destination.id;
          testFile = link.destination.artifact;
          resultFile = getResultFile(testFile);
          
          if ~isempty(resultFile) && isfile(resultFile)
              tapService = slreq.verification.services.TAP();
              result = tapService.getResult(testID, resultFile);
          else
              result.status = slreq.verification.Status.Unknown;
          end
          
       end
       
       function resultfile = getResultFile(testFile)
          resultMap = ["runmytests.m", "results.tap";...
                       "othertests.m", "results2.tap"];
          resultfile = resultMap(resultMap(:,1) == testFile,2);
       end
      GetResultFcn использует служебный slreq.verification.services.TAP интерпретировать файлы результата для верификации. Смотрите slreq.verification.services.TAP для получения дополнительной информации. Для получения дополнительной информации о GetResultFcn, смотрите Типы Ссылки и Ссылки.

  4. Сохраните linktype_mymscripttap.m.

  5. Укажите тип ссылки. В командной строке, введите:

    rmi register linktype_mymscripttap

    Примечание

    Если команда возвращает предупреждение, то необходимо не указать файл и следовать за шагом 5 снова. Не укажите файл путем ввода:

    rmi unregister linktype_mymscripttap

Создайте ссылку

Выполните эти шаги, чтобы создать ссылку:

  1. Из командной строки MATLAB, введите:

    externalSource.id = 'counterStartsAtZero';
    externalSource.artifact = 'runmytests.m';
    externalSource.domain = 'linktype_mymscripttap';

  2. Найдите требование связанным со ссылкой путем ввода:

    requirement = reqSet.find('Type', 'Requirement', 'SID', 2);

  3. Создайте ссылку путем ввода:

    link = slreq.createLink(requirement, externalSource);
    Это создает ссылку как тест counterStartsAtZero для требования SID. В Редакторе Требований ссылка появляется в разделе Links> Confirmed By.

Просмотрите состояние верификации

Обновите состояние верификации. В командной строке MATLAB введите:

reqSet.updateVerificationStatus
Выберите состояние верификации для требования путем ввода:
status = reqSet.getVerificationStatus
Это показывает, какое из требований в наборе требований передало или перестало работать. Нажмите на кнопку Refresh, чтобы видеть состояние верификации для требований в Редакторе Требований.

Требования для counterStartsAtZero полностью проверяются. Здесь, состояние верификации показывает, что из трех тестов, один тест передал.

Интеграция результатов случая модульного теста MATLAB

Можно также интегрировать результаты случая Модульного теста MATLAB путем соединения с тестовым скриптом. Тест запущен с индивидуально настраиваемым исполнителем тестов с помощью плагина XML, который производит JUnit выход. XMLPlugin класс создает плагин, который пишет результаты испытаний в XML-файл. Для получения дополнительной информации смотрите matlab.unittest.plugins.XMLPlugin.producingJUnitFormat.

Можно указать область и создать ссылки таким же образом как с тестовым скриптом. Состояние верификации для набора требований показывают в Simulink® Редактор Requirements™.

Похожие темы