主要内容

顶级模型覆盖率报告

方法来模拟模型运行按钮,动态仿真模块®覆盖™为命名的指定模型创建模型覆盖率报告model_name_cov.html.的模型覆盖率报告也会自动打开报道的细节窗格。模型覆盖率报告包含几个部分:

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

openExample (“ModelingAFaultTolerantFuelControlSystemExample”);

分析信息

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

  • 覆盖率数据信息

  • 模型信息

  • 利用信息(如果您从仿真软件测试™利用)

  • 仿真优化选项

  • 覆盖选项

聚合测试

如果您满足以下条件,就会出现聚合测试部分:

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

  • 在“结果资源管理器”中为累积的覆盖结果生成覆盖报告。

如果您通过仿真软件测试,聚合测试部分链接到关联的测试用例仿真软件测试经理。

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

对于聚合测试部分中的每次运行,都有到相应结果的链接仿真软件测试管理器或结果管理器。

聚合单元测试

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

被测试的每个单元都接收一个序号n,对被测单元的每个测试都接收一个序号的风格Un

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

报道总结

覆盖率摘要有两个子部分:

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

  • 总结—子系统结果汇总。要查看特定子系统的详细结果,请在Summary小节中单击子系统名称。

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

细节

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

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

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

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

过滤对象

筛选对象部分列出了模型中从覆盖率记录中筛选的所有对象,以及您为筛选那些对象指定的基本原理。如果筛选规则指定要筛选某一类型的所有块,那么所有这些块都会在这里列出。

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

模型的细节

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

的“详细信息”部分sldemo_fuelsys模型的例子。

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

子系统的细节

每个子系统细节部分包含子系统的测试覆盖结果的摘要,以及它所包含的子系统的列表。概述之后是关于块、图表和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%覆盖率的块的块详细信息部分。第一个发现链接元素的报告中的块详细信息部分有一个箭头下一个无法达到100%覆盖的块。

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

图表细节

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

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

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

报道细节MATLAB功能和动态仿真模块设计验证器功能

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

请注意

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

记录仿真软件设计校验™覆盖sldv。*由MATLAB函数调用的函数,以及任意仿真软件设计验证器块,选择目标和约束报道“配置参数”对话框中的“配置参数”。

下面的例子展示了MATLAB函数的覆盖细节,hFcnsInExternalEML,那就等于四仿真软件设计验证器功能。在本例中,用于hFcnsInExternalEML驻留在外部文件中。

这个例子还展示了仿真软件设计验证器以下功能的覆盖细节:

在覆盖率结果中,实现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永远不会计算为true。

  • 第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函数的模型覆盖

有关保险范围的更多信息仿真软件设计验证器功能,请参阅目标及限制

要求测试细节

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

要求测试细节部分包括:

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

  • 验证了测试-用于验证需求的测试。

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

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

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

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

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

  • 每个对象的Details部分列出了所有单个对象的圈复杂度数字。

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

决策分析

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

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

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

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

在Simulink画布中,饱和度块的“极限为正”显示为红色。

条件分析

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

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

MCDC分析

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

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

MCDC分析表的每一行表示块的特定输入的条件情况。输入的条件情况n的值是输入值的组合。输入n被称为决定输入条件的情况。更改输入的值n单独更改块输出的值。

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

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

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

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

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

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

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

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

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

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

选择将Simulink逻辑块视为短路选项,您希望MCDC覆盖率分析在何处接近您的测试用例为生成的代码(大多数高级语言短路逻辑表达式)实现的覆盖率程度。

累计覆盖

在您记录了连续的覆盖结果之后,您可以这样做访问、管理和聚合覆盖结果从覆盖结果资源管理器中。缺省情况下,每次仿真的结果都被保存并累积记录在报表中。

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

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

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

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

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

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

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

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

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

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

请注意

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

n维查找表

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

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

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

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

请注意

覆盖率报告仅生成查表的详细信息具有400或更少插值或外推间隔的查找表的映像。

为每个单元格插入或外推的值的数量(执行计数)在测试期间由分配给细胞的绿色阴影表示。六层绿色阴影中的每一层和所表示的执行计数的范围显示在表的一侧。

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

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

粗体网格线表示在模拟过程中至少有一个块输入等于它的确切索引值。单击边框可以显示该索引值的确切点击数。

下面的示例模型使用一个由10乘10乘5的元素组成的n-D Lookup Table块,其中填充了随机值。

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

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

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

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

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

竖条表示精确的z索引值:10、20、30、40、50。如果竖线为粗体,这表示在模拟过程中,至少有一个块输入与它所代表的确切索引值相等。单击一个栏以获得该栏所代表的确切索引值的覆盖率报告。

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

块减少

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

覆盖报告的模拟优化选项部分,显示三个Simulink参数的状态。默认参数行为设置为可调,块减少设置为强制关闭,条件分支优化设置为打开。

在下一个示例中,您启用了Simulink块减少参数,而您没有设置压块复位关闭

覆盖报告的模拟优化选项部分,显示三个Simulink参数的状态。默认参数行为设置为可调,块减少设置为开,条件分支优化设置为开。

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

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

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

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

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

关系边界

覆盖面板的“配置参数”对话框中,如果选择关系边界覆盖率度量,软件在模型覆盖率报告中为这个覆盖率所支持的每个模型对象创建一个关系边界表。该表适用于模型对象中涉及的显式或隐式关系操作。欲了解更多信息,请参见:

下表显示了关系的关系边界覆盖报告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模型的例子。

MinMax块在整数溢出覆盖时接收50%饱和。

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

信号范围分析

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

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

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

变维信号的信号尺寸覆盖

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

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

每个块都以分层的方式报告;子块直接出现在父块下面。“可变信号宽度”列表中的每个块名都是一个链接。点击链接会在Simulink编辑器中突出显示相应的块。经过分析,变尺寸信号具有更宽的线路设计。

动态仿真模块设计验证器报道

如果您选择目标和约束,该分析收集所有的覆盖率数据仿真软件设计验证器块。

要了解其工作原理,请打开sldvdemo_debounce_testobjblks模型。

这个模型包含两个Test Objective块:

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

  • 边缘块位于遮蔽目标子系统内部,它描述了遮蔽目标子系统中AND块的输出从何处更改的属性21

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

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

对边缘块的输入信号实现了值真正的14个时间步中的1个。

Baidu
map