主要内容

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

生成模型决策覆盖率的测试用例

构建示例模型

为此示例构建一个模型:

  1. 创建一个 Simulink® 模型。

  2. 将以下模块复制到空白模型窗口中:

    • 从 Sources 库中,Inport 模块启动其值由 Simulink Design Verifier™ 控制的输入信号。

    • 从源库中获取两个 Constant 模块作为 Switch 模块数据输入。

    • 来自信号路由库的 Switch 模块提供简单的逻辑。

    • 从 Sinks 库中,一个 Outport 模块接收输出信号。

  3. 在您的模型中,双击其中一个 Constant 模块并将其常量值参数指定为 2

  4. 连接各个模块以使您的模型类似于下图。

    Simulink model with 1 and 2 as input to Switch block and Out1 is the output.

  5. App 选项卡上,点击 App 部分右侧的箭头。

    模型验证、确认和测试下,点击 Design Verifier

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

  7. 在“配置参数”对话框中,选择求解器窗格。在求解器选择中:

    • 类型选项设置为定步长

    • 求解器选项设置为离散(无连续状态)

    Simulink Design Verifier 仅分析使用固定步长求解器的模型。

  8. 点击确定保存更改并关闭“配置参数”对话框。

  9. 使用名称 ex_generate_test_cases_example 保存您的模型。

检查示例模型的兼容性

每次 Simulink Design Verifier 分析模型时,在分析开始之前,软件都会执行兼容性检查。如果您的模型不兼容,软件将无法分析它。

在开始分析之前,您还可以确保您的模型与 Simulink Design Verifier 软件兼容:

  1. 打开 ex_generate_test_cases_example 模型。

  2. Design Verifier 选项卡上,点击检查兼容性

    该软件显示日志窗口,表明您的模型是否适合分析。

    您刚刚创建的模型是兼容的。

    Simulink Design Verifier Results Summary window.

如果模型部分兼容怎么办?

如果兼容性检查表明您的模型部分兼容,则您的模型至少包含一个 Simulink Design Verifier 不支持的对象。您可以分析部分兼容的模型,但默认情况下,不受支持的对象将被删除。分析结果可能不完整。

有关自动插桩的详细信息,请参阅 使用自动插桩处理不兼容问题

配置测试生成选项

配置 Simulink Design Verifier 以生成对 ex_generate_test_cases_example 模型实现 100%决策覆盖率的测试用例:

  1. 打开 ex_generate_test_cases_example 模型。

  2. Design Verifier 选项卡的模式部分中,选择测试生成

  3. 点击测试生成设置

  4. 在“配置参数”对话框的测试生成窗格中,将模型覆盖率目标参数设置为决策

    对于此示例,分析生成仅记录决策覆盖率的测试用例。

    测试套件优化参数默认设置为自动。如果要生成更少但更长的测试用例,请为测试套件优化参数选择 LongTestcases

  5. 点击确定保存更改并关闭“配置参数”对话框。

  6. 保存 ex_generate_test_cases_example 模型。

分析示例模型

Design Verifier 选项卡上,点击生成测试Simulink Design Verifier 分析您的模型以生成测试用例。

在分析过程中,“结果摘要”窗口显示分析的进度。它显示处理的测试目标的数量以及满足了哪些目标等信息。

查看分析结果

当软件完成分析时,“结果摘要”窗口将显示这些用于查看结果的选项。

Simulink Design Verifier Results Summary window.

以下部分介绍如何查看分析结果:

审查模型的分析结果

突出显示示例模型上的分析结果:

  1. ex_generate_test_cases_example 分析的结果摘要窗口中,点击在模型上突出显示分析结果

    Simulink model with a Switch block.

    Switch 模块以绿色突出显示,这表明 Switch 模块具有满足其测试目标的测试用例。

    Simulink Design Verifier 结果窗口打开。当您点击模型中的对象时,此窗口将发生变化,显示该对象的详细分析结果。默认情况下,Simulink Design Verifier 的“结果”窗口始终是最顶部的可见窗口。要允许窗口移动到其他窗口后面,点击 并清除始终在顶部

    Results window for Simulink Design Verifier analysis.

  2. 点击突出显示的 Switch 模块。

    Simulink Design Verifier 结果窗口表明分析针对两个测试目标生成了测试用例:

    • trigger > threshold

    • trigger < threshold

    Results window for Simulink Design Verifier analysis.

有关模型上突出显示的分析结果的更多信息,请参阅 突出显示模型结果

查看详细分析报告

创建详细的 HTML 分析报告:

  1. Simulink Design Verifier 结果摘要窗口的详细分析报告中,点击 HTML

    HTML 报告将在浏览器窗口中打开。

  2. 该报告包括以下内容目录。点击超链接可以导航至报告中的某个部分。

    Table of Contents for Simulink Design Verifier analysis report

  3. 目录中,点击 Summary 以显示报告的摘要章节。

    摘要章节列出了有关模型和目标状态(是否满足)的信息。

  4. 目录中,点击 Analysis Information 以显示分析信息章节。

    分析信息章节提供以下方面的信息:

    • 您所分析的模型。

    • 您为分析指定的选项。

    • 软件在分析过程中执行的近似值。

  5. 目录中,点击 Test Objectives Status 以显示报告的测试目标状态章节。

    该表表明,分析满足了与 ex_generate_test_cases_example 模型中的 Switch 模块相关的两个测试目标,并为此生成了两个测试用例。

  6. 在表格测试用例列下,点击 2 以显示测试用例 2 部分。

    本节提供有关分析生成的、为实现模型目标的测试用例的详细信息。当 Switch 模块将其第三个输入传递到其输出端口时,此测试用例实现测试目标 1。具体来说,软件确定 Switch 模块控制信号的值为 -1 会导致模块将其第三个输入作为模块输出。

有关 HTML 报告的更多信息,请参阅 查看结果

审查框架模型

要创建一个包含满足模型中测试目标的测试用例的框架模型,请在 Simulink Design Verifier 结果摘要窗口中点击创建框架模型

该软件创建一个名为 ex_generate_test_cases_example_harness 的框架模型。

Harness model ex_generate_test_cases_example_harness.

名为 Inputs 的 Signal Editor 模块包含测试用例。双击 Inputs 模块查看测试用例。从 Signal Editor 模块中,您可以使用测试用例仿真模型并生成模型覆盖率报告,如 仿真测试并生成模型覆盖率报告 中所述。

有关框架模型的更多信息,请参阅管理 Simulink Design Verifier 框架模型

如果分析生成许多测试用例.  如果您有一个大型模型,则分析可能会产生包含大量测试用例的框架模型。

生成更少的测试用例:

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

  2. 重新运行分析。

LongTestcases 优化中,分析生成更少但更长的测试用例,每个测试用例满足多个测试目标。

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

要使用框架模型中生成的测试用例来仿真框架模型:

  1. 在框架模型中,双击 Inputs 模块以打开“模块参数”对话框,然后点击“打开信号编辑器”按钮以打开“信号编辑器”对话框。

    Signal Editor block with In1 input signal.

  2. 在模型框架窗口中,点击全部运行

    该软件使用这两个测试用例仿真框架模型,收集模型覆盖率信息,并显示覆盖率报告。覆盖率报告表明测试用例对 ex_generate_test_cases_example 模型的决策覆盖率为 100%。

您还可以在不创建框架模型的情况下仿真模型。在 Simulink Design Verifier 日志窗口中,点击仿真测试并生成模型覆盖率报告

有关模型覆盖率的更多信息,请参阅顶层模型覆盖率报告 (Simulink Coverage)

查看 sldvData 文件

Simulink Design Verifier 数据文件是一个包含名为 sldvData 的结构体的 MAT 文件。该结构体存储了分析过程中收集和产生的所有数据。您可以使用数据文件进行自己的分析或生成自定义报告。

要查看数据文件,点击日志窗口中的数据文件名(在此示例中为 ex_generate_test_cases_example_sldvdata.mat)。当您点击数据文件名时,软件会在 MATLAB® 工作区中创建 sldvData 对象的副本,以便您查看和操作数据。

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

在结果摘要窗口中查看分析结果

只要您的模型保持打开,您就可以在结果摘要窗口中查看最近的 Simulink Design Verifier 分析的结果。

Design Verifier 选项卡的查看结果部分中,点击加载以前的结果结果摘要以查看结果。

对于任何 Simulink Design Verifier 分析,您都可以从“结果摘要”窗口执行这些任务。

任务了解详细信息

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

突出显示模型结果

生成详细分析报告。

查看结果

创建框架模型,或者在框架模型已经存在的情况下打开它。

如果在分析期间没有生成测试用例,则此选项不可用。

管理 Simulink Design Verifier 框架模型

查看数据文件。

管理 Simulink Design Verifier 数据文件

查看日志文件。

Simulink Design Verifier 分析基础知识

关闭模型后,您将无法再查看分析结果。

自定义测试生成

您可以使用 Test Condition 模块在分析过程中将模型中的信号限制为某些值。

  1. 在 MATLAB 命令提示符下,输入 sldvlib 以显示 Simulink Design Verifier 库。

  2. 打开目标和约束子库。

  3. Test Condition 模块从 Simulink Design Verifier 库拖到模型窗口,将其复制到模型中。

  4. 在模型窗口中,将 Test Condition 模块插入 InportSwitch 模块之间。

    Simulink model with a Switch block and a Test Condition block.

  5. 双击 Test Condition 模块来访问其属性。

    打开“模块参数”对话框。

  6. 框中,输入 [-0.1, 0.1]。在为该模型生成测试用例时,分析会限制信号值,将 Switch 模块控制端口输入到指定的范围内。

    Block Parameters window for Test Condition block.

  7. 点击确定保存更改并关闭“模块参数”对话框。

  8. 将您的模型保存为 ex_generate_test_cases_with_tc_block 并保持打开。

重新分析示例模型

使用 Test Condition 模块分析 ex_generate_test_cases_with_tc_block 模型。要观察 Test Condition 模块如何影响测试生成,请将此分析的结果与您在 分析示例模型 中获得的结果进行比较。

  1. Design Verifier 选项卡上,点击生成测试

    Simulink Design Verifier 软件显示一个日志窗口并开始分析您的模型以生成测试用例。当软件完成分析时,“结果摘要”窗口将显示用于查看结果的选项。

  2. 在结果摘要窗口中,点击 HTML 报告

  3. 要开始查看报告,请在目录中点击摘要

    摘要章节表明 Simulink Design Verifier 在模型中满足了两个测试目标。

  4. 目录中,点击分析信息。滚动到本章的底部,到“约束”部分。

    本节列出了您添加的 Test Condition 模块,以将 Switch 模块控制信号的值限制在区间[-0.1, 0.1] 内。

  5. 目录中,点击测试目标状态

    该表表明,通过生成的两个测试用例,Simulink Design Verifier 满足了 Switch 模块的两个测试目标。

  6. 在表格测试用例列下,点击 1

    本节提供有关软件为实现模型目标而生成的测试用例的详细信息。当 Switch 模块将其第三个输入传递到其输出端口时,此测试用例实现测试目标 1。尽管 Test Condition 模块将输入信号的范围限制在区间[-0.1, 0.1] 内,但软件确定 Switch 模块控制信号的值为 -0.1 可以满足这一目标。

  7. 为了确认测试用例实现 100% 的决策覆盖率,请打开框架模型。

  8. 双击输入模块以打开信号编辑器对话框。

  9. 在框架模型的工具条中,点击全部运行(覆盖率)

    Simulink 软件使用两个测试用例仿真框架模型,收集模型覆盖率信息,并显示覆盖率报告。报告的摘要部分表明 Simulink Design Verifier 生成的测试用例为您的示例模型实现了完整的决策覆盖率。

分析相互矛盾的模型

如果分析产生错误 The model is contradictory in its current configuration,则表示软件检测到模型中存在矛盾,因此无法分析该模型。

如果您的模型具有带有不正确参数的 Test Objective 模块,则可能会产生矛盾。例如,矛盾可以是这样的一个目标:当信号为常数 10 时,信号必须介于 0 和 5 之间。

如果软件检测到矛盾,所有先前的结果都将无效,并且软件会报告某些目标无法满足。

另请参阅

主题