基于需求的模型开发测试
此示例演示了如何对自动驾驶子系统进行测试以验证其是否满足特定需求。
此示例演示了如何通过测试管理器、测试框架、Test Sequence 模块和 Test Assessment 模块,对子系统进行需求测试。需求文档链接到测试用例和测试框架,verify 语句评估在测组件。
当您创建模型时,您可以添加测试用例来根据需求验证模型。后续用户可以运行相同的测试用例,然后通过添加测试用例来完成进一步的验证目标,例如实现 100%覆盖率或验证生成的代码。
此示例使用三种场景根据需求测试 Roll Reference 子系统。Test Sequence 模块提供输入,Test Assessment 模块评估组件。Roll Reference 子系统是自动驾驶控制系统的一个组成部分。Roll Reference 控制飞机滚转控制系统的参考角度。该子系统包含一项未通过的评估,导致设计变更,限制了高输入角度下的子系统输出。
路径和示例文件
输入以下内容来存储示例的路径和文件名:
topModel = 'TestAndVerificationAutopilotExample'; rollModel = 'RollAutopilotMdlRef'; testHarness = 'RollReference_Requirement1_3'; testFile = 'AutopilotTestFile.mldatx'; reqDoc = 'RollAutopilotRequirements.txt';
打开测试文件和模型
打开 RollAutopilotMdlRef 模型。完整的控制系统 TestAndVerificationAutopilotExample 参考了该模型。
open_system(rollModel)

在测试管理器中打开测试文件。
tf = sltest.testmanager.load(testFile); sltest.testmanager.view;
打开需求编辑器,查看与 Roll Reference 模块相关的需求。在测试浏览器窗格中,展开树形结构中的自动驾驶测试文件和基本设计测试用例,然后点击需求 1.3 测试。在需求 1.3 测试选项卡中,展开需求。双击任何需求链接即可打开需求编辑器。选中某项需求后,其详细信息将显示在“属性”窗格的“描述”部分中。

需求 1.3.1 规定,当滚转保持模式成为活动模式时,滚转保持参考值应设置为飞机的实际滚转角,但子需求所述情况除外。
子需求 1.3.1.1 规定,当滚转保持功能启动时,若实际滚转角在任一方向上小于 6 度,则滚转保持参考值应设置为零。
儿童安全座椅需求 1.3.1.2 规定:当滚转锁止装置启动时,若实际滚转角度大于 30 度,则滚转锁止参考值应设置为与实际滚转角度相同方向的 30 度。
子需求 1.3.1.3 规定:当操纵杆指令值达到 3 度或以上时,滚转参考应设置为操纵杆指令值,但滚转指令值上限为 30 度。
测试用例为每个子需求创建一个场景,用于测试该需求中的正常情况和异常情况。
需求文档使用映射到 Test Sequence 模块和测试步骤的 URL 以跟踪到测试框架。打开测试框架并突出显示与参考需求 1.3 相关的组件。
sltest.harness.open([rollModel '/Roll Reference'],testHarness) rmi('highlightModel','RollReference_Requirement1_3')

Test Sequence 模块、Test Assessment 模块和在测组件链接到需求文档。选择 App > 需求管理器,然后在测试框架模型中点击突出显示链接,可以突出显示需求链接。您还可以通过点击工具条中的切换需求链接突出显示来突出显示测试序列编辑器中的链接。有关创建需求链接的信息,请参阅查看和创建链接 (Requirements Toolbox)。
Test Sequence
打开 Test Sequence 模块。
open_system('RollReference_Requirement1_3/Test Sequence')

Test Sequence 模块为三种场景创建测试输入:
在每次测试中,测试序列设置一个信号级别,然后启动自动驾驶。测试序列检查 PhiRef 在转移到下一个信号电平之前是否在最短时间 DurationLimit 内保持稳定。对于前两种场景,测试序列将 EndTest 局部变量设置为 1,触发向下一个场景的转移。
这些场景检查基本的组件功能,但不一定能实现 100%覆盖率等目标。
测试评估
打开 Test Assessment 模块。
open_system('RollReference_Requirement1_3/Test Assessment')

Test Assessment 模块评估 Roll Reference。评估模块是一个库链接子系统,有助于多个测试框架之间重用测试评估。该模块包含 verify 语句,涵盖:
需求:当
PhiRef在低限和高限内运行时,Phi=Phi。需求:当
PhiRef = 0度时Phi < 6。需求:当
PhiRef = 30度时Phi > 30。需求:当
TurnKnob启用时,在PhiRef = TurnKnob度时TurnKnob >= 3。
验证子系统
要运行测试,请在测试管理器中,右键点击测试浏览器窗格中的需求 1.3 测试,然后点击运行。
仿真返回测试管理器中的 verify 语句结果和仿真输出。verify_high_pos 语句失败。
在测试管理器中的结果和工件窗格中,展开结果。
选择验证语句。
在数据检查器选项卡的检查窗格中,选择 Simulink: verify_high_pos。该图显示了语句何时失败。

在“数据检查器*”选项卡中,点击“可视化与布局”,然后在基本布局下选择 2x1 - 双图垂直网格布局。

点击下图,在检查窗格中展开 Sim Output 信号,并选择
PhiRef和Phi。输出轨迹与上图中的verify结果一致。观测到当PhiRef超过 30 度时,Phi也超过 30 度。

更新 RollReference 以限制 PhiRef 信号。
关闭测试框架。
在主模型中,双击 Roll Reference 模块,并如图所示向模型中添加一个 Saturation 模块。
将上限设置为
30,下限设置为-30。模块与其需求链接起来。点击 Saturation 模块以选中它。在需求编辑器中,右键点击需求 1.1.2,然后点击从饱和度链接。
再次运行测试。verify 语句通过,并且测试管理器中的输出显示 PhiRef 不超过 30 度。

另请参阅
需求管理器 (Requirements Toolbox)
主题
- 链接至需求
- 根据需求测试模型并报告结果
- 直接链接到第三方应用程序中的需求 (Requirements Toolbox)