Main Content

本页采用了机器翻译。点击此处可查看英文原文。

分析模型

关于此示例

以下部分描述了一个示例模型,巡航控制测试生成。本示例说明如何使用Simulink® Design Verifier™生成实现完整模型覆盖率的测试用例。通过这个例子,你将学会如何使用Simulink Design Verifier分析模型并解释结果。

打开模型

要打开巡航控制测试生成模型,请在 MATLAB® 提示符下输入:

openExample('sldv/CruiseControlTestGenerationExample',...
'supportingFile', 'sldvdemo_cruise_control');

生成测试用例

运行分析

要为巡航控制测试生成模型生成测试用例,点击生成测试

Simulink Design Verifier 开始分析模型以生成测试用例,并打开 Simulink Design Verifier 结果摘要窗口。“结果摘要”窗口显示显示分析进度的运行日志。

如果您需要在分析运行时终止分析,点击“停止”。软件会询问您是否想要产生结果。如果您点击“”,软件将根据迄今为止获得的结果创建一个数据文件。数据文件的路径名出现在“结果摘要”窗口中。

数据文件是一个包含名为 sldvData 的结构体的 MAT 文件。该结构体存储软件在分析过程中收集和产生的数据。

有关更多信息,请参阅 管理 Simulink Design Verifier 数据文件

生成分析结果

Simulink Design Verifier完成对sldvdemo_cruise_control模型的分析时,“结果摘要”窗口会显示几个选项。他们之中有一些是:

  • 在模型上突出显示分析结果

  • 详细分析报告:(HTML)(PDF)

  • 创建框架模型

  • 仿真测试并生成模型覆盖率报告

  • 将测试用例/反例保存到电子表格中

注意

当您分析其他模型时,根据分析结果,您可能会看到一个选项子集。

以下部分详细描述了这些选项。

在模型上突出显示分析结果

Simulink Design Verifier结果摘要窗口中,如果点击在模型上突出显示分析结果,软件将根据分析结果以三种不同的颜色突出显示模型中的对象:

当您突出显示模型上的分析结果时,Simulink Design Verifier 结果检查器将打开。当您点击模型中具有分析结果的对象时,结果检查器将显示该对象的结果摘要。

绿色的:目标达成.  绿色轮廓表示分析针对该模块的所有目标生成了测试用例。如果该模块是子系统或Stateflow®原子子图,则绿色轮廓表示分析为与子对象相关的所有目标生成了测试用例。

例如,在 sldvdemo_cruise_control模型中,绿色轮廓表示 PI 控制器子系统满足所有测试目标。结果检查器列出了 PI 控制器子系统的两个满足的测试目标。

橙色:目标未定.  橙色轮廓表示分析无法确定目标是否可满足。这种情况可能发生在以下情况:

  • 分析超时

  • 该软件无需生成测试用例即可满足测试目标,因为:

    • 自动桩件错误

    • 分析引擎的局限性

红色的:目标无法满足.  红色轮廓表示分析发现了一些无法生成测试用例的目标,很可能是由于模型中无法访问的设计元素。

在下面的例子中,输入 2 始终满足 Switch模块的标准,因此 Switch模块永远不会通过输入 3 的值。

详细分析报告:(HTML)(PDF)

Simulink Design Verifier结果摘要窗口中,如果您点击HTML上的详细分析报告:(HTML)(PDF),软件保存然后打开分析的详细报告。报告的路径是:

<current_folder>/sldv_output/...
     sldvdemo_cruise_control/sldvdemo_cruise_control_report.html

HTML 报告包括以下章节。

有关每个报告章节的描述,请参阅:

概括.  目录中,点击摘要以显示摘要章节,其中包含分析信息子部分下的以下信息:

  • 模型名称

  • 发布和校验和信息

  • 分析模式(测试生成、属性证明、设计错误检测)

  • 分析状态

  • 分析时长(秒)

摘要 下的 Objective Status 子部分显示已满足的目标数量。

分析信息.  目录中,点击分析信息以显示有关所分析模型和分析选项的信息。您可以点击其中任意一个选项来了解有关模型分析的更多信息。

测试目标状态.  目录中,点击Test Objectives Status以显示满足的目标表。下图显示了巡航控制测试生成模型中满足的目标的部分列表。

目标状态

满足的目标 表列出了该模型的以下信息:

  • # — 目标编号

  • 类型 — 目标类型

  • 模型项目 —模型中用于测试目标的元素。单击此链接可以显示突出显示此元素的模型。

  • 描述 —目标描述

  • 测试用例 — 实现目标的测试用例。单击此链接可获取有关该测试用例的更多信息。

在目标32 的行中,点击测试用例编号 (5) 以显示有关报告的 测试用例 章节中测试用例5 的更多信息。

测试用例5

在这个例子中,测试用例5 满足一个目标,即积分结果大于或等于 Discrete-Time Integrator模块中的上限 T。表格列出了从时间 0 到时间 0.06 的六个信号的值。

模型项目.  目录中,点击模型项目以查看定义覆盖率目标的模型中每个项目的详细信息。该表包括分析结束时目标的状态。单击表中的链接可查看有关满足目标的详细信息。

型号项目 - 控制器/开关3

型号项目 - 控制器/开关2

测试用例.  目录中点击测试用例可以显示每个生成的测试用例的详细信息,包括:

  • 执行测试用例的时间长度

  • 已达成目标的数量

  • 关于已实现目标的详细信息

  • 输入数据

有关示例,请参阅 测试目标状态 中的测试用例5 部分。

创建框架模型

Simulink Design Verifier 结果摘要窗口中,如果点击创建框架模型,软件将创建并打开一个名为 sldvdemo_cruise_control_harness 的框架模型。

框架模型包含以下模块:

  • 测试用例解释模块是一个DocBlock模块,用于记录生成的测试用例。双击Test Case Explanation 模块可以查看每个测试用例测试用例满足的目标的描述。

  • Test Unit 模块是一个Subsystem模块,其中包含软件分析的原始模型的副本。双击Test Unit 模块以查看其内容并确认它是巡航控制测试生成模型的副本。

    注意

    您可以配置框架模型以使用 Model模块而不是使用子系统来引用您正在分析的模型。在配置参数对话框的 Design Verifier > Results窗格中,选择 分析后生成单独的框架模型生成的框架中的引用输入模型

  • 输入模块是一个包含生成的测试用例信号的Signal Builder模块。双击输入模块打开信号生成器对话框并查看八个测试用例信号。

  • Size-Type模块是一个将信号从输入模块传输到Test Unit 模块的子系统。该模块验证信号的大小和数据类型是否与Test Unit 模块一致。

信号生成器对话框包含八个测试用例。

  1. 要查看测试用例5,请从 活动组 列表中选择 Test Case 5

    在测试用例7 的 0.01 秒处:

    • enable 和 inc 信号保持为 1。

    • 制动和减速信号保持为 0。

    • 置位信号从1变为0。

    • 速度信号从100转变为0。

    Signal Builder模块中,信号组满足测试用例解释模块中描述的测试目标。

  2. 为了确认 Simulink Design Verifier 实现了完整的模型覆盖率,请使用所有测试用例来仿真框架模型。在信号生成器对话框中,点击全部运行并得出覆盖率 按钮

    Simulink 软件仿真了所有测试用例。Simulink Coverage™ 软件收集框架模型的覆盖率数据并显示覆盖率报告。报告摘要显示,sldvdemo_cruise_control_harness模型实现了100%的覆盖率。

    概括

仿真测试并生成模型覆盖率报告

Simulink Design Verifier结果摘要窗口中,如果点击仿真测试并生成模型覆盖率报告,软件将仿真模型并为sldvdemo_cruise_control模型生成覆盖率报告。软件使用以下名称存储该报告:

<current_folder>/sldv_output/sldvdemo_cruise_control/...
		sldvdemo_cruise_control_report.html

当您点击“全部运行并得出覆盖率”以框架模型中仿真测试时,您可能会看到此覆盖率报告与您为模型本身生成的报告之间存在以下差异:

  • 框架模型覆盖率报告可能包含额外的时间步。当您收集框架模型的覆盖率时,模型停止时间等于最长测试用例的停止时间。因此,当您仿真较短的测试用例时,您可能会获得额外的覆盖率。

  • 由于框架模型的结构体,框架模型中测试单元子系统的圈复杂度覆盖率可能与模型本身的覆盖率不同。

将测试用例/反例保存到电子表格

如果您希望将生成的测试用例或反例保存在电子表格中,点击Simulink Design Verifier结果摘要窗口中的将测试用例/反例保存到电子表格中

合并测试用例

如果您希望查看合并为较少数量测试用例的结果,请将 测试套件优化 参数设置为 LongTestcases 。当您使用 LongTestcases 优化时,分析会生成更少但更长的测试用例,每个测试用例都能满足多个测试目标。

打开sldvdemo_cruise_control模型并使用LongTestcases优化重新运行分析:

  1. Design Verifier 选项卡的 准备 部分中,从模式设置下拉菜单中点击设置

  2. 在配置参数对话框中,在左侧的 选择 树中,在 Design Verifier 类别下,选择 测试生成

  3. 测试套件优化 参数设置为 LongTestcases

  4. 单击应用OK关闭配置参数对话框。

  5. sldvdemo_cruise_control模型中,双击标有 运行 的模块。

  6. 在结果摘要窗口中,点击创建框架模型

    框架模型中, Signal Builder模块和测试用例解释模块现在包含一个较长的测试用例,而不是之前在 生成测试用例 中创建的八个较短的测试用例。

  7. 点击全部运行并得出覆盖率来收集覆盖率。

    分析仍然满足全部 34 个目标。