主要内容

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

这个例子展示了如何使用规范模型来执行基于需求的测试。在这个例子中,您遵循一种系统的方法来根据需求验证您的设计模型。有关规格模型的详细描述,请参见什么是规范模型?

步骤1:在需求编辑器中编写需求

这个例子使用了一个自动驾驶仪控制器,RollAutopilotMdlRef这是一个控制飞机侧倾角的设计模型。滚转自动驾驶仪控制器在两种高级模式下工作:

1.辊保持状态:这种模式要么保持飞机当前的滚转角度,要么根据用户指定的角度进行改变。

2.航向保持模式:此模式可维持当前航向或使飞机滚转以达到用户指定的航向值。有关滚转自动驾驶仪控制器系统的详细信息,请参阅基于需求的模型开发测试(金宝app仿真软件测试)

对于自动驾驶仪控制器,需求描述了系统接口、高级系统模式和控制器的预期行为。这些需求在需求编辑器中编写并保存在AP_Controller.slreqx文件。有关需求编辑器的更多信息,请参见在Simulink编辑器中处理需求金宝app(金宝app仿真软件需求).要查看需求,打开需求编辑器,输入:

slreq.open(“AP_Controller”);

“需求编辑器”显示滚动保持和航向保持模式的高级需求。当您单击每个需求时,选项卡将列出该需求的详细信息。

步骤2:创建规格说明模型

创建规范模型时,需要考虑几个因素,如需求的类型、模型块的选择和抽象级别。创建规范模型

打开SLDVEXSPECTPARTIAL涵盖自动驾驶仪要求集的规范模型:

规范模型=“SLDVEXSPECTPARTIAL”开放式系统(spec_模型);

SLDVEXSPECTPARTIAL模型由输入和输出接口组成。真值表捕获需求。

要打开真值表,请输入:

open_system (“sldvexSpecPartial /美联社控制器需求”);

步骤3。将需求链接到规格说明模型

执行这些步骤将需求链接到规范模型。

1.右键单击名为美联社控制器的要求在规范模型中。在关联菜单中,单击要求>选择与Simulink链接金宝app

2.在需求编辑器中打开需求。右键单击要链接到真值表的需求并单击AP控制器要求链接(真值表)。如果您有多个真值表,每个真值表都指定了一组需求,请将它们链接起来。

步骤4:为规格说明模型生成测试用例

使用sldvoptions为规格说明模型生成测试用例。每个需求都与使用的单个测试生成目标相关联sldv.test ()

选择= sldvoptions;选择。模式=“测试生成”;opts.modelCoverage对象=“没有”; [~,files]=sldvrun(spec_model,opts,true);

分析完成后,Results Summary窗口显示6个目标中的6个已经满足。

步骤5:创建测试转换系统以在设计模型上运行测试

自动驾驶仪控制器规范模型和设计模型具有不同的接口,这意味着在步骤4中生成的测试不支持在设计模型上执行仿真。金宝app

例如飞机横摇角在规范中属于枚举范围类型,但在设计模型中属于双类型。

在测试转换过程中,如果一个信号值(如RA_Horizontal)是一个范围,则可以选择该范围内的任何值。可以使用各种启发式方法,例如中点(可以选择范围的中点)、边界值(可以选择范围的下限或上限),甚至是随机策略(可以选择范围中的随机值)。对于自动驾驶仪控制器,子系统sldvexDesignHarness /测试转换在驾驭模型中实现中点策略如下所示:

design_model =“sldvexDesignHarness”;load_system (design_model);open_system (“sldvexDesignHarness/测试转换”);

步骤6:在设计模型上模拟测试用例并识别缺失的需求

设计模型通过使用需求文件独立开发。要验证设计,请创建包含以下四个子系统的线束模型:

(i) 规范模型。

(ii)设计模型。

(iii)步骤5中描述的测试转换子系统。

(iv)运行时验证块。该块检查设计信号值是否在规范模型规定的范围内。

使用以下命令在设计模型上运行步骤5中的测试sldvruntest并生成模型覆盖率报告。

cvopts=sldvruntestopts;cvopts.coverageEnabled=true;[~,initCov]=sldvruntest(设计模型,文件.数据文件,cvopts);cvhtml(“InitialCov”,initCov);

分析结果报告完全覆盖没有达到roll_ap_mod实现了设计模型的子系统覆盖。

步骤7:通过添加缺少的需求来更新规范模型

将需求添加到sldvexSpecFull用于分析的规范模型。

规范模型=“sldvexSpecFull”开放式系统(spec_模型);

(a) 在更新的规范模型上生成测试用例

使用sldvoptions生成测试用例。

选择= sldvoptions;选择。模式=“测试生成”;opts.modelCoverage对象=“没有”; [~,files]=sldvrun(spec_model,opts,true);

(b) 在设计模型上模拟测试用例并生成覆盖率报告

打开SLDVEX设计线束包含设计模型、规范模型和测试转换子系统的模型。

design_model =“sldvexDesignHarness”开放式系统(设计模式);

使用sldvruntest并生成模型覆盖率报告。

cvopts=SLDVRUNTESOPTS;cvopts.coverageEnabled=true;[~,FinalCov]=sldvruntest(设计模型,files.DataFile,cvopts);cvhtml(“FinalCov”,FinalCov);

覆盖率报告显示设计模型实现了完全覆盖率。

bdclose (“全部”);slreq.clear;

相关话题