Экспериментальные модели с использованием основанных на MATLAB тестов Simulink

MATLAB®-основанный на Simulink® тест определен в коде MATLAB (.m) файл, который вы создаете в MATLAB, а затем открываете, запускаете и просматриваете результаты в диспетчере тестов. Тестовый файл является файлом определения класса, который наследует от sltest.TestCase. Наследование позволяет вам открыть тестовый файл в Диспетчере тестов. Когда вы открываете тестовый файл MATLAB в Test Manager, он появляется и ведет себя так же, как тест, созданный в Test Manager, хотя и с некоторой ограниченной функциональностью (см. Ограничения тестов, основанных на MATLAB-). В дополнение к использованию теста MATLAB в Test Manager можно использовать его в командной строке, как и любой другой модульный тестовый файл.

Потому что эти тестовые файлы являются текстом (.m) файлы, можно редактировать, сравнивать и объединять с другими .m тестовые файлы и ссылка из файла на требования. Напротив, тестовые файлы, созданные в Test Manager или при помощи Simulink Test™ API, сохраняются как двоичные файлы MLDATX.

Классы и методы

Класс и методы TestCase

The sltest.TestCase класс и его методы работают специально с тестами MATLAB. Можно использовать эти методы в тестовых файлах и в командной строке, кроме sltest.TestCase.forInteractiveUse, который может использоваться только в командной строке. В дополнение к этим методам можно использовать matlab.unittest.TestCase методы с тестами MATLAB.

sltest.TestCase

Класс, от которого нужно наследовать

loadSystem

Модель нагрузок

simulate

Моделируйте модель

assumeSignalsMatch

Предположим, что два набора данных эквивалентны

assertSignalsMatch

Предположим, что два набора данных эквивалентны

fatalAssertSignalsMatch

Два набора данных Fatal assert эквивалентны

verifySignalsMatch

Проверьте, что два набора данных эквивалентны

sltest.TestCase.forInteractiveUse

Создайте тест для использования в командной строке

createTemporaryFolder

Создайте временную папку, которая удаляется, когда тест выходит из возможностей
createSimulationInputСоздает Simulink.SimulationInput или sltest.harness.SimulationInput объект.

Тестовая обвязка

sltest.harness.SimulationInput создает объект, который можно использовать, чтобы задать изменения, примененные к тестовой обвязке во время симуляции. В дополнение к использованию этого класса для тестов Simulink на основе MATLAB, вы можете использовать его в другом коде MATLAB.

Исполнители тестов

Эти методы matlab.unittest.TestRunner применяется специально к тестам Simulink на основе MATLAB.

Классы плагинов

Эти sltest.plugins классы включают функциональность для тестов на основе MATLAB. В дополнение к этим методам можно использовать другие sltest.plugins классы с этими тестами. Плагины могут быть присоединены к matlab.unittest.TestRunner чтобы включить функциональность при запуске sltest.TestCase тест.

sltest.plugins.MATLABTestCaseIntegrationPlugin

Включите интеграцию симуляции теста MATLAB и результатов тестирования с Test Manager

sltest.plugins.ToTestManagerLog

Включите запись текста, выводимого в результаты Диспетчера тестов Logged Signals панели Диспетчера тестов

sltest.plugins.ModelCoveragePlugin

Включите сбор покрытия модели

Создание базовых тестов Simulink на основе MATLAB

Чтобы создать регрессионный тест MATLAB:

  1. Создайте код 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
    
  2. Если вы используете тестовую обвязку, замените 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);
    

  3. Если MAT-файла базовых данных еще не существует или нужно его обновить, в командной строке MATLAB используйте:

    runtests(<test>,'GenerateBaselines',true)

    Для примера файла, <test>is ' 'myTest/testOne'.

    Когда вы генерируете базовые линии, тест начинает запускаться. Он останавливается, чтобы открыть отчет Данных моделирования Inspector, и вам предлагается в командной строке MATLAB просмотреть базовые данные. При утверждении данных он сохраняет базовые данные в новом MAT-файле или обновляет существующий MAT-файл. Затем тест продолжает запускаться, но завершается неуспешно, поскольку новые или обновленные базовые данные не включены в текущий запуск. Повторите тест с помощью runtests команда, чтобы использовать новую или обновленную базовую линию и получить проходной результат. Можно также перезапустить тест с помощью желтого rerun гиперссылка в командной строке.

  4. При необходимости, если у вас есть лицензия Simulink Coverage™, вы можете включить набор покрытия в свой тест. См. «Сбор покрытия с использованием тестов Simulink на основе MATLAB» для примера и информации о наборе покрытия.

  5. При необходимости, если у вас есть лицензия Simulink Requirements™, можно добавить требования. Откройте Test Manager и обновите тестовый файл.

    1. Нажмите Open > Open MATLAB-Based Simulink Test (.m) и выберите тестовый файл. Тестовый файл загружается, а его иерархия отображается на панели Test Browser. Если вы выбираете тестовый файл, панели Requirements и Test File Content появляются в Диспетчере тестов.

    2. Добавьте требования путем расширения раздела Requirements нажав Add, чтобы открыть Редактор исходящих ссылок. Информацию о добавлении требований см. в разделе Ссылка на требования.

  6. Для обновления кода MATLAB (.m) тестовый файл из Диспетчера тестов, нажмите ссылку Open test in the MATLAB Editor.

  7. После редактирования .m файл и сохраните изменения, или после добавления покрытия или требований вернитесь в Диспетчер тестов и нажмите кнопку синхронизации рядом с тестовым файлом на панели Test Browser.

  8. Запустите тест, просмотрите результаты и создайте отчет о результатах тестирования.

    1. Нажмите Run, чтобы запустить тест.

    2. Чтобы просмотреть результаты, разверните строки на панели Results and Artifacts.

    3. Чтобы просмотреть результаты покрытия, на панели Results and Artifacts выберите элемент Results и разверните раздел Aggregated Coverage. См. «Сбор покрытия в тестах» для получения информации.

    4. Вы можете создать отчет о результатах тестирования. См. «Создание отчетов о результатах тестирования».

Кроме того, вместо добавления покрытия (Шаг 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 Test на основе MATLAB

Примечание

Для включения ссылок требований необходимо иметь 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 тестов

Основанные на MATLAB тесты Simulink не поддерживают:

  • Типы тестов, отличные от базовых тестов.

  • Параллельные тесты.

  • Выполнение тестов в нескольких релизах.

  • Тестовые теги и описания.

  • Коллбэки. (Однако, хотя коллбэки не поддерживаются в диспетчере тестов для тестов на основе MATLAB, можно использовать TestClassSetup и TestMethodSetup, или фиксаторы в вашем .m Файл для достижения аналогичной функциональности. См. Setup записи и отключения с использованием классов».)

  • Логические и временные оценки.

См. также

| | | |

Похожие темы