MATLAB®-основанный на Simulink® тест определен в коде MATLAB (.m
) файл, который вы создаете в MATLAB, а затем открываете, запускаете и просматриваете результаты в диспетчере тестов. Тестовый файл является файлом определения класса, который наследует от sltest.TestCase
. Наследование позволяет вам открыть тестовый файл в Диспетчере тестов. Когда вы открываете тестовый файл MATLAB в Test Manager, он появляется и ведет себя так же, как тест, созданный в Test Manager, хотя и с некоторой ограниченной функциональностью (см. Ограничения тестов, основанных на MATLAB-). В дополнение к использованию теста MATLAB в Test Manager можно использовать его в командной строке, как и любой другой модульный тестовый файл.
Потому что эти тестовые файлы являются текстом (.m
) файлы, можно редактировать, сравнивать и объединять с другими .m
тестовые файлы и ссылка из файла на требования. Напротив, тестовые файлы, созданные в Test Manager или при помощи Simulink Test™ API, сохраняются как двоичные файлы MLDATX.
The sltest.TestCase
класс и его методы работают специально с тестами MATLAB. Можно использовать эти методы в тестовых файлах и в командной строке, кроме sltest.TestCase.forInteractiveUse
, который может использоваться только в командной строке. В дополнение к этим методам можно использовать matlab.unittest.TestCase
методы с тестами MATLAB.
Класс, от которого нужно наследовать | |
Модель нагрузок | |
Моделируйте модель | |
Предположим, что два набора данных эквивалентны | |
Предположим, что два набора данных эквивалентны | |
Два набора данных Fatal assert эквивалентны | |
Проверьте, что два набора данных эквивалентны | |
Создайте тест для использования в командной строке | |
Создайте временную папку, которая удаляется, когда тест выходит из возможностей | |
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 и результатов тестирования с Test Manager | |
Включите запись текста, выводимого в результаты Диспетчера тестов Logged Signals панели Диспетчера тестов | |
Включите сбор покрытия модели |
Чтобы создать регрессионный тест MATLAB:
Создайте код MATLAB (.m
) файл, который определяет тесты. Можно запустить Редактор MATLAB из командной строки или из Диспетчера тестов с помощью New > MATLAB-Based Simulink Test (.m).
См. Создание модульных тестов на основе классов в MATLAB. Единственное различие для тестов MATLAB заключается в том, что класс должен унаследовать от sltest.TestCase
, вместо от matlab.unittest.TestCase
.
Этот пример тестового файла MATLAB включает один тест, который определен в testOne
функция. Когда вы запускаете тест в Test Manager, тест загружает модель с именем 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>
is ' 'myTest/testOne'
.
Когда вы генерируете базовые линии, тест начинает запускаться. Он останавливается, чтобы открыть отчет Данных моделирования Inspector, и вам предлагается в командной строке MATLAB просмотреть базовые данные. При утверждении данных он сохраняет базовые данные в новом MAT-файле или обновляет существующий MAT-файл. Затем тест продолжает запускаться, но завершается неуспешно, поскольку новые или обновленные базовые данные не включены в текущий запуск. Повторите тест с помощью runtests
команда, чтобы использовать новую или обновленную базовую линию и получить проходной результат. Можно также перезапустить тест с помощью желтого rerun
гиперссылка в командной строке.
При необходимости, если у вас есть лицензия Simulink Coverage™, вы можете включить набор покрытия в свой тест. См. «Сбор покрытия с использованием тестов Simulink на основе MATLAB» для примера и информации о наборе покрытия.
При необходимости, если у вас есть лицензия Simulink Requirements™, можно добавить требования. Откройте Test Manager и обновите тестовый файл.
Нажмите Open > Open MATLAB-Based Simulink Test (.m) и выберите тестовый файл. Тестовый файл загружается, а его иерархия отображается на панели Test Browser. Если вы выбираете тестовый файл, панели Requirements и Test File Content появляются в Диспетчере тестов.
Добавьте требования путем расширения раздела Requirements нажав Add, чтобы открыть Редактор исходящих ссылок. Информацию о добавлении требований см. в разделе Ссылка на требования.
Для обновления кода MATLAB (.m
) тестовый файл из Диспетчера тестов, нажмите ссылку Open test in the MATLAB Editor.
После редактирования .m
файл и сохраните изменения, или после добавления покрытия или требований вернитесь в Диспетчер тестов и нажмите кнопку синхронизации рядом с тестовым файлом на панели Test Browser.
Запустите тест, просмотрите результаты и создайте отчет о результатах тестирования.
Нажмите Run, чтобы запустить тест.
Чтобы просмотреть результаты, разверните строки на панели Results and Artifacts.
Чтобы просмотреть результаты покрытия, на панели Results and Artifacts выберите элемент Results и разверните раздел Aggregated Coverage. См. «Сбор покрытия в тестах» для получения информации.
Вы можете создать отчет о результатах тестирования. См. «Создание отчетов о результатах тестирования».
Кроме того, вместо добавления покрытия (Шаг 4) и запуска теста (Шаг 8) в Test Manager можно использовать эти команды в командной строке MATLAB, чтобы добавить покрытие, запустить тест и перенести результаты в Test Manager. Затем, когда вы открываете Test Manager, отображаются результаты тестирования.
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
ссылка для выбора
После добавления ссылок требований можно просмотреть статус верификации в редакторе требований, щелкнув Display > Verification Status. Как обновить состояние Verified By
требование, щелкните правой кнопкой мыши по требованию и выберите Run Tests. Смотрите Обзор требований Верификации статуса (Simulink Requirements).
Ссылки, которые вы создаете в коде MATLAB (.m
) файл в Requirements разделе Диспетчера тестов. Связь с требованиями из менеджера тестов работает так же, как описано в Ссылке на требования.
Когда у вас откроется Редактор требований и вы нажмете на входящую ссылку для теста MATLAB, если у вас есть лицензия Simulink Test, Test Manager откроется и перейдет к связанному тесту. Если лицензия недоступна, откроется Редактор MATLAB, который переходит к строке кода, связанной с этим требованием.
Для параметризованного теста Simulink Requirements не поддерживает привязку к отдельным параметризованным версиям теста. В вашем .m
файл, если вы создаете ссылку из параметризованного теста в требование, ссылка связана со всеми версиями этого теста. В Диспетчере тестов, если вы создаете ссылку из версии параметризованного теста в требование, ссылка связана со всеми версиями этого теста.
Основанные на MATLAB тесты Simulink не поддерживают:
Типы тестов, отличные от базовых тестов.
Параллельные тесты.
Выполнение тестов в нескольких релизах.
Тестовые теги и описания.
Коллбэки. (Однако, хотя коллбэки не поддерживаются в диспетчере тестов для тестов на основе MATLAB, можно использовать TestClassSetup
и TestMethodSetup
, или фиксаторы в вашем .m
Файл для достижения аналогичной функциональности. См. Setup записи и отключения с использованием классов».)
Логические и временные оценки.
matlab.unittest.TestCase
| matlab.unittest.TestRunner
| matlab.unittest.TestRunner.addModelCoverage
| matlab.unittest.TestRunner.addSimulinkTestResults
| sltest.TestCase