Тест Simulink ® на основе MATLAB ® определяется в коде MATLAB (.m), который вы создаете в MATLAB, а затем открываете, запускаете и просматриваете результаты в диспетчере тестов. Тестовый файл является файлом определения класса, который наследует от sltest.TestCase. Наследование позволяет открыть тестовый файл в диспетчере тестов. При открытии тестового файла MATLAB в диспетчере тестов он отображается и ведет себя так же, как и тест, созданный в диспетчере тестов, хотя и с некоторыми ограниченными функциональными возможностями (см. Ограничения тестов на основе MATLAB-). Помимо использования теста MATLAB в диспетчере тестов, его можно использовать в командной строке, как и любой другой файл модульного теста.
Поскольку эти тестовые файлы являются текстовыми (.m) файлы, можно редактировать, сравнивать и объединять с другими .m тестовые файлы и связь из файла с требованиями. Напротив, тестовые файлы, созданные в диспетчере тестов или с помощью API Simulink Test™, сохраняются как двоичные файлы MLDATX.
sltest.TestCase класс и его методы работают специально с тестами MATLAB. Эти методы можно использовать в тестовых файлах и в командной строке, за исключением sltest.TestCase.forInteractiveUse, которая может использоваться только в командной строке. В дополнение к этим методам можно использовать matlab.unittest.TestCase методы с тестами MATLAB.
Класс для наследования | |
Модель нагрузок | |
Моделирование модели | |
Предположим, что два набора данных эквивалентны | |
Утверждение двух наборов данных эквивалентными | |
Неустранимое утверждение двух наборов данных эквивалентно | |
Проверка эквивалентности двух наборов данных | |
Создать тестовый пример для использования в командной строке | |
| Создать временную папку, которая удаляется, когда тестовый случай выходит из области действия | |
createSimulationInput | Создает Simulink.SimulationInput или sltest.harness.SimulationInput объект. |
sltest.harness.SimulationInput создает объект, который можно использовать для задания изменений, внесенных в тестовый электрический жгут во время моделирования. Помимо использования этого класса для тестов Simulink на основе MATLAB, его можно использовать в других кодах MATLAB.
Эти методы matlab.unittest.TestRunner относится конкретно к тестам Simulink на базе MATLAB.
matlab.unittest.TestRunner.addModelCoverage - включает сбор покрытия модели с помощью тестового питателя.
matlab.unittest.TestRunner.addSimulinkTestResults — передает результаты теста в Simulink Test Manager.
Они sltest.plugins классы обеспечивают функциональные возможности для тестов на основе MATLAB. В дополнение к этим методам можно использовать другие sltest.plugins классы с этими тестами. Плагины могут быть присоединены к matlab.unittest.TestRunner для включения функциональных возможностей при выполнении sltest.TestCase тест.
Включение интеграции моделирования и результатов тестирования MATLAB с диспетчером тестов | |
Включить запись текстовых выходных данных в панель «Регистрируемые сигналы» диспетчера тестов | |
Включить охват модели сбора данных |
Чтобы создать базовый тест MATLAB:
Создание кода MATLAB (.m) файл, определяющий тестовые случаи. Редактор MATLAB можно запустить из командной строки или из диспетчера тестов с помощью команды New > MATLAB-Based Simulink Test (.m).
См. раздел Тесты единиц на основе классов авторов в MATLAB. Единственное отличие тестов MATLAB состоит в том, что класс должен наследовать от sltest.TestCase, вместо от matlab.unittest.TestCase.
Этот образец тестового файла MATLAB включает один тест, который определен в testOne функция. При запуске теста в Диспетчере тестов выполняется загрузка модели с именем sltestMATLABBasedTestExample. Затем устанавливается значение gain2_var и моделирует модель. Наконец, тест сравнивает выходные данные моделирования модели с файлом MAT базовых данных.
classdef myTest < sltest.TestCase
methods (Test)
function testOne(testCase)
testCase.loadSystem...
('sltestMATLABBasedTestExample');
evalin('base','gain2_var = 2.01;');
simOut = testCase.simulate...
('sltestMATLABBasedTestExample');
testCase.verifySignalsMathc(simOut,'baselineOne.mat',...
'AbsTol',0.015);
end
end
end
При использовании тестового электрического жгута замените simOut строка в вышеуказанном тестовом файле MATLAB с
simOut = testCase.simulate('sltestMATLABBasedTestExample',...
WithHarness','sltestMATLABBasedTestExample_harness1');simOut сin = testCase.createSimulationInput('sltestMATLABBasedTestExample',...
WithHarness','sltestMATLABBasedTestExample_harness1');
in.setModelParameter("StopTime","10")
simOut = testCase.simulate(in);
Если MAT-файл базовых данных еще не существует или его необходимо обновить, в командной строке MATLAB используйте:
runtests(<test>,'GenerateBaselines',true)Для файла образца: <test> является'myTest/testOne'.
При создании опорных структур начинается выполнение теста. Он приостанавливается, чтобы открыть отчет инспектора данных моделирования, и в командной строке MATLAB появляется запрос на просмотр данных опорной структуры. При утверждении данных данные опорной структуры сохраняются в новом MAT-файле или обновляются в существующем MAT-файле. Затем тест продолжает выполняться, но завершается неуспешно, поскольку новые или обновленные базовые данные не включены в текущий прогон. Повторно запустите тест с помощью runtests для использования новой или обновленной опорной структуры и получения результата прохождения. Вы также можете повторно запустить тест, используя желтый rerun гиперссылка в командной строке.
При наличии лицензии Simulink Coverage™ можно включить в тест сбор покрытия. Пример и информацию о сборе данных о покрытии см. в разделе Сбор данных о покрытии с помощью Simulink-тестов на основе MATLAB.
При наличии лицензии Simulink Requirements™ можно добавить требования. Откройте диспетчер тестов и обновите тестовый файл.
Щелкните Открыть (Open) > Открыть тест Simulink на основе MATLAB (.m) и выберите файл теста. Файл теста загружается, а его иерархия тестов отображается на панели «Обозреватель тестов». Если выбрать тестовый файл, в диспетчере тестов появятся области «Требования» и «Содержимое тестового файла».
Добавьте требования, развернув раздел «Требования», нажав кнопку «Добавить», чтобы открыть редактор исходящих ссылок. Сведения о добавлении требований см. в разделе Ссылка на требования.
Для обновления кода MATLAB (.m) тестовый файл из диспетчера тестов, нажмите кнопку Open test в ссылке MATLAB Editor.
После редактирования .m и сохраните изменения, либо после добавления покрытия или требований вернитесь в диспетчер тестов и нажмите кнопку синхронизации
рядом с тестовым файлом на панели «Обозреватель тестов».
Запустите тест, просмотрите результаты и создайте отчет о результатах теста.
Нажмите кнопку Run (Выполнить), чтобы запустить тест.
Чтобы просмотреть результаты, разверните строки на панели Результаты и артефакты.
Чтобы просмотреть результаты покрытия, на панели Результаты и артефакты выберите элемент Результаты и разверните раздел Агрегированное покрытие. Для получения дополнительной информации см. раздел Сбор данных о покрытии в тестах.
При необходимости создайте отчет о результатах тестирования. См. раздел Создание отчетов о результатах испытаний.
Кроме того, вместо добавления покрытия (шаг 4) и выполнения теста (шаг 8) в диспетчере тестирования можно использовать эти команды в командной строке MATLAB для добавления покрытия, запуска теста и передачи результатов в диспетчер тестирования. Затем при открытии диспетчера тестирования отображаются результаты тестирования.
suite = testsuite('myTests');
runner = testrunner('textoutput');
runner.addModelCoverage(...
"CollectMetrics",["MCDC","Condition"]);
runner.addSimulinkTestResults("ExportToFile",...
"testmgr_results.mldatx");
runner.run(suite);
Примечание
Для включения ссылок на требования необходимо иметь Simulink Requirements.
Сведения о добавлении ссылок на требования из файла, редактируемого в редакторе MATLAB, см. в разделе Отслеживание требований для строк кода MATLAB (Simulink Requirements). Для тестовых файлов MATLAB ссылки добавляются с помощью того же процесса. Однако текст, выбранный в коде MATLAB (.m) определяет тип ссылки и тест, к которому она добавляется. При выборе:
Строка определения класса (например, classdef myClass < sltest.TestCase) - Добавляет Verified By ссылка для всего тестового файла
Текст внутри тестовой функции - добавляет Verified By ссылка для этой функции
Текст для нескольких тестовых функций - добавление Verified By ссылка для первой функции в выделенной области
Любой другой выделенный текст - добавляет Related To ссылка для выбора
После добавления ссылок на требования можно просмотреть статус проверки в редакторе требований, щелкнув Показать > Статус проверки. Обновление статуса Verified By , щелкните правой кнопкой мыши на требовании и выберите Run Tests. См. раздел Проверка состояния проверки требований (требования к Simulink).
Ссылки, создаваемые в коде MATLAB (.m) появится в разделе «Требования» Диспетчера тестирования. Ссылка на требования из в Диспетчере тестирования работает так же, как описано в разделе Ссылка на требования.
При открытии редактора требований и щелчке по входящей ссылке для теста MATLAB при наличии лицензии Simulink Test открывается менеджер тестов, который переходит к соответствующему тесту. Если лицензия недоступна, открывается редактор MATLAB, который переходит к строке кода, связанной с этим требованием.
Для параметризованного теста Simulink Requirements не поддерживает связывание с отдельными параметризованными версиями теста. В вашем .m если создается связь между параметризованным тестом и требованием, связь связывается со всеми версиями этого теста. Если в Диспетчере тестов создается связь между версией параметризованного теста и требованием, связь связывается со всеми версиями этого теста.
Тесты Simulink на базе MATLAB не поддерживают:
Типы тестов, отличные от базовых.
Параллельное выполнение тестов.
Выполнение тестов в нескольких выпусках.
Тестирование тегов и описаний.
Обратные вызовы. (Однако, хотя обратные вызовы не поддерживаются в диспетчере тестов для тестов на основе MATLAB, можно использовать TestClassSetup и TestMethodSetup, или приспособления в вашем .m для достижения аналогичных функциональных возможностей. См. раздел Настройка записи и разбиение кода с использованием классов.)
Логические и временные оценки.
matlab.unittest.TestCase | matlab.unittest.TestRunner | matlab.unittest.TestRunner.addModelCoverage | matlab.unittest.TestRunner.addSimulinkTestResults | sltest.TestCase