Автоматизируйте тестирование на магистральный маршрут после

В этом примере показано, как оценить функциональность следующего за маршрутом приложения путем определения сценариев на основе требований, автоматизации тестирования компонентов и сгенерированного кода для тех компонентов. Компоненты включают обнаружение маршрута, cочетание датчиков, логику решения и средства управления. Этот пример основывается на Магистральном Маршруте После (Automated Driving Toolbox) пример.

Введение

Магистральная система следования маршрута ведет транспортное средство, чтобы переместиться в отмеченном маршруте. Это также обеспечивает скорость набора или безопасное расстояние от предыдущего транспортного средства в том же маршруте. Система обычно включает обнаружение маршрута, cочетание датчиков, логику решения, и управляет компонентами. Симуляция уровня системы является общим методом для оценки функциональности интегрированных компонентов. Моделирование конфигурировано к сценариям тестирования на основе системных требований. Автоматически выполнение этих симуляций позволяет регрессионному тестированию проверить функциональность уровня системы.

Магистральный Маршрут После (Automated Driving Toolbox), который показал пример, как симулировать системную модель для следования маршрута. В этом примере показано, как автоматизировать тестирование что модель против нескольких сценариев с помощью Simulink Test™. Сценарии основаны на требованиях уровня системы. В этом примере вы будете:

  1. Требования анализа: требования описывают условия испытания уровня системы. Сценарии тестирования симуляции создаются, чтобы представлять эти условия.

  2. Рассмотрите тестовую модель: Рассмотрите тестовую модель следования маршрута уровня системы, которая содержит метрические оценки. Эти метрические оценки интегрируют тестовую модель с Simulink Test для автоматизированного тестирования.

  3. Отключите визуализацию во время выполнения: визуализация Во время выполнения отключена, чтобы уменьшать время выполнения для автоматизированного тестирования.

  4. Автоматизируйте тестирование: менеджер по тесту сконфигурирован, чтобы симулировать каждый сценарий тестирования, оценить критерии успеха и результаты отчета. Результаты исследованы динамически в менеджере по тесту и экспортированы в PDF для внешних рецензентов.

  5. Автоматизируйте тестирование со сгенерированным кодом: обнаружение маршрута, cочетание датчиков, логика решения и компоненты средств управления сконфигурированы, чтобы сгенерировать Код С++. Автоматизированное тестирование запущено на сгенерированном коде, чтобы проверить ожидаемое поведение.

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

Тестирование системной модели требует фотореалистической среды симуляции. В этом примере вы включаете симуляцию уровня системы посредством интеграции с Нереальным Engine от Epic Games®. 3D среда симуляции требует Windows® 64-битная платформа.

if ~ispc
    error("The 3D simulation environment requires a Windows 64-bit platform");
end

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

rng(0);

Рассмотрите требования

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

Чтобы исследовать тестовые требования и тестовую модель, откройте рабочую копию файлов проекта в качестве примера. MATLAB копирует файлы в папку в качестве примера так, чтобы можно было отредактировать их. TestAutomation папка содержит файлы, который включает автоматизировать тестирование.

addpath(fullfile(matlabroot, 'toolbox', 'driving', 'drivingdemos'));
helperDrivingProjectSetup('HighwayLaneFollowing.zip', 'workDir', pwd);
open('HighwayLaneFollowingTestRequirements.slreqx')

В качестве альтернативы можно также открыть файл от вкладки Requirements менеджера по Требованиям приложение в Simulink.

Каждая строка в этом файле задает требования в текстовых и графических форматах для тестирования следующей за маршрутом системы для сценария тестирования. Сценарии с префиксом scenario_LF_ позволяют вам протестировать обнаружение маршрута и следующие за маршрутом алгоритмы без преграды другими транспортными средствами. Сценарии с префиксом scenario_LFACC_ позволяют вам протестировать обнаружение маршрута, следование маршрута и поведение ACC с другими транспортными средствами на дороге.

  1. scenario_LF_01_Straight_RightLane — Прямой дорожный сценарий с автомобилем, оборудованным датчиком в правильном маршруте.

  2. scenario_LF_02_Straight_LeftLane — Прямой дорожный сценарий с автомобилем, оборудованным датчиком в левом маршруте.

  3. scenario_LF_03_Curve_LeftLane — Кривой дорожный сценарий с автомобилем, оборудованным датчиком в левом маршруте.

  4. scenario_LF_04_Curve_RightLane — Кривой дорожный сценарий с автомобилем, оборудованным датчиком в правильном маршруте.

  5. scenario_LFACC_01_Curve_DecelTarget — Кривой дорожный сценарий с замедляющимся ведущим транспортным средством в маршруте эго.

  6. scenario_LFACC_02_Curve_AutoRetarget — Кривой дорожный сценарий с изменяющимися ведущими транспортными средствами в маршруте эго. Этот сценарий тестирует способность автомобиля, оборудованного датчиком перенастроить к новому ведущему транспортному средству при езде по кривой.

  7. scenario_LFACC_03_Curve_StopnGo — Кривой дорожный сценарий с ведущим транспортным средством, замедляющимся в маршруте эго.

  8. scenario_LFACC_04_Curve_CutInOut — Кривой дорожный сценарий с быстро двигающимся автомобилем в смежном маршруте сокращает в маршрут эго и отключает от маршрута эго.

  9. scenario_LFACC_05_Curve_CutInOut_TooClose — Кривой дорожный сценарий с быстро двигающимся автомобилем в смежном маршруте сокращает в маршрут эго и настойчиво отключает от маршрута эго.

  10. scenario_LFACC_06_Straight_StopandGoLeadCar — Прямой дорожный сценарий с ведущим транспортным средством, которое ломается в маршруте эго.

Эти требования реализованы как сценарии тестирования с теми же именами как сценарии, используемые в HighwayLaneFollowingTestBench модель.

Рассмотрите тестовую модель

Этот пример снова использует HighwayLaneFollowingTestBench модель от Магистрального Маршрута После (Automated Driving Toolbox) пример. Откройте тестовую модель.

open_system("HighwayLaneFollowingTestBench");

Эта тестовая модель имеет Симуляцию 3D Сценарий, Детектор Маркера Маршрута, Детектор Транспортного средства, Прямое Cочетание датчиков Транспортного средства, Маршрут После Логики Решения и Маршрут После компонентов Динамики аппарата и Контроллера.

Эта тестовая модель сконфигурирована с помощью helperSLHighwayLaneFollowingSetup скрипт. Этот скрипт настройки берет scenarioName как введено. scenarioName может быть любой из ранее описанных сценариев тестирования. Чтобы запустить скрипт настройки, используйте код:

scenarioName = "scenario_LFACC_03_Curve_StopnGo";
helperSLHighwayLaneFollowingSetup("scenarioFcnName",scenarioName);

Можно теперь симулировать модель и визуализировать результаты. Для получения дополнительной информации об анализе результатов симуляции и проекте отдельных компонентов в тестовой модели, смотрите, что Магистральный Маршрут Следует (Automated Driving Toolbox) примеру.

В этом примере особое внимание находится больше на автоматизации запусков симуляции для этой тестовой модели с помощью Simulink Test для различных сценариев тестирования. Метрическая подсистема Оценки включает интегрирование метрических оценок уровня системы с Simulink Test. Эта подсистема использует Проверку Статические блоки Области значений для этого интегрирования. Откройте Метрическую подсистему Оценки.

open_system("HighwayLaneFollowingTestBench/Metrics Assessment");

В этом примере четыре метрики используются, чтобы оценить следующую за маршрутом систему.

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

  • Проверьте В Маршруте: Проверяет, что автомобиль, оборудованный датчиком следует за одним из маршрутов на дороге в течение симуляции.

  • Проверьте разрыв Времени: Проверяет, что разрыв времени между автомобилем, оборудованным датчиком и ведущим транспортным средством выше 0,8 секунд. Разрыв времени между этими двумя транспортными средствами задан как отношение расчетного расстояния прогресса до скорости автомобиля, оборудованного датчиком.

  • Не проверьте Столкновение: Проверяет, что автомобиль, оборудованный датчиком не сталкивается с ведущим транспортным средством ни в какой точке во время симуляции.

Отключите визуализацию во время выполнения

Тестовая модель уровня системы визуализирует промежуточные выходные параметры во время симуляции для анализа различных компонентов в модели. Эта визуализация не требуется, когда тесты автоматизированы. Можно уменьшать время выполнения для автоматизированного тестирования путем отключения их.

Отключите визуализацию во время выполнения для подсистемы Детектора Маркера Маршрута.

load_system('LaneMarkerDetector');
blk = 'LaneMarkerDetector/Lane Marker Detector';
set_param(blk,'EnableDisplays','off');

Отключите визуализацию во время выполнения для подсистемы Детектора Транспортного средства.

load_system('VisionVehicleDetector');
blk = 'VisionVehicleDetector/Vision Vehicle Detector/ACF/ACF';
set_param(blk,'EnableDisplay','off');

Сконфигурируйте блок Simulation 3D Scene Configuration (Automated Driving Toolbox), чтобы запустить Нереальный Engine в бездисплейном режиме, где 3D окно симуляции отключено.

blk = ['HighwayLaneFollowingTestBench/Simulation 3D Scenario/', ...
      'Simulation 3D Scene Configuration'];
set_param(blk,'EnableWindow','off');

Автоматизируйте тестирование

Менеджер по Тесту сконфигурирован, чтобы автоматизировать тестирование следующего за маршрутом приложения. Откройте HighwayLaneFollowingTestAssessments.mldatx тестовый файл в менеджере по Тесту.

sltestmgr;
testFile = sltest.testmanager.load('HighwayLaneFollowingTestAssessments.mldatx');

Наблюдайте заполненные тесты, которые были созданы ранее в этом файле. Каждый тест соединяется с соответствующим требованием в Редакторе Требований для трассируемости. Каждый тест использует POST-LOAD коллбэк, чтобы запустить скрипт настройки с соответствующими входными параметрами и сконфигурировать выходное имя видеофайла. После симуляции теста это вызывает helperGenerateFilesForLaneFollowingReport от CLEAN-UP коллбэк, чтобы сгенерировать графики объяснил в Магистральном Маршруте После (Automated Driving Toolbox) пример.

Запустите и исследуйте результаты для одного сценария тестирования:

Чтобы сократить командное окно выход, выключите сообщения обновления MPC.

mpcverbosity('off');

Протестировать системную модель с scenario_LFACC_03_Curve_StopnGo сценарий тестирования от Simulink Test, используйте этот код:

testSuite = getTestSuiteByName(testFile,'Test Scenarios');
testCase = getTestCaseByName(testSuite,'scenario_LFACC_03_Curve_StopnGo');
resultObj = run(testCase);

Чтобы сгенерировать отчет после симуляции, используйте этот код:

sltest.testmanager.report(resultObj,'Report.pdf',...,
    'Title','Highway Lane Following',...
    'IncludeMATLABFigures',true,...
    'IncludeErrorMessages',true,...
    'IncludeTestResults',0,'LaunchReport',true);

Исследуйте отчет Report.pdf. Заметьте, что раздел Тестовой среды показывает платформу, на которой запущен тест, и версия MATLAB® используется для тестирования. Раздел Summary показывает результат теста и длительность симуляции в секундах. Раздел Results показывает результаты передачи/сбоя на основе критериев оценки. Этот раздел также показывает графики, регистрируемые от helperGenerateFilesForLaneFollowingReport функция.

Запустите и исследуйте результаты для всех сценариев тестирования:

Можно симулировать систему для всех тестов при помощи sltest.testmanager.run. В качестве альтернативы можно симулировать систему путем нажатия на Play в менеджере по Тесту приложение.

После завершения тестовых симуляций результаты для всех тестов могут быть просмотрены во вкладке Results и Artifacts менеджера по Тесту. Для каждого теста Проверка Статические блоки Области значений в модели сопоставлены с менеджером по Тесту, чтобы визуализировать полные результаты передачи/сбоя.

Можно найти сгенерированный отчет в текущей рабочей директории. Этот отчет содержит подробные сводные данные состояний передачи/сбоя и графики для каждого теста.

Проверьте тестовое состояние в Редакторе Требований:

Откройте Редактор Требований и выберите Display. Затем выберите Verification Status, чтобы видеть сводные данные состояния верификации для каждого требования. Зеленые и красные панели указывают на состояние передачи/сбоя результатов симуляции для каждого теста.

Автоматизируйте тестирование со сгенерированным кодом

HighwayLaneFollowingTestBench модель включает интегрированное тестирование Детектора Маркера Маршрута, Детектора Транспортного средства, Прямого Cочетания датчиков Транспортного средства, Маршрута После Логики Решения и Маршрута После компонентов Контроллера. Часто полезно выполнить регрессионное тестирование этих компонентов через программное обеспечение в цикле (SIL) верификация. Если у вас есть Embedded Coder™ лицензия Simulink Coder™, то можно сгенерировать код для этих компонентов. Этот рабочий процесс позволяет вам проверить, что сгенерированный код производит ожидаемые результаты, которые совпадают с требованиями уровня системы в течение симуляции.

Установите Детектор Маркера Маршрута запускаться в программном обеспечении в режиме цикла.

model = 'HighwayLaneFollowingTestBench/Lane Marker Detector';
set_param(model,'SimulationMode','Software-in-the-loop');

Установите Детектор Транспортного средства запускаться в программном обеспечении в режиме цикла.

model = 'HighwayLaneFollowingTestBench/Vehicle Detector';
set_param(model,'SimulationMode','Software-in-the-loop');

Выдвиньте Cочетание датчиков Транспортного средства, чтобы запуститься в программном обеспечении в режиме цикла.

model = 'HighwayLaneFollowingTestBench/Forward Vehicle Sensor Fusion';
set_param(model,'SimulationMode','Software-in-the-loop');

Установите Маршрут После Логики Решения запускаться в программном обеспечении в режиме цикла.

model = 'HighwayLaneFollowingTestBench/Lane Following Decision Logic';
set_param(model,'SimulationMode','Software-in-the-loop');

Установите Маршрут После Контроллера запускаться в программном обеспечении в режиме цикла.

model = 'HighwayLaneFollowingTestBench/Lane Following Controller';
set_param(model,'SimulationMode','Software-in-the-loop');

Теперь запустите sltest.testmanager.run симулировать систему для всех сценариев тестирования. После завершения тестов рассмотрите графики и результаты в сгенерированном отчете.

Включите сообщения обновления MPC снова.

mpcverbosity('on');

Автоматизируйте тестирование параллельно

Если у вас есть лицензия Parallel Computing Toolbox™, то можно сконфигурировать менеджера по Тесту, чтобы выполнить тесты в параллели с помощью параллельного пула. Чтобы запустить тесты параллельно, сохраните модели после отключения визуализации во время выполнения с помощью save_system('LaneMarkerDetector'), save_system('VisionVehicleDetector') и save_system('HighwayLaneFollowingTestBench'). Протестируйте менеджера, использует кластер Parallel Computing Toolbox по умолчанию и выполняет тесты только на локальной машине. Запущение тестов параллельно может ускорить выполнение и уменьшить количество времени, которое это занимает, чтобы получить результаты испытаний. Для получения дополнительной информации о том, как сконфигурировать тесты параллельно от менеджера по Тесту, смотрите, что Тесты Запуска Используют Параллельное Выполнение.