主要内容

顶层模型覆盖报告

如果您使用运行按钮,金宝app®覆盖™为指定的模型创建一个模型覆盖报告model_name_cov.html.中的模型覆盖率报告也会自动打开报道的细节窗格。模型覆盖率报告包含以下几个部分:

访问sldemo_fuelsys模型,在MATLAB中执行以下命令®命令窗口:

openExample (“ModelingAFaultTolerantFuelControlSystemExample”);

分析信息

分析信息部分包含了被分析模型的基本信息:

  • 覆盖范围数据

  • 模型信息

  • 利用信息(如果您记录覆盖从金宝app仿真软件测试™利用)

  • 模拟优化选项

  • 覆盖选项

聚合测试

如果您:将出现聚合测试部分:

  • 记录至少两个测试用例的聚合覆盖结果金宝app仿真软件测试管理并生成聚合结果的覆盖报告,或者

  • 在results Explorer中为累积的覆盖率结果生成覆盖率报告。

方法运行测试用例金宝app仿真软件测试管理器中的聚合测试部分链接到关联测试用例金宝app仿真软件测试经理。

如果通过“结果资源管理器”聚合测试用例结果,则聚合测试部分链接到“结果资源管理器”中相应的cvdata节点。

控件中的对应结果中,对于聚合测试部分中的每次运行,都有一个链接金宝app仿真软件测试管理器或结果管理器。

聚合单元测试

如果您记录一个或多个子系统控制的覆盖率,则“聚合测试”部分列出每个单元测试运行,“描述”部分显示对聚合覆盖率数据的描述。您可以通过转到Coverage Results Explorer并单击来查看和编辑此描述当前累计数据

每个被测单元接收一个序号n,并且被测单元的每个测试接收一个序数在风格上Un

覆盖率报告的“描述”和“聚合测试”部分。“聚合测试”部分列出了两个测试:运行T1和运行T2。

报道总结

覆盖摘要有两个子部分:

  • 测试-每个测试用例的模拟开始和停止时间以及模拟之前的任何设置命令。属性指定的任何测试用例标签cvt命令。属性时,此部分仅显示报表不包含聚合测试部分。

  • 总结-子系统结果摘要。要查看特定子系统的详细结果,请在Summary分段中单击子系统名称。

Summary部分为每个请求的覆盖率度量包含一列,即使对于不适用于所分析的模型或模型对象的度量也是如此。例如,在sldemo_fuelsys模型,如果您选择目标和约束条件覆盖率度量,你得到有标题的列测试的目标客观的证据测试条件,证明假设,即使模型不包含这些块金宝app仿真软件覆盖能够分析这些指标。

细节

Details部分报告详细的模型覆盖结果。详细报告的每个部分总结了测试模型中每个对象的指标的结果:

您还可以访问模型元素Details子节,如下所示:

  1. 右键单击一个Simulink金宝app元素。

  2. 在上下文菜单中,选择报道>报告

过滤对象

Filtered Objects部分列出了模型中从覆盖记录中过滤的所有对象,以及您为过滤那些对象所指定的基本原理。如果过滤规则指定过滤某一类型的所有块,所有这些块将在这里列出。

在下面的图表中,筛选了几个块、子系统和转换。两个库链接的块,受保护的分区和受保护的分区1,被过滤了,因为它们的块库被过滤了。

模型的细节

Details部分包含整个模型的结果摘要,后面是元素列表。单击模型元素名称以查看其覆盖结果。

的详细信息部分,如下图所示sldemo_fuelsys模型的例子。

详细信息部分列出模型sldemo_fusys和子系统:发动机气体动力学,油门命令,到控制器,到工厂,和燃料率控制。

子系统的细节

每个子系统细节部分包含了子系统的测试覆盖结果的摘要,以及它所包含的子系统的列表。概述之后是关于块、图表和MATLAB函数的部分,每个对象都包含子系统中的一个决策点。

下面的图形显示了覆盖结果的发动机气体动力学子系统在sldemo_fuelsys模型的例子。

子系统块发动机气体动力学显示覆盖结果,包括每个指标的后代。圈复杂度为13,决策覆盖率为71%(10/14个决策结果),执行覆盖率为100%(17/17个客观结果),关系边界覆盖率为50%(3/6个客观结果),整数溢出覆盖率的饱和度为50%(10/20个客观结果)

块的细节

的决策覆盖结果,如下图所示极大极小发动机气体动力学分系统的混合与燃烧分系统中sldemo_fuelsys模型的例子。

MinMax块报告50%的决策覆盖率(1/2决策结果)和100%的执行覆盖率(1/1客观结果)。

发现链接元素第一次出现在模型层次结构中第一个没有实现100%覆盖的块的Block Details部分。第一个发现链接元素中有一个箭头,该箭头链接到报表中的Block Details部分下一个没有达到100%覆盖的块。

未实现100%覆盖的后续块具有到未实现100%覆盖的前一个和下一个块的报告中的块详细信息部分的链接。

图表细节

下图显示了状态流的覆盖结果®图表control_logicsldemo_fuelsys模型的例子。

控制逻辑子系统报告圈复杂度为56,条件覆盖率为21%(5/24条件结果),决策覆盖率为25%(23/92决策结果),MCDC覆盖率为0%(0/12条件反转结果),查找表覆盖率为0%(0/1082插值/外推间隔),执行覆盖率为0%(0/4客观结果),关系边界覆盖率为0%(0/34客观结果)。

有关状态流程图及其对象的模型覆盖率报告的更多信息,请参见状态流程图的模型覆盖报告

保险范围详情MATLAB功能和金宝app设计验证器功能

默认情况下,金宝app仿真软件覆盖记录一个模型中所有MATLAB函数的覆盖率。MATLAB函数在MATLAB函数块、状态流程图或外部MATLAB文件中。

请注意

有关外部MATLAB文件的覆盖率报告的详细示例,请参见外部MATLAB文件覆盖率报告

记录金宝appSimulink设计验证器™覆盖sldv。*由MATLAB函数调用的函数,以及任意金宝appSimulink设计验证器块,选择目标和限制条件报道窗格中的“配置参数”对话框。

下面的例子显示了一个MATLAB函数的覆盖细节,hFcnsInExternalEML,这就是4金宝appSimulink设计验证器功能。在本例中,用于的代码hFcnsInExternalEML驻留在外部文件中。

这个例子还显示了金宝appSimulink设计验证器以下功能的覆盖细节:

在覆盖率结果中,达到100%覆盖率的代码是绿色的。覆盖率低于100%的代码是红色的。

嵌入式MATLAB函数hfcnsinexternaleml的覆盖率报告了4圈复杂度,40%的决策覆盖率(2/5决策结果),50%的测试客观覆盖率(1/2客观结果),0%的证明客观覆盖率(0/1客观结果),100%的测试条件覆盖率(1/1客观结果),和0%的证明假设覆盖率(0/1客观结果)。

保险范围hFcnsInExternalEML功能和sldv。*电话是:

  • 的函数声明hFcnsInExternalEML为绿色,因为模拟至少执行该函数一次。fcn调用hFcnsInExternalEML模拟期间11次。

    4号线,sldv.assume(U1 > u2),达到0%的覆盖率,因为U1 > u2从不计算为真。

  • 第5行,sldv.condition(U1 == 0),达到100%的覆盖率,因为U1 == 0至少有一个时间步骤的值为true。

  • 6号线,开关u1的四种结果中只有一种达到25%的覆盖率开关语句(例0)在模拟时发生。

  • 第17行,sldv.test(y>u1); sldv.test (y == 4)达到50%的覆盖率。第一个sldv.test呼叫覆盖率达到100%,但第二sldv.test呼叫覆盖率为0%。

有关MATLAB函数覆盖率的更多信息,请参见MATLAB函数的模型覆盖

有关保险范围的更多信息金宝appSimulink设计验证器功能,请参阅目标及限制范围

需求测试详细信息

如果您运行至少两个测试用例金宝app仿真软件测试链接到需求的要求工具箱™,聚合的覆盖报告详细描述了模型元素、测试用例和链接需求之间的链接。

需求测试详细信息部分包括:

  • 实现需求-哪些需求链接到模型元素。

  • 通过测试验证-哪些测试验证需求。

  • 相关的运行—哪些运行与每个验证测试相关联。

有关如何在覆盖率报告中跟踪覆盖率结果到需求的示例,请参见跟踪覆盖结果到需求

模型覆盖率报告中的圈复杂度

您可以指定模型覆盖率报告在报告中的两个位置包含圈复杂度数字:

  • Summary部分包含模型层次结构中每个对象的圈复杂度数字。对于子系统或状态流图,该数字包括它们所有后代的圈复杂度数字。

  • 每个对象的详细信息部分列出了所有单独对象的圈复杂度。

    子系统块Throttle & Manifold的详细信息显示该对象的圈复杂度为0,该对象包括后代的圈复杂度为10。

决策分析

决策分析表列出了决策的可能结果,以及结果在每个测试模拟中出现的次数。未发生的结果以红色高亮显示在表行中。

下图显示的决策分析表饱和块在油门和流管子系统的发动机气体动力子系统sldemo_fuelsys模型的例子。

饱和块Limit to Positive表示50%的决策覆盖率(2/4决策结果),决策输入>=所有时间步骤的下限为真,决策输入>的上限为假。

要显示和突出显示有问题的块,单击包含块的决策分析表的部分顶部的块名。

在Simulink画布中,“正饱和度”块以红色高亮显示。金宝app

条件分析

条件分析表列出了对应块的每个输入端口上true和false条件的出现次数。

条件分析表显示条件“输入端口1”对于199521个时间步长为真,对于480个时间步长为假。条件“输入端口2”对于200001时间步长为真,对于0时间步长为假。表中显示0个时间步长的单元格还显示“创建一个合理的筛选规则”图标。

MCDC分析

MCDC分析表列出了由相应块表示的MCDC输入条件用例,以及报告的测试用例覆盖条件用例的程度。

MCDC分析表(括号中的组合没有出现)。表达式“输入端口1”计算TT情况和FT情况。表达式“input port 2”计算TT情况,但不计算TF情况,因此TF情况显示在括号中。

MCDC分析表的每一行表示块的特定输入的一个条件情况。输入的条件casen是输入值的组合。输入n叫做决定输入条件的情况。改变输入的值n单独改变块的输出值。

MCDC分析表用一个条件case表达式来表示一个条件case。条件表达式是一个字符串,其中:

  • 字符串中字符的位置与输入端口号对应。

  • 位置上的字符表示输入的值。(T意味着真正的F意味着).

  • 黑体字对应决定输入的值。

例如,FTF表示三个输入块的条件情况,其中第二个输入是决定输入。

决策/条件列指定输入条件大小写的决定输入。的真正的出列指定导致块输出的决定输入值真正的值。的真正的出Entry使用条件大小写表达式,例如,FF,表示该块的所有输入值,决定变量的值以粗体显示。

表达式周围的圆括号表示在报告中包含的第一个(或唯一的)测试用例中没有出现指定的输入组合。换句话说,测试用例没有覆盖相应的条件用例。的假了列指定导致块输出假值的决定输入值,以及该值是否实际发生在报告中包含的第一个(或唯一一个)测试用例期间。

一些模型元素实现较少的MCDC覆盖,这取决于分析过程中使用的MCDC定义。有关分析期间使用的MCDC定义如何影响覆盖结果的更多信息,请参见Simulink覆盖中的修改条件和决策覆盖(MCDC)定义金宝app

如果您选择将Simul金宝appink逻辑块视为短路报道窗格中的“配置参数”对话框中,MCDC覆盖分析不会验证是否实际发生了短路输入。MCDC分析表使用x在条件表达式中(例如,TFxxx)表示工具未分析的短路输入。

如果您禁用了此功能,并且在收集模型覆盖率时逻辑块没有短路,那么您可能无法实现该块的100%覆盖率。

选择将Simul金宝appink逻辑块视为短路选项,用于您想要MCDC覆盖分析来近似您的测试用例为生成的代码实现的覆盖程度(大多数高级语言会使逻辑表达式短路)。

累计覆盖

在您记录连续的覆盖结果之后,您就可以访问、管理和汇总覆盖结果在覆盖结果资源管理器中。默认情况下,每次模拟的结果都会被保存并累积记录在报表中。

如果您选择显示累计进度报告结果部分的配置参数,结果位于累积覆盖率报告的所有表的最右边区域,反映了运行的总价值。该报告经过组织,以便您可以轻松地比较来自最近运行的附加覆盖率与来自会话中所有先前运行的覆盖率。

累积覆盖率报告包含以下方面的信息:

  • 当前运行——模拟刚刚完成的覆盖结果。

  • Delta -刚完成的模拟所达到的累计覆盖率中所增加的覆盖率百分比。如果先前模拟的累积覆盖和当前覆盖非零,如果新的覆盖没有增加到累积覆盖,则delta可能为0。

  • 累积-为模型收集的总覆盖范围,包括刚刚完成的模拟。

在运行三个测试用例之后,Summary报告显示了第三个测试用例获得了多少额外的覆盖率,以及前两个测试用例获得的累计覆盖率。

报道报告的摘要部分。显示彩色条,指示为每个子系统和模型总数获得的覆盖率的百分比。有一列彩色条,分别表示当前运行、增量和累积覆盖。

决策分析累积覆盖率表包含三列关于决策结果的数据,分别表示当前运行、自上次运行以来的增量和累积数据。

分析的条件表使用列标题# n T而且# n F指示单个测试用例的结果。该表使用合计T而且合计F累积的结果。您可以为每个测试用例识别相应块的每个输入端口上的true和false条件。

MCDC分析#n True Out而且#n假出列显示了每个测试用例的条件用例。的总的T而且总共F列显示累计结果。

请注意

您可以在命令行上计算可重用子系统和statflow构造的累计覆盖率。有关更多信息,请参见获取可重用子系统和Stateflow®结构的累积覆盖率

n维查找表

下面的交互式图表总结了访问查找表元素的程度。在这个例子中,生成了两个正弦波块x而且y访问一个由随机值填充的10 × 10元素组成的二维查找表块的索引。

一个二维查找表块,有两个正弦波输入,它的输出连接到一个作用域块。

在这个模型中,查找表的索引是1,2,…,每个方向10个。正弦波2块与正弦波1块不相π/ 2弧度。由此产生x而且y圆圈边缘的数字,这是在检查结果Lookup Table覆盖时看到的。

该报告包含一个二维表,表示查找表的元素。元素索引由单元格边界网格线表示,每个维度的网格线为10。查找表在表值之间进行插值的区域由单元格区域表示。元素1左侧和元素10右侧的外推区域由表边缘的单元格表示,这些单元格没有外部边界。

为每个单元格插值(或外推)的值的数目(执行计数)在测试期间由分配给单元格的绿色阴影表示。六个级别的绿色阴影和所代表的执行计数范围分别显示在表的一边。

如果单击单个表单元格,您将看到一个对话框,其中显示单元格的索引位置以及在测试期间为其生成的执行计数的确切数量。下面的示例显示了圆形右边缘的彩色阴影单元格的内容。

所选单元格用红色标出。您还可以单击表格边缘的外推单元格。

粗体网格线表示在模拟过程中出现了至少一个与其确切的索引值相等的块输入。单击边框以显示该索引值的准确命中数。

下面的示例模型使用一个n-D Lookup Table块,其中包含10 × 10 × 5的随机值元素。

一个n-D查找表块,包含两个正弦波输入和一个斜坡输入。它的输出连接到Scope块。

这两个x而且y表轴的索引为1、2、…10。的zAxis的索引为10,20,…, 50。访问查找表值x而且y两个正弦波块生成的索引,在前面的例子中,和az一个Ramp块生成的索引。

模拟之后,您将看到以下查找表报告。

而不是二维表格,链接力图生成显示以下表格:

三维查找表块的查找表覆盖率报告为一组二维表。

竖条表示精确z指数值:10、20、30、40、50。如果竖条是粗体,这表明至少有一个块输入等于它在模拟过程中所代表的确切索引值。单击条形图可获得该条形图所代表的确切索引值的覆盖率报告。

可以报告任何维度的查找表的查找表覆盖率。四维表的覆盖率被报告为三维集的集合,就像前面的例子一样。五维表被报告为三维集的集的集,等等。

块减少

所有模型覆盖率报告都指示了Simulink的状态金宝app块减少参数。在下面的示例中,设置强制压块复位

覆盖率报告的“仿真优化选项”部分,显示三个Simulink参数的状态。金宝app默认参数行为设置为可调,块缩减设置为强制关闭,条件分支优化设置为开启。

在下一个示例中,您启用了Simulink金宝app块减少参数,并且您没有设置强制压块复位

覆盖率报告的“仿真优化选项”部分,显示三个Simulink参数的状态。金宝app默认参数行为设置为可调,块缩减设置为开启,条件分支优化设置为开启。

考虑以下模型,其中模拟不执行MinMax1块,因为只有一个输入-In3

显示两个断开的MinMax块的模型。第一个MinMax块有两个输入和一个输出。第二个MinMax块有一个输入和一个输出。

如果你设置强制压块复位,该报告不包含此块的覆盖率数据,因为对MinMax1块的最小输入总是1

如果不设置强制压块复位,该报告不包含减少的块的覆盖率数据。

覆盖报告的减少块部分。通过块减少模型模拟设置:“ex_minmax_coverage/MinMax1”从覆盖率分析中消除的块。

关系边界

覆盖面板配置参数对话框中的关系边界覆盖率度量,软件在模型覆盖率报告中为该覆盖率支持的每个模型对象创建一个关系边界表。金宝app该表适用于模型对象中涉及的显式或隐式关系操作。有关更多信息,请参见:

下面的表显示了该关系的关系边界覆盖报告Input1 <= input2.表的外观取决于操作数数据类型。

整数

如果两个操作数都是整数(或者一个操作数是整数,另一个是布尔值),则表如下所示。

关系边界覆盖表:第1行显示input1 - input 2: 33%的覆盖率。第2行显示-1:0/51。第3行显示为0:51/51。第4行显示+1:0/51。

对于关系操作,例如operand_1< =operand_2

  • 第一行表示表单中的两个操作数operand_1-operand_2

  • 第二行表示在模拟过程中operand_1-operand_2等于-1。

  • 第三行表示在模拟过程中operand_1等于operand_2

  • 第四行表示在模拟过程中operand_1-operand_2等于1。

不动点

如果其中一个操作数为定点类型,而另一个操作数为定点类型或整数类型,则表如下所示。LSB表示最低有效位的值。有关更多信息,请参见精度(定点设计师).如果两个操作数具有不同的精度,则使用较小的精度值。

关系边界覆盖表:第1行显示input1 - input 2: 33%的覆盖率。第2行显示-LSB: 51/51。第3行显示为0:0/51。第4行显示+LSB: 0/51。

对于关系操作,例如operand_1< =operand_2

  • 第一行表示表单中的两个操作数operand_1-operand_2

  • 第二行表示在模拟过程中operand_1-operand_2等于lsb

  • 第三行表示在模拟过程中operand_1等于operand_2

  • 第四行表示在模拟过程中operand_1-operand_2等于LSB

浮点

如果其中一个操作数为浮点类型,则表将如下所示。托尔表示使用输入值和指定的公差计算的值。如果没有指定容差,则使用默认值。有关更多信息,请参见相关边界覆盖范围

关系边界覆盖表:第1行显示input1 - input 2: 50%的覆盖。第2行显示[-tol..0]: 51/51。第3行显示(0..托尔]:0/51。

对于关系操作,例如operand_1< =operand_2

  • 第一行表示表单中的两个操作数operand_1-operand_2

  • 第二行表示在模拟过程中operand_1-operand_2值在范围内(tol . . 0)

  • 第三行表示在模拟过程中operand_1-operand_2值在范围内(0 . . tol]模拟过程中。

该表的外观根据块中的关系操作符而变化。的值,取决于关系运算符operand_1-operand_2等于0是:

  • 从关系边界覆盖中排除。

  • 包括在关系边界之上的区域。

  • 包括在关系边界以下的区域。

关系操作符 报告格式 解释
= = (tol . . 0) 0被排除在外。
(0 . . tol]
! = (tol . . 0) 0被排除在外。
(0 . . tol]
< = (tol . . 0) 0包含在关系边界以下的区域中。
(0 . . tol]
< (tol . . 0) 0包含在关系边界以上的区域中。
(0 . . tol)
> = (tol . . 0) 0包含在关系边界以上的区域中。
(0 . . tol)
> (tol . . 0) 0包含在关系边界以下的区域中。
(0 . . tol]

的关系边界下面包含0< =但在关系边界之上<.该规则与决策覆盖率一致。例如:

  • 对于关系Input1 <= input2,则该决定为真input1小于或等于input2<而且被组合在一起。因此,0位于关系边界以下的区域。

  • 对于关系Input1 < input2,该决定只有当input1小于input2>而且被组合在一起。因此,0位于关系边界之上的区域。

饱和整数溢出分析

覆盖面板配置参数对话框中的饱和整数溢出覆盖率度量,软件在模型覆盖率报告中创建一个饱和度溢出分析表。属性为每个块创建表饱和整数溢出参数选择。

“溢出饱和”分析表列出了一个块在整数溢出时饱和的次数,表明了一个真实的决策。如果块在整数溢出时没有饱和,则该表表示错误的决定。未发生的结果显示在红色突出显示的表行中。

下面的图形显示饱和度溢出分析表极大极小发动机气体动力学分系统的混合与燃烧分系统中sldemo_fuelsys模型的例子。

最小最大块在整数溢出覆盖上接收50%饱和度。

要显示和突出显示有问题的块,单击包含块的饱和溢出分析表的部分顶部的块名。

信号范围分析

如果您选择信号范围覆盖率度量,软件在模型覆盖率报告的底部创建一个信号范围分析部分。本节列出模拟期间测量的模型中每个输出信号的最大和最小信号值。

快速访问信号范围分析报告信号范围链接在模型覆盖率报告顶部的非滚动区域中,如下面的sldemo_fuelsys范例模型报告。

每个块以分层方式报告;子块直接出现在父块下面。中的每个块名称信号范围报告是一个链接。例如,选择自我传感器链接以在其本机关系图中突出显示此块。

可变维信号的信号大小覆盖

如果您选择信号的大小,软件在模型覆盖报告中的信号范围数据之后创建可变信号宽度部分。本节列出了模型中具有可变大小信号的所有输出端口的最大和最小信号大小。它还列出了在模拟过程中测量的Simulink为该信号分配的内金宝app存。这个列表可以包括在模拟过程中大小不变的信号。

下面的示例显示覆盖率报告中的可变信号宽度部分。在本例中,Abs块信号大小从2到5不等,分配值为5。

每个块以分层方式报告;子块直接出现在父块下面。可变信号宽度列表中的每个块名称都是一个链接。单击该链接将在Simulink Editor中突出显示相应的块。金宝app经过分析,变尺寸信号具有更宽的线路设计。

金宝app设计验证器报道

如果您选择目标和限制条件,该分析收集所有的覆盖率数据金宝appSimulink设计验证器模型中的块。

有关其工作原理的示例,请打开sldvdemo_debounce_testobjblks模型。

该模型包含两个Test Objective块:

  • True块定义了信号值的属性2

  • 在蒙面目标子系统内部的边缘块描述了蒙面目标子系统中AND块的输出变化的属性21

金宝appSimulink设计验证器软件分析这个模型并产生一个包含实现特定测试目标的测试用例的控制模型。要查看原始模型是否达到了这些目标,可以模拟集束模型并收集模型覆盖数据。模型覆盖工具分析您在Test Objective块中指定的区间内的任何决策点或值。

在本例中,覆盖率报告显示您实现了True块的100%覆盖率,因为信号值为2至少有一次。信号值为214步中的6步。

对Edge块的输入信号实现了值真正的14步中的1步。