主要内容

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

测试生成工作流

模型验证与确认的一部分工作是生成能够全面评估模型行为的测试。该过程包括验证模型是否满足预期测试需求,并检查模型覆盖率以识别任何遗漏的测试场景。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 中执行基于需求的测试:

  1. 根据文本需求手动创建测试用例。

  2. 使用需求表将文本需求转换为规范模型。该模型作为可执行实体用于测试。有关如何构建规范模型并将其用于基于需求的测试的详细信息,请参阅使用规范模型进行基于需求的测试

  3. 使用 Simulink Design Verifier 为需求表中的每一行生成测试用例。在使用 Simulink Design Verifier 之前,请确认所有需求均一致且完整。

  4. 使用规范模型生成测试并将其与需求关联。有关详细信息,请参阅从 Requirements Table 块生成并导出测试

  5. 使用自定义模块或 API 定义预期需求条件作为测试目标。有关详细信息,请参阅模型需求使用观察者隔离验证逻辑

分析并解决模型覆盖缺失问题

您可以通过基于需求的输入输出设计模型来生成测试用例。测试用例有助于您验证设计模型是否准确反映原始需求。您可以在模型上运行这些测试用例,并检查输出结果是否一致。模型覆盖率可帮助您识别缺失的需求,并根据覆盖率度量突出显示改进测试套件的必要性。Simulink Design Verifier 提供工作流,通过生成针对模型覆盖率度量的测试来增强您的测试套件。这有助于检测设计中的不可达部分。

  1. 生成用于覆盖率度量的测试用例。重点生成针对条件/决策、MCDC(修正条件/决策覆盖率)及关系边界度量的测试用例。有关详细信息,请参阅生成模型决策覆盖率的测试用例Simulink Design Verifier 中的增强 MCDC 覆盖率。为模型和 C 函数明确定义这些度量。

  2. 使用模型覆盖率或自定义条件来检测任何死逻辑。评估并申述任何死逻辑。有关详细信息,请参阅死逻辑检测

  3. 实现顶层扩展工作流,通过额外的测试框架或"顶层扩展"模型包裹待测模型或子系统,从而生成填补现有测试覆盖率缺口的补充测试。有关详细信息,请参阅在 RLS 生成代码中实现缺失覆盖在自定义代码中实现缺失覆盖率

  4. Simulink Test™ 工作流中使用 Simulink Design Verifier 以实现完全覆盖。有关详细信息,请参阅在闭环仿真模型中实现缺失覆盖在参考模型中实现缺失覆盖

分析并解决代码覆盖率缺失问题

要验证设计模型是否符合需求,请运行测试用例,检查它们在相同输入下是否产生相同输出。使用 Simulink Coverage™,您可以识别任何未覆盖的目标。如果基于初始需求的测试用例未能实现完全覆盖,请使用 Simulink Design Verifier 扩展测试用例,以解决生成的代码中识别出的任何遗漏代码覆盖率问题。若覆盖率仍不完整,则需生成额外的测试用例或分析设计与需求以弥补缺口。此过程可帮助您实现全面覆盖。此外,Simulink Design Verifier 支持在模型覆盖率测试生成过程中记录预期输出,从而能够在软件闭环环境中对模型与生成的代码进行连续测试。

  1. 实现一个补充测试工作流,用于生成填补现有测试所遗留覆盖率缺口的测试用例。在 Simulink Test 工作流中使用 Simulink Design Verifier 以实现完全覆盖。有关详细信息,请参阅 为 Embedded Coder 生成的代码生成测试用例

  2. 记录模型覆盖率测试的预期输出,并将这些测试导出至 Simulink Test 以完成测试。有关详细信息,请参阅将测试用例导出到 Simulink Test

  3. 创建专门针对特定子系统相关函数的测试。检查这些测试是否全面评估了代码函数的功能和逻辑。有关如何为子系统生成测试用例的信息,请参阅为子系统生成测试用例

交叉产品交互

该表描述了 Simulink Design Verifier 与其他产品之间的交互方式,以提供测试环境:

产品交互相关信息
Simulink Coverage
  • 检查生成的测试用例的覆盖率报告

  • 过滤并调整目标

Simulink Test
  • 将生成的测试导出到 Simulink Test

  • 利用以下功能生成测试的工作流

    Simulink Test

    是:

    • 检查模型组件的测试

    • 添加缺失覆盖测试

Requirements Toolbox为需求表和链接生成测试用例从 Requirements Table 块生成并导出测试

另请参阅

主题