Тестовые модели Используя MATLAB-Based тесты Simulink

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

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

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

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

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

sltest.TestCase

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

loadSystem

Модель Loads

simulate

Модель симулируется

assumeSignalsMatch

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

assertSignalsMatch

Утверждайте, что два набора данных эквивалентны

fatalAssertSignalsMatch

Критический утверждают, что два набора данных эквивалентны

verifySignalsMatch

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

sltest.TestCase.forInteractiveUse

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

createTemporaryFolder

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

Класс тестовой обвязки

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

Методы исполнителя тестов

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

  • addModelCoverage — включает набор покрытия модели с помощью исполнителя тестов.

  • addSimulinkTestResults — результаты испытаний нажатий менеджеру по Simulink Test.

Сменные классы

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

sltest.plugins.MATLABTestCaseIntegrationPlugin

Позвольте интегрировать тестовую симуляцию MATLAB и результаты испытаний с менеджером по Тесту

sltest.plugins.ToTestManagerLog

Позвольте писать вывод текста, чтобы Протестировать результаты менеджера панель Logged Signals менеджера по Тесту

sltest.plugins.ModelCoveragePlugin

Позвольте собрать покрытие модели

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

Создать базовый тест 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.verifySignalsMatch(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™, можно включать набор покрытия в тест. Смотрите Собирают Покрытие Используя MATLAB-Based Тесты Simulink для примера и информации о наборе покрытия.

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

    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) в менеджере по Тесту, можно использовать эти команды в командной строке MATLAB, чтобы добавить покрытие, запустить тест и продвинуть результаты менеджеру по Тесту. Затем когда вы открываете менеджера по Тесту, результаты испытаний отображены.

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

Соединение с требованиями из файла Simulink Test MATLAB-Based

Примечание

У вас должен быть 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, менеджер по Тесту открывается и переходит к связанному тесту. Если лицензия не доступна, редактор MATLAB открывается и переходит к строке кода, сопоставленной с тем требованием.

Для параметрированного теста Simulink Requirements не поддерживает соединение с параметрированными версиями индивидуума теста. В вашем .m файл, если вы создаете ссылку от параметрированного теста до требования, ссылка, сопоставлен со всеми версиями того теста. В менеджере по Тесту, если вы создаете ссылку из версии параметрированного теста к требованию, ссылка сопоставлена со всеми версиями того теста.

Ограничения MATLAB - базирующиеся Тесты

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

  • Протестируйте типы кроме базовых тестов.

  • Запущение тестов параллельно.

  • Запущение тестов в нескольких релизах.

  • Протестируйте теги и описания.

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

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

Смотрите также

| | | |

Похожие темы