测试生成工作流
模型验证与确认的一部分工作是生成能够全面评估模型行为的测试。该过程包括验证模型是否满足预期测试需求,并检查模型覆盖率以识别任何遗漏的测试场景。Simulink® Design Verifier™ 通过自动生成测试用例,为实现这些步骤提供全面支持。该主题描述基于模型的测试中三个重要的活动。有关基于模型的测试的信息,请参阅使用 Simulink 进行基于模型的设计。
执行基于需求的测试
实现模型覆盖率
实现生成的代码覆盖率
在开发初期阶段,Simulink 工程从文本需求开始。随着开发进程的推进,您将需求逐步细化为规格说明书,并将其转化为代码实现。在建模后,生成测试需要两个关键步骤:
根据需求运行测试用例,以验证模型输出是否与预期输出一致。
通过创建测试用例来评估模型覆盖率,这些测试用例需覆盖模型的所有部分,并找出任何死逻辑。
请按照以下步骤验证模型是否满足其需求并完全覆盖其设计。此外,通过重用和扩展测试,您可以实现代码覆盖率,并验证模型与代码的行为是否保持一致。
兼容性注意事项
若模型需通过 Simulink Design Verifier 生成测试,则必须兼容Simulink Design Verifier 分析。例如,当求解器步长设置为 variable size 时,则模型不兼容。您可以运行检查来评估您的模型与 Simulink Design Verifier 的兼容性。有关详细信息,请参阅Simulink Design Verifier 检查。模型兼容性检查过程包含以下功能:模型不兼容生成测试。有关详细信息,请参阅检查模型兼容性。在这种情况下,可采用模块替换等方法使模型适合分析。有关详细信息,请参阅模块替换对测试生成的影响。
执行基于需求的测试
Simulink 工程从文本需求开始,这些需求作为基础框架用于创建规范模型。本规范模型是一个可执行实体,您可利用它通过 Simulink Design Verifier 和 Requirements Toolbox™ 执行基于需求的测试。要在 Simulink Design Verifier 中执行基于需求的测试:
根据文本需求手动创建测试用例。
使用需求表将文本需求转换为规范模型。该模型作为可执行实体用于测试。有关如何构建规范模型并将其用于基于需求的测试的详细信息,请参阅使用规范模型进行基于需求的测试。
使用 Simulink Design Verifier 为需求表中的每一行生成测试用例。在使用 Simulink Design Verifier 之前,请确认所有需求均一致且完整。
使用规范模型生成测试并将其与需求关联。有关详细信息,请参阅从 Requirements Table 块生成并导出测试。
使用自定义模块或 API 定义预期需求条件作为测试目标。有关详细信息,请参阅模型需求和使用观察者隔离验证逻辑。
分析并解决模型覆盖缺失问题
您可以通过基于需求的输入输出设计模型来生成测试用例。测试用例有助于您验证设计模型是否准确反映原始需求。您可以在模型上运行这些测试用例,并检查输出结果是否一致。模型覆盖率可帮助您识别缺失的需求,并根据覆盖率度量突出显示改进测试套件的必要性。Simulink Design Verifier 提供工作流,通过生成针对模型覆盖率度量的测试来增强您的测试套件。这有助于检测设计中的不可达部分。
生成用于覆盖率度量的测试用例。重点生成针对条件/决策、MCDC(修正条件/决策覆盖率)及关系边界度量的测试用例。有关详细信息,请参阅生成模型决策覆盖率的测试用例和Simulink Design Verifier 中的增强 MCDC 覆盖率。为模型和 C 函数明确定义这些度量。
使用模型覆盖率或自定义条件来检测任何死逻辑。评估并申述任何死逻辑。有关详细信息,请参阅死逻辑检测。
实现顶层扩展工作流,通过额外的测试框架或"顶层扩展"模型包裹待测模型或子系统,从而生成填补现有测试覆盖率缺口的补充测试。有关详细信息,请参阅在 RLS 生成代码中实现缺失覆盖和在自定义代码中实现缺失覆盖率。
在 Simulink Test™ 工作流中使用 Simulink Design Verifier 以实现完全覆盖。有关详细信息,请参阅在闭环仿真模型中实现缺失覆盖和在参考模型中实现缺失覆盖。
分析并解决代码覆盖率缺失问题
要验证设计模型是否符合需求,请运行测试用例,检查它们在相同输入下是否产生相同输出。使用 Simulink Coverage™,您可以识别任何未覆盖的目标。如果基于初始需求的测试用例未能实现完全覆盖,请使用 Simulink Design Verifier 扩展测试用例,以解决生成的代码中识别出的任何遗漏代码覆盖率问题。若覆盖率仍不完整,则需生成额外的测试用例或分析设计与需求以弥补缺口。此过程可帮助您实现全面覆盖。此外,Simulink Design Verifier 支持在模型覆盖率测试生成过程中记录预期输出,从而能够在软件闭环环境中对模型与生成的代码进行连续测试。
实现一个补充测试工作流,用于生成填补现有测试所遗留覆盖率缺口的测试用例。在 Simulink Test 工作流中使用 Simulink Design Verifier 以实现完全覆盖。有关详细信息,请参阅 为 Embedded Coder 生成的代码生成测试用例。
记录模型覆盖率测试的预期输出,并将这些测试导出至 Simulink Test 以完成测试。有关详细信息,请参阅将测试用例导出到 Simulink Test。
创建专门针对特定子系统相关函数的测试。检查这些测试是否全面评估了代码函数的功能和逻辑。有关如何为子系统生成测试用例的信息,请参阅为子系统生成测试用例。
交叉产品交互
该表描述了 Simulink Design Verifier 与其他产品之间的交互方式,以提供测试环境:
| 产品 | 交互 | 相关信息 |
| Simulink Coverage |
|
|
| Simulink Test |
|
|
| Requirements Toolbox | 为需求表和链接生成测试用例 | 从 Requirements Table 块生成并导出测试 |