exponenta event banner

Тестовые модели с использованием Simulink-тестов на основе MATLAB

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

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

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

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

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

sltest.TestCase

Класс для наследования

loadSystem

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

simulate

Моделирование модели

assumeSignalsMatch

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

assertSignalsMatch

Утверждение двух наборов данных эквивалентными

fatalAssertSignalsMatch

Неустранимое утверждение двух наборов данных эквивалентно

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 с диспетчером тестов

sltest.plugins.ToTestManagerLog

Включить запись текстовых выходных данных в панель «Регистрируемые сигналы» диспетчера тестов

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 функция. При запуске теста в Диспетчере тестов выполняется загрузка модели с именем 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> является'myTest/testOne'.

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

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

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

    1. Щелкните Открыть (Open) > Открыть тест Simulink на основе MATLAB (.m) и выберите файл теста. Файл теста загружается, а его иерархия тестов отображается на панели «Обозреватель тестов». Если выбрать тестовый файл, в диспетчере тестов появятся области «Требования» и «Содержимое тестового файла».

    2. Добавьте требования, развернув раздел «Требования», нажав кнопку «Добавить», чтобы открыть редактор исходящих ссылок. Сведения о добавлении требований см. в разделе Ссылка на требования.

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

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

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

    1. Нажмите кнопку Run (Выполнить), чтобы запустить тест.

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

    3. Чтобы просмотреть результаты покрытия, на панели Результаты и артефакты выберите элемент Результаты и разверните раздел Агрегированное покрытие. Для получения дополнительной информации см. раздел Сбор данных о покрытии в тестах.

    4. При необходимости создайте отчет о результатах тестирования. См. раздел Создание отчетов о результатах испытаний.

Кроме того, вместо добавления покрытия (шаг 4) и выполнения теста (шаг 8) в диспетчере тестирования можно использовать эти команды в командной строке MATLAB для добавления покрытия, запуска теста и передачи результатов в диспетчер тестирования. Затем при открытии диспетчера тестирования отображаются результаты тестирования.

suite = testsuite('myTests');
runner = testrunner('textoutput');
runner.addModelCoverage(...
   "CollectMetrics",["MCDC","Condition"]);
runner.addSimulinkTestResults("ExportToFile",...
   "testmgr_results.mldatx");
runner.run(suite);

Ссылка на требования из тестового файла Simulink на основе MATLAB

Примечание

Для включения ссылок на требования необходимо иметь 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 если создается связь между параметризованным тестом и требованием, связь связывается со всеми версиями этого теста. Если в Диспетчере тестов создается связь между версией параметризованного теста и требованием, связь связывается со всеми версиями этого теста.

Ограничения тестов на основе MATLAB-

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

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

  • Параллельное выполнение тестов.

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

  • Тестирование тегов и описаний.

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

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

См. также

| | | |

Связанные темы