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

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

Введение

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

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

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

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

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

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

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

  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. Этот пример содержит десять сценариев тестирования с высокоуровневыми требованиями тестирования, заданными для каждого сценария. Откройте набор требования.

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 модель из Магистрального примера Следующего Маршрута. Откройте тестовую модель.

open_system("HighwayLaneFollowingTestBench");

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

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

scenarioName = "scenario_LFACC_03_Curve_StopnGo";
visionVariant = "VisionProcessingAlgorithm";
helperSLHighwayLaneFollowingSetup(scenarioName,visionVariant);

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

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

open_system("HighwayLaneFollowingTestBench/Metrics Assessment");

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

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

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

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

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

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

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

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

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

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

blk = 'HighwayLaneFollowingTestBench/Vision Detector Variant/Vision Processing Algorithm/Vision Vehicle Detector';
set_param(blk,'EnableDisplay','off');

Конфигурируйте Моделирование 3D Блок Configuration Сцены, чтобы запустить Нереальный Engine в бездисплейном режиме, где 3D окно симуляции отключено.

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

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

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

sltestmgr;
sltest.testmanager.load('HighwayLaneFollowingMetricAssessments.mldatx');

Наблюдайте заполненные тесты, которые были созданы ранее в этом файле. Каждый тест соединяется с соответствующим требованием в Редакторе Требований для трассируемости. Эти тесты сконфигурированы, чтобы запуститься с VisionProcessingAlgorithm вариант. Можно также сконфигурировать тесты, чтобы запуститься с ProbabilisticDetectionSensor вариант путем изменения visionVariant переменная в тестовом наборе SETUP 'callback'.

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

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

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

testFile = sltest.testmanager.TestFile('HighwayLaneFollowingMetricAssessments.mldatx');
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 модель включает интегрированное тестирование Детектора Маркера Маршрута, Прямого Fusion Датчика Транспортного средства и Маршрута После компонентов Логики и Контроллера Решения. Часто полезно выполнить регрессионное тестирование этих компонентов через программное обеспечение в цикле (SIL) верификация. Этот рабочий процесс позволяет вам проверить, что сгенерированный код производит ожидаемые результаты, которые совпадают с требованиями уровня системы в течение симуляции.

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

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

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

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

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

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

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

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

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

Похожие темы