生成模型决策覆盖率的测试用例
构建示例模型
为此示例构建一个模型:
创建一个 Simulink® 模型。
将以下模块复制到空白模型窗口中:
在您的模型中,双击其中一个 Constant 模块并将其常量值参数指定为
2
。连接各个模块以使您的模型类似于下图。
在 App 选项卡上,点击 App 部分右侧的箭头。
在模型验证、确认和测试下,点击 Design Verifier。
在 Design Verifier 选项卡的准备部分中,从模式设置的下拉菜单中点击设置。
在“配置参数”对话框中,选择求解器窗格。在求解器选择中:
将类型选项设置为定步长。
将求解器选项设置为离散(无连续状态)。
Simulink Design Verifier 仅分析使用固定步长求解器的模型。
点击确定保存更改并关闭“配置参数”对话框。
使用名称
ex_generate_test_cases_example
保存您的模型。
检查示例模型的兼容性
每次 Simulink Design Verifier 分析模型时,在分析开始之前,软件都会执行兼容性检查。如果您的模型不兼容,软件将无法分析它。
在开始分析之前,您还可以确保您的模型与 Simulink Design Verifier 软件兼容:
打开
ex_generate_test_cases_example
模型。在 Design Verifier 选项卡上,点击检查兼容性。
该软件显示日志窗口,表明您的模型是否适合分析。
您刚刚创建的模型是兼容的。
如果模型部分兼容怎么办?
如果兼容性检查表明您的模型部分兼容,则您的模型至少包含一个 Simulink Design Verifier 不支持的对象。您可以分析部分兼容的模型,但默认情况下,不受支持的对象将被删除。分析结果可能不完整。
有关自动插桩的详细信息,请参阅 使用自动插桩处理不兼容问题。
配置测试生成选项
配置 Simulink Design Verifier 以生成对 ex_generate_test_cases_example
模型实现 100%决策覆盖率的测试用例:
打开
ex_generate_test_cases_example
模型。在 Design Verifier 选项卡的模式部分中,选择测试生成。
点击测试生成设置。
在“配置参数”对话框的测试生成窗格中,将模型覆盖率目标参数设置为决策。
对于此示例,分析生成仅记录决策覆盖率的测试用例。
测试套件优化参数默认设置为自动。如果要生成更少但更长的测试用例,请为测试套件优化参数选择 LongTestcases。
点击确定保存更改并关闭“配置参数”对话框。
保存
ex_generate_test_cases_example
模型。
分析示例模型
在 Design Verifier 选项卡上,点击生成测试。Simulink Design Verifier 分析您的模型以生成测试用例。
在分析过程中,“结果摘要”窗口显示分析的进度。它显示处理的测试目标的数量以及满足了哪些目标等信息。
查看分析结果
当软件完成分析时,“结果摘要”窗口将显示这些用于查看结果的选项。
以下部分介绍如何查看分析结果:
审查模型的分析结果
突出显示示例模型上的分析结果:
在
ex_generate_test_cases_example
分析的结果摘要窗口中,点击在模型上突出显示分析结果。Switch 模块以绿色突出显示,这表明 Switch 模块具有满足其测试目标的测试用例。
Simulink Design Verifier 结果窗口打开。当您点击模型中的对象时,此窗口将发生变化,显示该对象的详细分析结果。默认情况下,Simulink Design Verifier 的“结果”窗口始终是最顶部的可见窗口。要允许窗口移动到其他窗口后面,点击
并清除始终在顶部。
点击突出显示的 Switch 模块。
Simulink Design Verifier 结果窗口表明分析针对两个测试目标生成了测试用例:
trigger > threshold
trigger < threshold
有关模型上突出显示的分析结果的更多信息,请参阅 突出显示模型结果。
查看详细分析报告
创建详细的 HTML 分析报告:
在 Simulink Design Verifier 结果摘要窗口的详细分析报告中,点击 HTML。
HTML 报告将在浏览器窗口中打开。
该报告包括以下内容目录。点击超链接可以导航至报告中的某个部分。
在目录中,点击
Summary
以显示报告的摘要章节。摘要章节列出了有关模型和目标状态(是否满足)的信息。
在目录中,点击
Analysis Information
以显示分析信息章节。分析信息章节提供以下方面的信息:
您所分析的模型。
您为分析指定的选项。
软件在分析过程中执行的近似值。
在目录中,点击
Test Objectives Status
以显示报告的测试目标状态章节。该表表明,分析满足了与
ex_generate_test_cases_example
模型中的 Switch 模块相关的两个测试目标,并为此生成了两个测试用例。在表格测试用例列下,点击
2
以显示测试用例 2 部分。本节提供有关分析生成的、为实现模型目标的测试用例的详细信息。当 Switch 模块将其第三个输入传递到其输出端口时,此测试用例实现测试目标 1。具体来说,软件确定 Switch 模块控制信号的值为 -1 会导致模块将其第三个输入作为模块输出。
有关 HTML 报告的更多信息,请参阅 查看结果。
审查框架模型
要创建一个包含满足模型中测试目标的测试用例的框架模型,请在 Simulink Design Verifier 结果摘要窗口中点击创建框架模型。
该软件创建一个名为 ex_generate_test_cases_example_harness
的框架模型。
名为 Inputs 的 Signal Editor 模块包含测试用例。双击 Inputs
模块查看测试用例。从 Signal Editor 模块中,您可以使用测试用例仿真模型并生成模型覆盖率报告,如 仿真测试并生成模型覆盖率报告 中所述。
有关框架模型的更多信息,请参阅管理 Simulink Design Verifier 框架模型。
如果分析生成许多测试用例. 如果您有一个大型模型,则分析可能会产生包含大量测试用例的框架模型。
生成更少的测试用例:
将测试套件优化参数设置为 LongTestcases。
重新运行分析。
在 LongTestcases 优化中,分析生成更少但更长的测试用例,每个测试用例满足多个测试目标。
仿真测试并生成模型覆盖率报告
要使用框架模型中生成的测试用例来仿真框架模型:
在框架模型中,双击
Inputs
模块以打开“模块参数”对话框,然后点击“打开信号编辑器”按钮以打开“信号编辑器”对话框。在模型框架窗口中,点击全部运行。
该软件使用这两个测试用例仿真框架模型,收集模型覆盖率信息,并显示覆盖率报告。覆盖率报告表明测试用例对
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 模块在分析过程中将模型中的信号限制为某些值。
在 MATLAB 命令提示符下,输入
sldvlib
以显示 Simulink Design Verifier 库。打开目标和约束子库。
将 Test Condition 模块从 Simulink Design Verifier 库拖到模型窗口,将其复制到模型中。
在模型窗口中,将 Test Condition 模块插入 Inport 和 Switch 模块之间。
双击 Test Condition 模块来访问其属性。
打开“模块参数”对话框。
在值框中,输入
[-0.1, 0.1]
。在为该模型生成测试用例时,分析会限制信号值,将 Switch 模块控制端口输入到指定的范围内。点击确定保存更改并关闭“模块参数”对话框。
将您的模型保存为
ex_generate_test_cases_with_tc_block
并保持打开。
重新分析示例模型
使用 Test Condition 模块分析 ex_generate_test_cases_with_tc_block
模型。要观察 Test Condition 模块如何影响测试生成,请将此分析的结果与您在 分析示例模型 中获得的结果进行比较。
在 Design Verifier 选项卡上,点击生成测试。
Simulink Design Verifier 软件显示一个日志窗口并开始分析您的模型以生成测试用例。当软件完成分析时,“结果摘要”窗口将显示用于查看结果的选项。
在结果摘要窗口中,点击 HTML 报告。
要开始查看报告,请在目录中点击摘要。
摘要章节表明 Simulink Design Verifier 在模型中满足了两个测试目标。
在目录中,点击分析信息。滚动到本章的底部,到“约束”部分。
本节列出了您添加的 Test Condition 模块,以将 Switch 模块控制信号的值限制在区间[-0.1, 0.1] 内。
在目录中,点击测试目标状态。
该表表明,通过生成的两个测试用例,Simulink Design Verifier 满足了 Switch 模块的两个测试目标。
在表格测试用例列下,点击 1。
本节提供有关软件为实现模型目标而生成的测试用例的详细信息。当 Switch 模块将其第三个输入传递到其输出端口时,此测试用例实现测试目标 1。尽管 Test Condition 模块将输入信号的范围限制在区间[-0.1, 0.1] 内,但软件确定 Switch 模块控制信号的值为 -0.1 可以满足这一目标。
为了确认测试用例实现 100% 的决策覆盖率,请打开框架模型。
双击输入模块以打开信号编辑器对话框。
在框架模型的工具条中,点击全部运行(覆盖率)。
Simulink 软件使用两个测试用例仿真框架模型,收集模型覆盖率信息,并显示覆盖率报告。报告的摘要部分表明 Simulink Design Verifier 生成的测试用例为您的示例模型实现了完整的决策覆盖率。
分析相互矛盾的模型
如果分析产生错误 The model is contradictory in its current configuration
,则表示软件检测到模型中存在矛盾,因此无法分析该模型。
如果您的模型具有带有不正确参数的 Test Objective 模块,则可能会产生矛盾。例如,矛盾可以是这样的一个目标:当信号为常数 10 时,信号必须介于 0 和 5 之间。
如果软件检测到矛盾,所有先前的结果都将无效,并且软件会报告某些目标无法满足。