主要内容

模型覆盖马铃薯功能

关于模型覆盖马铃薯功能

万博1manbetx®覆盖™软件模拟Simulink模型,并报告模型覆万博1manbetx盖数据的决定和条件的代码MATLAB函数块。模型覆盖仅支持MATLAB覆盖万博1manbetx®为代码生成配置的函数。

例如,考虑以下情况如果陈述:

If (x > 0 || y > 0) reset = 1;

如果声明包含两个条件的决定(x> 0y > 0).的万博1manbetx仿真软件覆盖软件验证在模型模拟期间拍摄的所有决策和条件。

模型覆盖类型马铃薯功能

模型覆盖的类型万博1manbetx仿真软件覆盖配置用于代码生成的MATLAB函数的软件记录是:

决策覆盖范围

在模拟期间,以下MATLAB函数块语句是测试决策覆盖范围的陈述:

  • 函数头-如果函数或局部函数被执行,决策覆盖率为100%。

  • 如果- 如果决策覆盖率为100%如果表达式的求值结果为真正的至少一次,而且至少一次。

  • 开关-决策覆盖率100%开关案件是采取的,包括秋季的案例。

  • - 如果等效的循环条件评估,则决策覆盖率为100%真正的至少一次,而且至少一次。

  • - 如果等效的循环条件评估,则决策覆盖率为100%真正的至少一次,评估至少一次。

条件和MCDC覆盖范围

在模拟过程中,在MATLAB函数块函数,对条件和MCDC覆盖率测试以下逻辑条件:

  • 如果声明的条件

  • 赋值语句中的逻辑表达式

万博1manbetx设计验证器报道

以下MATLAB功能在代码生成中处于活动状态万博1manbetx仿真软件设计校验™

当您指定时目标和约束覆盖度量报道窗格中的万博1manbetx仿真软件覆盖软件记录涵盖了这些功能。

每个函数都计算一个表达式expr, 例如,sldv.test(expr, 在哪里expr是一个有效的布尔Matlab表达式。万博1manbetx仿真软件设计验证器覆盖率度量表达式的时间步长expr计算结果为真正的

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

的覆盖率数据示例万博1manbetx仿真软件设计验证器在覆盖报告中的功能,参见万博1manbetxSimulink设计验证程序覆盖范围

关系边界覆盖范围

如果MATLAB功能块包含关系操作,则关系边界覆盖度量标准适用于此块。

如果MATLAB函数块多次调用包含关系操作的函数,关系边界覆盖将报告调用该函数的所有实例的累积结果。如果函数中的关系操作在不同的调用中使用不同类型的操作数,则关系边界覆盖对更严格的操作数类型使用容忍规则。例如,如果一个关系操作使用INT32.一个调用中的操作数,和双倍的在另一个呼叫中的操作数,关系边界覆盖范围使用公差规则双倍的操作数。

有关容忍规则和类型严格顺序的信息,请参阅关系边界覆盖范围

如何收取保险责任马铃薯功能

当你模拟你的模型时,万博1manbetx仿真软件覆盖软件可以收集用于代码生成的MATLAB函数的覆盖数据。您可以从模型覆盖范围报道应用程序。

您可以为MATLAB函数收集模型覆盖范围,如下所示:

  • 函数在一个MATLAB函数

  • 函数在一个外部MATLAB文件

    要收集外部MATLAB文件的覆盖范围,报道窗格中,选择MATLAB文件覆盖范围

  • 万博1manbetx仿真软件设计验证器功能:

    要收集这些功能的覆盖率,在报道窗格中,选择目标和约束覆盖度量。

下一节将为每种情况提供模型覆盖示例。

示例:模型覆盖马铃薯功能

模型覆盖MATLAB函数

万博1manbetx仿真软件覆盖软件测量模型覆盖范围MATLAB函数块。

以下模型包含两个MATLAB功能MATLAB函数布洛克:

在“配置参数”对话框中,单击求解器窗格中,在解算器的选择,仿真参数设置如下:

  • 类型- - - - - -固定步

  • 求解器- - - - - -离散(没有连续的状态)

  • 固定步长(基本样本时间)- - - - - -1

MATLAB函数Block包含两个函数:

  • 顶级功能,run_intersect_test,将两个矩形(一个固定,另一个移动)的坐标作为参数发送给rect_intersect

  • 本地功能,rect_intersect,测试两个矩形之间的交集。移动矩形的原点增加1在里面xy每次步骤的方向。

移动测试矩形的原点的坐标由持久数据表示X1y1.,它们都被初始化为-1.对于第一个样本,X1y1.两个增加到0.从那时起,模拟期间矩形参数的进展如下图所示。

固定矩形以粗体显示,左下方原点为(2、4)宽度和高度都是2。在时间t = 0,第一个测试矩形的原点为(0,0)宽度和高度都是2。对于每个后续的样本,测试矩形的原点增量为(1,1).矩形的采样时间t = 23.,4与测试矩形相交。

当地的函数rect_intersect检查它的两个矩形参数是否相交。每个参数由矩形(原点)的左下角坐标、宽度和高度组成。x左侧和右侧的值和y计算每个矩形的顶部和底部的值,并在嵌套中进行比较if - else决定。如果矩形相交,则函数返回1的逻辑值,如果它们没有。

模拟过程中的Scope输出,根据采样时间绘制返回值,确定采样时间的相交矩形23.,4

仿真后,模型覆盖率报告显示在浏览器窗口中。摘要在报告中,模型覆盖率的详细信息部分在模型的每个部分上报告。

模型覆盖报告MATLAB函数块表明,块本身与其功能不同的决定。

下面几节以相反的功能块-模型顺序检查示例模型的模型覆盖率报告。颠倒顺序可以帮助您理解每个部分顶部的摘要信息。

覆盖范围马铃薯run_intersect_test函数。模型覆盖范围MATLAB函数块功能run_intersect_test出现在函数的链接名称下。单击此链接打开编辑器中的函数。

以下链路函数名称是父级覆盖报告的链接MATLAB函数块,该块包含的代码run_intersect_test

该功能报告的上半部分总结了其模型覆盖结果。的覆盖率度量run_intersect_test包括决策,条件和MCDC覆盖范围。您可以通过检查代码来最好地了解这些指标run_intersect_test

清单中带有coverage元素的行用突出显示的行号进行标记:

  • 第1行接收关于顶级函数是否run_intersect_test是执行。

  • 第6行得到了决策覆盖如果陈述。

  • 第14行接收关于是否本地函数的决策覆盖率rect_intersect是执行。

  • 第27行和30条接收决策,条件和MCDC覆盖如果陈述和条件。

    这些行中的每一条都是列表后面的报告的主题。

    条件右1 <左2在第30行中以红色突出显示。这意味着在仿真期间没有针对其所有可能结果进行测试。究竟没有测试的结果是在第30行决定的报告中。

下面的部分显示了每个部分的覆盖率run_intersect_test行决定。每一行的覆盖率都以该行本身为标题,如果单击该行,将打开编辑器到指定行。

第1行的覆盖率。第1行的覆盖率指标是功能覆盖率数据的一部分run_intersect_test

为代码生成配置的每个MATLAB函数的第一行接收覆盖率分析,指示在响应调用时运行该函数的决策。覆盖run_intersect_test指示在模拟期间至少执行一次。

第6行的覆盖范围。决策分析表表示第6行的决定,如果isempty (x1),总共执行了八次。第一次执行,该决定评估为真正的,使run_intersect_test初始化其持久数据的值。剩下的七次决定执行,它评估到.因为两种可能的结果都发生了,所以决策覆盖率是100%。

第14行的覆盖率。决策分析表表示本地功能rect_intersect在测试期间执行,从而获得100%的覆盖率。

第27行的覆盖率。决策分析表表明第27行决定有两种可能的结果:真正的.八次执行中有五次,评估结果是.剩下的三次,它的值是真正的.因为两种可能的结果都发生了,所以决策覆盖率是100%。

条件分析表在第27行的决定上阐明了一些额外的光。因为这个决定包括一个由逻辑或(||)操作时,只有一个条件必须求值真正的来决定真正的.如果第一个条件求值为真正的,无需评估第二个条件。第一个条件,top1 ,进行了8次评估,结果是真正的两次。这意味着第二个条件仅评估六次。只有一个案例是真正的,这就是总数真正的据报道,第三个决定的事件发生决策分析表格

MCDC覆盖范围寻找发生的决策逆转,因为一个条件结果发生变化TF或者FT.的MCDC分析表列出导致决策逆转的条件的所有可能的结果组合。这个角色x用于指示与决策反转无关的条件结果。在模拟过程中没有实现的决策反转条件结果用一组括号标记。没有括号,因此所有的决策逆转结果都发生了,MCDC覆盖在第27行中的决策是完整的。

第30行的覆盖范围。第30行决定,If (right1 < left2 || right2 < left1) / /,嵌套在如果语句的第27行决定,仅当第27行决定是.因为第27行决定评估5次,第30行被计算了5次,其中3次是.因为都是这两者真正的实现了结果,第30行的决策覆盖率是100%。

因为第30行和第27行一样,有两个由逻辑OR操作符相关的条件(||),条件2只在条件1为时才被测试.因为条件1测试五次,条件2测试五次。其中,条件2测试真正的两次和三次,占这两次出现的真正的这一决定的结果。

因为第30行的第一个条件决定不测试真正的,这两种结果在该条件下都不会发生,第一个条件的条件覆盖以玫瑰色突出显示。MCDC覆盖也以同样的方式强调基于真正的结果的结果。

Run_Intersect_test的覆盖范围。细节选项卡,总结整个覆盖范围的指标run_intersect_test如所示,报告和重复函数。

覆盖率指标总结的结果可以用以下结论表示:

  • 报告了8个决策结果run_intersect_test在线报告:

    • 一个用于第1行(执行)

    • 两个用于第6行(真正的

    • 一个用于第14行(执行)

    • 两个用于第27行(真正的

    • 第30行2 (真正的).

    每一行的决策覆盖率显示100%的决策覆盖率。这意味着决策覆盖范围为run_intersect_test是八种可能结果中的八种,或100%。

  • 据报道有四种情况run_intersect_test在线报告中。线27和30各自具有两个条件,每个条件有两个条件结果(真正的),总共有8个条件的结果run_intersect_test.所有情况都呈阳性真正的除了第30行的结果之外的结果(右1 <左2).这意味着条件覆盖run_intersect_test是7 / 8,即88%。

  • 决策第27行和30行MCDC覆盖表分别列出了每种条件的两种决策逆转情况,总共有四种可能的逆转。只有对条件的评估发生变化的判定反转右1 <左2从第30行开始真正的在模拟过程中没有发生。这意味着在模拟期间测试了四分之三或75%的可能逆转病例,覆盖率为75%。

模型覆盖马铃薯外部文件中的函数

使用相同的模型MATLAB函数块的模型覆盖,假设MATLAB函数run_intersect_testrect_intersect存储在一个名为run_intersect_test.m

要在外部文件中收集MATLAB函数的覆盖率,请在报道窗格中,选择MATLAB文件覆盖范围

模拟之后,模型覆盖率报告摘要包含顶层模型和外部功能的部分。

的模型覆盖报告run_intersect_test.m报告与函数存储在的相同的覆盖数据MATLAB函数块。

有关MATLAB函数在外部文件中的模型覆盖报告的详细示例,请参阅外部Matlab文件报告报告

模型覆盖万博1manbetx设计验证器马铃薯功能

如果MATLAB代码包含以下任何一个万博1manbetx仿真软件设计验证器配置用于代码生成的函数,您可以测量覆盖范围:

对于本例,考虑以下模型,其中包含MATLAB函数块。

MATLAB函数块包含以下代码:

function y = fcn(u) %支持MATLAB代码生成万博1manbetx。sldv.condition(u > -30) sldv.test(u == 30) y = 1;

收集覆盖范围万博1manbetx仿真软件设计验证器MATLAB函数,上报道窗格中的其他指标中,选择目标和约束

仿真后,模型覆盖报告列出了覆盖范围sldv.conditionsldv.test功能。为sldv.condition,该表达式U> -30评估真正的51次。为sldv.test,该表达式u = = 30评估真正的51次。

有关模型覆盖数据的示例万博1manbetx仿真软件设计验证器块,看目标和制约因素覆盖范围