主要内容

状态流程图的覆盖类型

圈复杂度Stateflow图表

圈复杂度是一种基于控制流程图中的边缘、节点和组件的软件模块复杂性的度量。它指示了您需要测试模块的次数。

圈复杂度的计算如下:

CC = E - N + p

在哪里CC是圈复杂度,E是边的数量,N是节点数,和p是分量的数量。

在Model Coverage工具中,每个决策都完全等效于一个控制流节点,每个决策结果都等效于一个控制流边缘。控制流程图中的任何附加结构都将被忽略,因为它贡献的节点数与边数相同,因此对复杂性计算没有影响。因此,圈复杂度可以表示为:

CC =结果-决定+ p

出于分析的目的,每个图表都算作一个单独的组成部分。

决策范围Stateflow图表

决策覆盖从基本决策的角度解释模型执行,其中行为或执行必须从一组相互排斥的结果中获得一个结果。

请注意

对决策对象的完全覆盖意味着每个决策至少有一个可能结果的出现。

决策属于基于其内容或属性做出决策的对象。下表列出了为状态流的模型覆盖记录的决策®拥有它们的对象。表格后面的部分描述了这些决策及其可能的结果。

对象

可能的决策

图表

如果图表是触发的Simulink万博1manbetx®块,它必须决定是否执行它的块。

如果一个图表包含排他(OR)子状态,它必须决定执行它的哪个状态。

状态

如果一个状态是包含排他(OR)子状态的超状态,它必须决定执行哪个子状态。

如果一个州有事件名称动作(可能包括时间逻辑运算符),状态必须决定是否执行这些动作。

过渡

如果转换是条件转换,则必须决定是否退出其活动源状态或结,并进入另一状态或结。

图表作为触发万博1manbetx块的决定

如果图表是Simulink模型中的触发块,则将测试执行该块的决定。万博1manbetx如果没有触发块,则没有执行块的决策,并且决策覆盖率的测量不适用(NA).

包含排他性或次州决定的图表

如果图表包含排他(OR)子状态,则测试执行哪个子状态的决定。如果图表只包含并行的AND基态,则此覆盖测量不适用(NA).

包含排他性或次州决定的超州

由于图表是按层次结构从上到下处理的,因此排他(OR)子状态进入、退出和执行等过程有时由父级超状态决定。

请注意

超状态的决策覆盖仅适用于排他(OR)次状态。一个超级国家不为平行(AND)次国家做决定。

由于超状态必须决定要处理哪个排他性(OR)次状态,因此超状态的决策结果的数量就是它包含的排他性(OR)次状态的数量。在接下来的例子中,要处理哪个子状态的选择可以出现在三种可能的上下文中。

请注意

隐式转换在以下示例中以虚线显示。

上下文 例子 做出的决定

主动打电话给

一个A1是活跃的。

  • 状态A和B的父进程必须决定处理这些状态中的哪一个。这个决定属于家长。因为A是活动的,所以它被处理。

  • 状态A,状态的父结点A1A2,必须决定处理这些状态中的哪一种。这个决定属于州aA1是活动的,它被处理。

在处理状态时A1,测试所有的外向转换。这个决定属于转换,而不属于父状态a。在本例中,由条件标记的转换C2测试并决定是否将过渡到A2与否。

隐式次状态退出

转换发生时,源状态为超状态A,终点状态为状态B。

如果超状态有两个排他性(OR)次状态,则由超状态A决定由哪个次状态执行从次状态到超状态的隐式转换。

带有历史交叉点的次州条目

历史节点记录了在超态退出之前哪个子态最后活跃。

如果该超状态成为一个或多个转换的目的地,历史节点将决定进入哪个先前活动的子状态。

有关更多信息,请参见州详情报告组

状态为On Event_Name动作语句决策

一种具有event_name操作语句必须决定是根据指定事件的接收执行该语句,还是在使用时间逻辑运算符时根据指定事件的累积执行该语句。

条件转移决策

条件转换是带有触发事件和/或保护条件的转换。在从一种状态到另一种状态的有条件转换中,退出一种状态并进入另一种状态的决定取决于转换本身。

请注意

只有条件转换才会得到决策覆盖。没有决策的转换不适用于决策覆盖。

保险范围Stateflow图表

条件覆盖报告构成转换决策的各个子条件或状态和转换中的赋值语句中的逻辑表达式的所有可能结果的实现程度。

例如,对于一个转换的决策[A & B & C],条件覆盖率报告了每个子条件A、B和C的真和假的发生情况。这会导致八种可能的结果:三个子条件中的每一个都是真和假。

结果 一个 B C
1 T T T
2 T T F
3. T F T
4 T F F
5 F T T
6 F T F
7 F F T
8 F F F

有关更多信息,请参见过渡详情报告组

MCDC的覆盖范围Stateflow图表

Modified Condition Decision/Coverage (MCDC)选项报告了测试对发生事件的覆盖范围,在这些事件中,改变逻辑表达式中的单个子条件会导致整个表达式从真变为假或从假变为真。

例如,如果转换在条件[上执行C1 c2 c3 | c4 c5], MCDC报告显示了五个子条件中的每一个子条件的实际发生情况(C1 c2 c3 c4 c5),其中将其结果由真变为假可以将整个条件的结果由真变为假。

有关边界覆盖范围Stateflow图表

如果状态流程图中的转换涉及关系操作,则会接收关系边界覆盖。有关更多信息,请参见相关边界覆盖范围

万博1manbetx设计验证器覆盖Stateflow图表

你可以使用下面的方法万博1manbetxSimulink设计验证器™状态流程图中的函数:

如果你没有万博1manbetxSimulink设计验证器许可证,您可以为包含这些功能的状态流图收集模型覆盖率,但是不能使用万博1manbetxSimulink设计验证器软件

当您指定目标和限制条件的覆盖率度量报道窗格中的“配置参数”对话框,则万博1manbetx仿真软件覆盖™软件记录这些功能的覆盖范围。

每个函数求一个表达式的值expr,例如,sldv.test (expr,在那里expr是否有有效的布尔MATLAB®表达式。万博1manbetxSimulink设计验证器覆盖率度量表达式的时间步数expr计算结果为真正的

如果expr真正的至少有一次,万博1manbetxSimulink设计验证器该功能的覆盖率为100%。否则,万博1manbetx仿真软件覆盖软件报告该功能的覆盖率为0%。

考虑一个包含以下状态流图的模型:

状态流程图被命名为“状态1”,并使用Simulink Design Verifier。万博1manbetx

收取保险万博1manbetxSimulink设计验证器函数,在报道窗格中,选择目标和限制条件

模拟之后,模型覆盖率报告列出的覆盖率sldv.conditionsldv.assumesldv.prove,sldv.test功能。

所有四个Simul万博1manbetxink Design Verifier覆盖率指标报告100%的覆盖率(1 / 1的目标结果满足)。