主要内容

使用规范模型基于需求的测试

自从R2022b

这个例子展示了如何使用一个模型到模型和测试规范正式要求的模型飞机自动驾驶仪控制器。规范模型使用了两个需求表块模型所需的飞机自动驾驶仪控制器模型的输入和输出。你从规范模型生成测试,然后在飞机自动驾驶仪控制器上运行这些测试模型。你测试的模型设计模型

为更多的信息关于如何定义和配置需求表块,明白了使用一个需求表块创建正式的需求(需求工具箱)正式的需求配置属性(需求工具箱)

查看高级需求

打开要求,AP_Controller_Reqs,在要求编辑器

slreq.open (“AP_Controller_Reqs”);

高级需求指定模型的输出和自动驾驶仪控制器模式。每个需求描述使用高级语言,您可以使用显式地定义的逻辑需要正式的需求。

这张图片显示了要求,AP_Controller_Reqs,在编辑器的需求。

视图规范的第一个迭代模型

开放的规范模型,spec_model_partial

spec_model =“spec_model_partial”;open_system (spec_model);

模型包含两个需求表块定义的正式要求的高级需求转化为可测试的逻辑表达式。块AP_Mode_Determination指定的正式要求自动驾驶仪控制器模式,和块Cmd_Determination指定控制器的输出。

这张图片显示了规范模型,spec_model_partial。模型有两个需求表块连接在一起。

查看正式要求,检查每个需求表。

需求表块控制器模式

开放AP_Mode_Determination。块中指定的正式要求自动驾驶仪控制器模式。确定输出数据模式,AP_Mode_Determination指定三个需求通过使用两个输入数据:

  • AP_Engage_Switch——自动进行切换

  • HDG_Engage_Switch——标题进行开关

每个要求使用的组合输入指定一个唯一的输出值模式

黑色图像显示了AP_Mode_Determination表。块中指定的正式要求自动驾驶仪控制器模式。

需求表块控制器命令

开放Cmd_DeterminationCmd_Determination指定的要求副翼命令和卷参考命令。Cmd_Determination使用四个输入数据:

  • 模式- - -AP_Mode_Determination输出,模式

  • Roll_Ref_TK——卷参考目标的设置旋钮

  • Roll_Angle_Phi-实际飞机卷角

  • HDG_Ref_TK——标题的设置参考目标旋钮

块使用这些输入数据来确定控制器的输出数据:

  • Roll_Ref_Cmd——卷参考命令

  • Ail_Cmd——副翼命令

这张图片显示了Cmd_Determination表。Cmd_Determination副翼命令指定要求,参考命令。

在这个例子中,表达式使用常数数据定义的值的范围Roll_Ref_TKRoll_Angle_Phi。你也可以参数化的值或使用文字值。看到需求表中定义数据块(需求工具箱)。要查看这些值,打开符号窗格。在建模选项卡,设计数据部分中,点击符号面板

除了要求,Cmd_Determination还定义了设计的假设。看到添加假设需求(需求工具箱)。在这个例子中,假设限制横摇角的值并根据其物理卷参考目标旋钮的局限性。横摇角不能超过180年或低于-180年度,滚动旋钮不能超过参考目标30.或低于-30年。在表中,单击假设选项卡。

这张图片显示了Cmd_Determination中使用的假设。

您还可以指定数据范围的局限性最低最大属性的数据或显式地指定范围从信号块。

生成测试

金宝app仿真软件®设计验证人™会自动创建测试目标从需求中定义需求表块。生成的测试中,使用配置参数窗口或通过编程方式指定测试。看到为测试生成模型覆盖目标。选择不同的覆盖目标来确定如果你想减少数量的测试生成,或者如果你想改善测试粒度和可追溯性。

在本例中,生成测试覆盖率和输出保存到MAT-file决定。

选择= sldvoptions;选择。模式=“TestGeneration”;选择。模式lCoverageObjectives =“决定”;[~、文件]= sldvrun (spec_model,选择,真);

金宝app仿真软件设计验证器生成的测试目标和测试需求,但是需求满足的只有7个测试目标。

这张图片显示了生成的结果测试规范的模型。测试的需求满足只有7个目标。

满足测试目标,您必须修改规范模型。一般来说,避免从规范模型生成测试没有确认正式的需求完成后,一致,对应于高级需求。否则,测试生成不太可能满足测试目标。

清楚(“文件”)

调查并更新规范模型

规范模型和更新正式的需求进行调查。在这个例子中,要求Cmd_Determination缺少正式的要求对应的第三颗子弹要求3。

这张图片显示了描述第三次高级别要求。失踪的要求从Cmd_Determination红盒子。

开放Cmd_Determination在模型中spec_model_final查看更新后的需求。另外的要求有索引2.2.4

spec_model =“spec_model_final”;load_system (spec_model);open_system (spec_model +“/ Cmd_Determination”);

这张图片展示了更新后的正式Cmd_Determination要求。新的需求在一个红色的盒子。

发现问题在你的要求手动设置可以是一个挑战。您可以使用仿真软件设计校金宝app验分析需求集和标识不一致和不完整的。有关更多信息,请参见分析了块(需求工具箱)

高层和正式的需求联系起来

加载规范模型加载的正式的需求要求编辑器。关闭需求设置相关的规范模型还关闭。在开发你的正式的需求时,正式的需求链接到相应的高级需求跟踪需求的规范模式。在这个例子中,连接需求并不影响测试生成或测试结果。

第一次正式要求链接到相应的高级要求:

  1. spec_model_final,扩大需求设置名为Table1

  2. 右键单击正式要求的指数1并选择选择连接的要求

  3. 扩大AP_Controller_Reqs要求设置。

  4. 右键单击的要求ID1并点击创建一个链接从“1:自动驾驶模式”“1:高度:自动驾驶仪反对……”

默认的链接类型有关。链接类型的更多信息,请参阅链接类型(需求工具箱)

从更新生成测试模型

从更新的规范模型生成测试通过使用前面定义的选项。

选择= sldvoptions;选择。模式=“TestGeneration”;选择。模式lCoverageObjectives =“决定”;[~、文件]= sldvrun (spec_model,选择,真);

在这个版本的规范模型,测试目标得到满足。

这张图片显示了生成的结果更新规范的测试模型。测试的目标是满足。

运行测试的设计模型

创建测试,满足测试目标之后,您可以运行测试的设计模型。在这个例子中,飞机自动驾驶仪的设计模型是模型控制器,sldvexRollApController

在设计模型上运行测试之前,您必须接口规范模型与设计模型。通常,规范模型不会产生或使用相同的信号设计模型。这些差异可以是简单的或抽象的。例如,设计模型可能使用不同的输入和输出信号类型的规范模型,或者你可能想要比较一个标量输出设计模型对一系列的规范模式。结果,您需要构建一个接口之间的设计模型和规范模型。

接口规范模型的设计模型

在这个例子中,规范模型spec_model_final和设计模型sldvexRollApController输入可以直接接口,但是输出是不同的。spec_model_final代表了副翼命令的范围值,但副翼命令值产生的年代ldvexRollApController是一个标量翻倍。接口使用MATLAB功能块比较副翼命令值。然后用断言验证两个输出模块的接口。打开模型,spec_model_test_interface,查看界面。

test_interface =“spec_model_test_interface”;open_system (test_interface);

这张图片显示了模型,spec_model_test_interface。

MATLAB函数比较两个信号通过使用这个代码块:

函数y = fcn (design_val spec_val)开关spec_val情况下Ail_Cmd。所有的y = true;情况下Ail_Cmd。零y = (design_val = = 0);否则y = false;结束

在设计模型运行更新测试

测试和验证设计模型,创建一个包含:利用模型

  1. 规范模型

  2. 设计模型

  3. 测试界面和验证模型

在利用模型,把模型联系在一起。然后运行测试的设计模型和验证输出对应的需求利用模型。

利用模型,打开模型,sldvexDesignHarnessFinal

harness_model =“sldvexDesignHarnessFinal”;open_system (harness_model);

设计模型和接口模型,并不是所有的输入可以直接对应于规范模型的输入。在这个例子中,利用模型准备设计模型进行测试与五个输入指定的规范模式。

这张图片显示了利用模型,sldvexDesignHarnessFinal。

运行更新测试在设计模型中利用模型。使用sldvruntest函数来运行测试并保存结果。如果你有模型覆盖™,你可金宝app以查看测试结果的输出sldvruntest覆盖率报告。视图使用覆盖报告cvhtml(金宝app仿真软件覆盖)函数。

cvopts = sldvruntestopts;cvopts。coverageEnabled = true;[finalData, finalCov] = sldvruntest (harness_model、files.DataFile cvopts);cvhtml (“finalCov”,finalCov);

覆盖率报告表明,设计模型,实现全覆盖sldvexRollApController

这张图片显示了运行测试后的覆盖率报告从内部治理模型。报告显示,实现全覆盖的设计模型。

bdclose (“所有”);slreq.clear;

另请参阅

(需求工具箱)

相关的话题