Основанное на классах модульное тестирование автомобильных алгоритмов через CAN

Этот пример показывает вам, как подтвердить выход алгоритма круиз-контроля с помощью Vehicle Network Toolbox™ и MATLAB™ основанная на классах среда модульного тестирования.

Это использует класс модульного теста MATLAB tCruiseControlAlgorithmVerifier.m, чтобы обеспечить входные команды через Сеть области контроллера (CAN) к модели Simulink™ алгоритма круиз-контроля, чтобы инициировать функциональное поведение алгоритма, и затем получает обратную связь от модели до CAN и подтверждает ожидаемое поведение алгоритма. Это также генерирует отчет PDF результатов испытаний, которые могут использоваться для анализа. Для получения дополнительной информации о том, как записать тестовый класс, смотрите tCruiseControlAlgorithmVerifier.m файл. Диалоговое окно в том классе помогает вам изучить метод подготовки тестового класса и что делает каждый отдельный тест.

Этот пример использует Виртуальные каналы CAN MathWorks™, чтобы связаться с алгоритмом.

Обзор модели Simulink

Алгоритм круиз-контроля имеет блок Virtual CAN Inputs, который содержит настройку канала CAN с помощью Блока Configuration CAN и получает сообщение, управлял от тестового класса MATLAB с помощью блока CAN Receive. Это затем использует блок CAN Unpack, чтобы разделить отдельные сигналы от полученного сообщения CAN, которые затем преобразованы в их соответствующие типы данных и переданы к фактическому алгоритму круиз-контроля.

Блочные дома Алгоритма Круиз-контроля Конечный автомат Алгоритма Круиз-контроля, который является диаграммой Stateflow. Этот алгоритм работает на основе входных параметров, полученных от блока Virtual CAN Inputs, и является настройкой, чтобы инициировать, когда входные условия достигли определенного условия. Выходные параметры диаграммы Stateflow являются ожидаемой крейсерской скоростью транспортного средства и состоянием обязательства алгоритма.

Блок Virtual CAN Outputs использует блок CAN Pack, чтобы загрузить отдельные сигналы в одно сообщение CAN, которые затем передаются на шину CAN с помощью блока CAN Transmit. Это сообщение обратной связи используется для верификации в тестовом классе MATLAB.

Создание тестового набора

Создайте набор тестовых классов, чтобы запуститься. В этом примере tCruiseControlAlgorithmVerifier.m является единственным тестом в наборе. Можно добавить дополнительные тесты в том же тестовом наборе. 1xN Тестовые списки массива количество тестов, не количество тестовых классов.

suite = testsuite({'tCruiseControlAlgorithmVerifier'})
suite = 
  1×3 Test array with properties:

    Name
    ProcedureName
    TestClass
    BaseFolder
    Parameterization
    SharedTestFixtures
    Tags

Tests Include:
   0 Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.

Создание исполнителя тестов

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

runner = matlab.unittest.TestRunner.withNoPlugins
runner = 
  TestRunner with properties:

    ArtifactsRootFolder: "C:\Users\sdange\AppData\Local\Temp"
       PrebuiltFixtures: [1×0 matlab.unittest.fixtures.Fixture]

Создание отчета PDF Выход

Setup имя файла PDF, в котором вы хотите, чтобы ваш выход был получен.

pdfFile = 'CruiseControlAlgorithmTestReport.pdf'
pdfFile = 
'CruiseControlAlgorithmTestReport.pdf'

Добавьте плагин создания PDF в своего исполнителя тестов. Во-первых, создайте плагин.

plugin =  matlab.unittest.plugins.TestReportPlugin.producingPDF(pdfFile)
plugin = 
  PDFTestReportPlugin with properties:

     IncludeCommandWindowText: 0
    IncludePassingDiagnostics: 0
                 LoggingLevel: Terse
              PageOrientation: 'portrait'

Сопоставьте этот плагин с исполнителем тестов, чтобы сгенерировать отчет PDF в рабочей директории.

runner.addPlugin(plugin)

Запущение тестов

Запустите тестовый набор с помощью исполнителя тестов.

result = runner.run(suite)
Generating test report. Please wait.
    Preparing content for the test report.
    Adding content to the test report.
    Writing test report to file.
Test report has been saved to:
 \\central-mi\home$\sdange\Documents\MATLAB\Examples\vnt-ex21299704\CruiseControlAlgorithmTestReport.pdf
result = 
  1×3 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   2 Passed, 1 Failed (rerun), 0 Incomplete.
   214.3521 seconds testing time.

Анализирование доклада PDF

Откройте файл PDF, созданный с заданным именем. Настройка по умолчанию создает его в текущей рабочей директории. Существует две вещи наблюдать в отчете PDF:

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

Полный результат утверждает конечный результат на основе того, передали ли все тесты или нет. Круговая диаграмма показывает, сколько тесты передали и привели к сбою из общего количества заданных тестов.

Детали Сводных данных об отказах

Сводные данные отказа показывают, какой тест провалил и по какой причине.

Нажатие на вкладку деталей на правой стороне имени отказа обеспечивает подробную причину отказа, наряду с диагностическим сообщением, которое вы сконфигурировали в тестах.

Для просмотра документации необходимо авторизоваться на сайте