exponenta event banner

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

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

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

В этом примере для связи с алгоритмом используются MathWorks™ виртуальные каналы CAN.

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

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

В блоке Cruise Control Algorithm размещена государственная машина Cruise Control Algorithm, представляющая собой диаграмму Stateflow. Этот алгоритм работает на основе входных данных, полученных от блока виртуальных входов CAN, и настроен на запуск, когда условия ввода достигли определенного условия. Выходами диаграммы Stateflow являются ожидаемая крейсерская скорость транспортного средства и состояние включения алгоритма.

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

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

Создайте набор тестовых классов для запуска. В этом примере единственным тестом в комплекте является tCruireControlTalkVerifier.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

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

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

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

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

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

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