自动测试高速公路变道
这个示例展示了如何通过定义基于需求的场景,以及对组件和为这些组件生成的代码进行自动化测试,来评估变道应用程序的功能。这些组件包括一个变道计划器和控制器。这个例子建立在高速公路变道的例子。
介绍
高速公路变道系统使自动车辆能够在高速公路上从一条车道自动移动到另一条车道。该系统建立了自动变道的纵向和横向控制动力学模型。系统级仿真使您能够评估系统级测试台模型的功能。您可以根据系统需求配置模拟来测试场景。自动运行这些模拟使回归测试能够验证系统级功能。
的高速公路变道示例显示了如何设计和模拟一个系统级模型的车道变化使用地面真值信息。这个例子展示了如何通过使用Simulink®Test™对该模型的多个场景进行自动化测试。金宝app场景基于系统级需求。在这个例子中,你:
评审需求—需求描述了系统级测试条件。创建模拟测试场景来表示这些条件。
检查试验台模型-审查包含度量评估的系统级变道试验台模型。这些度量评估将测试台架模型与Simulink test集成在一起,用于自动化测试。金宝app
禁用运行时可视化禁用运行时可视化减少了自动测试的执行时间。
自动化测试—配置测试管理器,模拟每个测试场景,评估成功标准,并报告结果。在测试管理器中动态地探索结果,并将它们导出为PDF供外部审阅者使用。
使用生成的代码自动化测试—配置变道规划器和控制器组件,生成c++代码。对生成的代码运行自动测试,并验证其行为。
并行自动化测试-通过在多核计算机上使用并行计算来提高运行测试的总体执行速度。
评审需求
为了探索需求,打开项目示例文件的工作副本。MATLAB®将文件复制到示例文件夹中,以便您可以编辑它们。
目录(fullfile (matlabroot,“工具箱”,“开车”,“drivingdemos”) helperDrivingProjectSetup (“HighwayLaneChange.zip”, workDir = pwd)
需求工具箱™使您能够在Simulink中编写、分析和管理需求。金宝app此示例包含15个测试场景,并为每个场景定义了高级测试需求。打开需求集。
打开(“HighwayLaneChangeTestRequirements.slreqx”)
或者,您可以从需求标签要求经理应用程序在Si金宝appmulink。
该文件中的每一行都以文本和图形格式指定了变道系统测试场景的测试需求。这些场景使您能够测试变道规划器和控制器组件。
scenario_LC_01_SlowMoving
-三车道直道场景,在自我车道上有一辆缓慢移动的领头车辆。scenario_LC_02_SlowMovingWithPassingCar
-三车道直道场景,在自我车道上有一辆缓慢移动的领头车,在左侧车道上有一辆超车。scenario_LC_03_DisabledCar
-三车道直道场景,在自我车道上有一辆残疾车辆。scenario_LC_04_CutInWithBrake
-三车道直道场景,领头车在刹车时切入自我车道。scenario_LC_05_SingleLaneChange
-四车道直道场景,场景中有多辆车和一辆缓慢移动的领头车。scenario_LC_06_DoubleLaneChange
-四车道直道场景,场景中有多辆车,包括一辆缓慢移动的领头车和一辆快速移动的后车。scenario_LC_07_RightLaneChange
-三车道直道场景,领头车在自我车道,超车在左车道,导致自我车辆右变道触发。scenario_LC_08_SlowmovingCar_Curved
弯曲的道路场景,在自我车道上有一辆缓慢移动的领头车。scenario_LC_09_CutInWithBrake_Curved
-弯道场景,领头车切入自我车道。scenario_LC_10_SingleLaneChange_Curved
弯道场景中有多辆车和一辆缓慢移动的领头车。scenario_LC_11_MergingCar_HighwayEntry
高速公路入口场景,场景中有三辆车其中一辆车正从高速公路入口路段并入自我车道。scenario_LC_12_CutInCar_HighwayEntry
高速公路入口场景,场景中有四辆车。其中一辆车在道路网络的弯曲路段上进入了自我车道。scenario_LC_13_DisabledCar_Ushape
- u型场景,场景中有多辆车,包括一辆残疾车在自我车辆的相邻车道上,以及一辆缓慢行驶的车辆在自我车道上scenario_LC_14_DoubleLaneChange_Ushape
- u型场景,场景中有多辆车,包括一辆残疾车在自我车辆的相邻车道上,以及一辆缓慢行驶的车辆在自我车道上scenario_LC_15_StopnGo_Curved
-弯道场景,场景中包含6辆车。当其他车辆在相邻车道行驶时,领头的车辆减速。
评审测试台模型
此示例重用HighwayLaneChangeTestBench
模型高速公路变道的例子。打开试验台模型。
open_system (“HighwayLaneChangeTestBench”)
试验台模型包含以下子系统:
场景与环境
-指定用于模拟的场景、车辆和地图数据。规划器配置参数
-规划器算法所需的配置参数。高速公路变道规划
-实现高速公路变道规划算法。变道控制器
—指定控制器的算法模型。车辆动力学
-指定自我车辆的动态模型。指标的评估
-评估系统级行为。
配置此测试台架模型helperSLHighwayLaneChangeSetup
脚本。这个设置脚本包含以下内容scenarioName
作为输入,其中scenarioName
可以是前面描述的任何一个测试场景。要运行设置脚本,使用以下代码:
scenarioName =“scenario_LC_15_StopnGo_Curved”;helperSLHighwayLaneChangeSetup (scenarioFcnName = scenarioName)
现在可以模拟模型并可视化结果。有关测试台模型中各个组件设计的详细信息,请参阅高速公路变道的例子。
接下来,使用Simulink test对不同的测试场景自动化这个测试台架模型的模拟运行。金宝app的指标的评估
子系统使系统级度量评估与Simulink测试集成。金宝app这个子系统使用检查静态范围(金宝app模型)和检查静态下界(金宝app模型)此集成的块。打开指标的评估
子系统。
open_system (“HighwayLaneChangeTestBench /指标评估”)
的指标的评估
子系统输出这些指标:
验证时间间隔
-验证自我车辆与领先车辆之间的时间差距大于0.8秒。两车之间的时间差是计算出的车头距与车辆自身速度之比。
验证无碰撞
-验证自我车辆在模拟过程中的任何时刻都不会与场景中的任何车辆发生碰撞。
验证纵向抖动
-验证自我车辆的纵向抖动值在- 5m /s^3和5m /s^3之间。
验证侧跳
-验证自我车辆的横向抽搐值在- 5m /s^3和5m /s^3之间。
验证安全
-根据当前车道、左车道和右车道上的车辆,验证自我车辆的安全性。这确保了自我飞行器在跟随轨迹时执行安全机动。
禁用运行时可视化
系统级测试台模型打开一个可视化窗口,在场景的追逐视图和俯视图中显示自我飞行器、采样轨迹和胶囊列表。您可以禁用可视化窗口以使模拟运行得更快。
配置可视化块以禁用可视化窗口。
黑色=“HighwayLaneChangeTestBench /可视化”;set_param(黑色,EnableChaseView =“关闭”) set_param(黑色,EnableTopView =“关闭”)
自动化测试
配置测试经理自动测试变道应用程序。打开HighwayLaneChangeMetricAssessments.mldatx
中的测试文件测试经理。
sltestmgr;testFile = sltest.testmanager.load(“HighwayLaneChangeMetricAssessments.mldatx”);
观察先前在此文件中编写的填充测试用例。这些测试被配置为运行模型。
每个测试用例都使用POST-LOAD回调以使用适当的输入运行设置脚本。在模拟测试用例之后测试经理使用helperLaneChangeReport
函数清理回调生成曲度,横向偏差,航向角,速度,转向角,加速度和震动的图。
运行并浏览单个测试场景的结果
测试系统级模型scenario_LC_15_StopnGo_Curved
场景。
testSuite = getTestSuiteByName(testFile,“测试场景”);testCase = getTestCaseByName(testSuite,“scenario_LC_15_StopnGo_Curved”);resultObj = run(testCase);
模拟完成后生成测试报告。
sltest.testmanager.report (resultObj“Report.pdf”,…Title =“高速公路变道”,…IncludeMATLABFigures = true,…IncludeErrorMessages = true,…IncludeTestResults = false,…LaunchReport = true)
检查Report.pdf
文件。观察到测试
environment部分显示了运行测试的平台和用于测试的MATLAB版本。的总结
部分显示了测试的结果和以秒为单位的模拟持续时间。的结果
部分显示基于评估标准的合格或不合格结果。这个部分还显示了从helperLaneChangeReport
函数。
运行并浏览所有测试场景的结果
对系统进行所有测试的模拟运行(测试文件)
命令。或者,您可以通过单击来模拟系统玩在测试经理应用程序。
测试模拟完成后,请查看中所有测试的结果结果和工件标签测试经理。对于每个测试用例测试经理使用检查静态范围(金宝app模型)和检查静态下界(金宝app模型)块,以可视化总体通过或不通过的结果。
您可以在当前工作目录中找到生成的报告。该报告包含通过或失败状态的详细摘要,以及每个测试用例的图。
在需求编辑器中验证测试状态
打开要求编辑器并选择显示。然后,选择验证状态查看每个需求的验证状态摘要。绿色和红色条分别表示每个测试的模拟结果通过或失败。
使用生成的代码自动化测试
的HighwayLaneChangeTestBench
的集成测试高速公路变道规划
和高速公路变道控制器
组件。为这些组件生成代码需要Simulink Coder™许可证。金宝app此工作流使您能够验证生成的代码在整个模拟过程中是否产生与系统级需求匹配的预期结果。
设置高速公路变道规划
以软件在循环(SIL)模式运行。
模型=“HighwayLaneChangeTestBench/公路变道计划”;set_param(模型、SimulationMode =“Software-in-the-loop”)
设置变道控制器
以SIL模式运行。
模型=HighwayLaneChangeTestBench/变道控制器;set_param(模型、SimulationMode =“Software-in-the-loop”)
模拟所有测试场景的系统运行(测试文件)
命令。测试完成后,在生成的报告中查看图和结果。如果您拥有Simulink Coverage™的许可金宝app,您还可以在生成的报告中获得生成代码的代码覆盖率分析。该许可还使您能够可视化单个测试用例的覆盖结果和聚合的覆盖结果。
并行自动化测试
如果您拥有Parallel Computing Toolbox™许可证,则可以配置测试经理使用并行池并行执行测试。要并行运行测试,请在禁用运行时可视化后保存模型save_system(“HighwayLaneChangeTestBench”)
命令。的测试经理使用默认的并行计算工具箱集群并仅在本地计算机上执行测试。并行运行测试可以加快执行速度,并减少获得测试结果所需的时间。有关如何从中并行配置测试的详细信息测试经理,请参阅使用并行执行运行测试(金宝app仿真软件测试)。