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

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

Он использует MATLAB unit test-class tCruiseControlAlgorifier.m, чтобы предоставить входные команды через Controller Area Network (CAN) Simulink™ модели алгоритма управления круиз-контроля, чтобы запустить функциональное поведение алгоритма, а затем получает обратную связь от модели через CAN и подтверждает ожидаемое Он также генерирует отчет PDF о результатах тестирования, который может использоваться для анализа. Дополнительные сведения о том, как записать класс тестирования, см. в файле tCruiseControlAlgorithmVerifier.m. Диалоговое окно в этом классе помогает вам понять метод настройки тестового класса и то, что делает каждый отдельный тест.

Этот пример использует MathWorks™ Virtual Каналов CAN для связи с алгоритмом.

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

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

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

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

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

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

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 можно наблюдать две вещи:

Круговая диаграмма общего результата и результата

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

Сводная информация об отказе

В сводных данных отказов показано, какой тест не прошел и по какой причине.

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