В этом рабочем процессе вы связываете требование с 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
. Выполните следующие действия:
Создайте новый файл MATLAB.
Скопируйте содержимое linktype_TEMPLATE
в новый файл. Сохраните файл следующим linktype_mymscripttap.m
.
В linktype_mymscripttap.m
Замените имя функции linktype_TEMPLATE
с linktype_mymscripttap.m
.
Задайте linkType.Label
как 'MScript TAP Results'
.
Задайте linkType.Extensions
как {'.M'}
.
Раскомментируйте команду для 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
, см. «Ссылки и типы ссылок».
Сохраните linktype_mymscripttap.m
.
Зарегистрируйте тип ссылки. В командной строке введите:
rmi register linktype_mymscripttap
Примечание
Если команда возвращает предупреждение, необходимо отменить регистрацию файла и повторить шаг 5. Отменить регистрацию файла путем ввода:
rmi unregister linktype_mymscripttap
Выполните следующие действия, чтобы добавить ссылку вручную в Редактор исходящих ссылок:
Откройте Редактор требований и, в counter_req.slreqx
установите требования, щелкните правой кнопкой мыши дочернее требование 1.1
и выберите Open Outgoing Links dialog.
В диалоговом окне Редактор исходящих ссылок, на вкладке Requirements, нажмите New.
Введите следующие данные для установления ссылки:
Описание: runmytestscounterStartsAtZero
Тип документа: MScript TAP Results
Документ: runmytests.m
Расположение: counterStartsAtZero
Нажмите OK. Ссылка выделена в Links разделе редактора требований.
Обновите статус верификации в редакторе требований. Щелкните Refresh для просмотра статуса верификации требований в редакторе требований. Это показывает состояние верификации для всего набора требований, который прошел или не прошел проверку.
Требования к counterStartsAtZero
полностью проверены. Здесь статус верификации показывает, что из трех тестов прошел один тест.
Создайте набор требований с именем 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
. Выполните следующие действия:
Создайте новый файл MATLAB.
Скопируйте содержимое linktype_TEMPLATE
в новый файл. Сохраните файл следующим linktype_mymscripttap.m
.
В linktype_mymscripttap.m
:
Замените имя функции linktype_TEMPLATE
с linktype_mymscripttap.m
.
Задайте linkType.Label
как 'MScript TAP Results'
.
Задайте linkType.Extensions
как {'.M'}
.
Раскомментируйте команду для 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
, см. «Ссылки и типы ссылок».
Сохраните linktype_mymscripttap.m
.
Зарегистрируйте тип ссылки. В командной строке введите:
rmi register linktype_mymscripttap
Примечание
Если команда возвращает предупреждение, необходимо отменить регистрацию файла и повторить шаг 5. Отменить регистрацию файла путем ввода:
rmi unregister linktype_mymscripttap
Выполните следующие действия, чтобы создать ссылку:
В командной строке MATLAB введите:
externalSource.id = 'counterStartsAtZero'; externalSource.artifact = 'runmytests.m'; externalSource.domain = 'linktype_mymscripttap';
Найти требование, относящееся к ссылке, путем ввода:
requirement = reqSet.find('Type', 'Requirement', 'SID', 2);
Создайте ссылку путем ввода:
link = slreq.createLink(requirement, externalSource);
counterStartsAtZero
для требуемого SID
. В редакторе требований ссылка появится в разделе Links > Confirmed By.
Обновите состояние верификации. В командной строке MATLAB введите:
reqSet.updateVerificationStatus
status = reqSet.getVerificationStatus
Требования к counterStartsAtZero
полностью проверены. Здесь статус верификации показывает, что из трех тестов прошел один тест.
Можно также интегрировать результаты теста MATLAB Unit Test путем ссылки на тестовый скрипт. Тест запускается с настроенным исполнителем тестов с помощью XML-плагина, который производит выход JUnit. The XMLPlugin
класс создает плагин, который записывает результаты тестирования в XML- файл. Для получения дополнительной информации смотрите matlab.unittest.plugins.XMLPlugin.producingJUnitFormat
.
Можно зарегистрировать область и создать ссылки так же, как и с тестовым скриптом. Статус верификации для набора требований показан в Simulink® Requirements™ Editor.