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

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

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

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

Обзор модели 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 = 
  1x3 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: "/tmp/BR2021bd_1751886_255755/mlx_to_docbook1"
       PrebuiltFixtures: [1x0 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)

Runtests

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

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:
 /tmp/BR2021bd_1751886_255755/mlx_to_docbook1/tp43650a5e/vnt-ex21299704/CruiseControlAlgorithmTestReport.pdf
result = 
  1x3 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   2 Passed, 1 Failed, 0 Incomplete.
   78.3843 seconds testing time.

Проанализируйте доклад PDF

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

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

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

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

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

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