主要内容

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

在仪表板中管理工程工件以进行分析

当您使用基于模型的设计来开发和测试软件单元时,请使用仪表板来评估单元测试活动的状态和质量。通过在需求、模型设计元素和测试之间建立可追溯性链接,您可以衡量需求的实现和验证程度。仪表盘分析此可追溯性信息,并提供有关这些测试工件的可追溯性、状态和结果的详细度量测量。

仪表板中的每个度量都衡量模型质量的不同方面,并反映了行业认可的软件开发标准(例如 ISO 26262 和 DO-178C)中的指导原则。要监控仪表板中模型的质量,请在工程中维护您的工件并遵循以下注意事项。

Model Testing Dashboard showing results for unit cc_DriverSwRequest

管理工程中的工件文件

要分析仪表板中的活动,请将您的设计和测试工件存储在工程中。有关如何开始工程的信息,请参阅 创建工程以使用模型设计和模型测试仪表板

这些度量可以分析的工件类型包括:

  • 模型

  • 模型使用的库

  • 您在Requirements Toolbox™中创建的需求

  • 您在 Simulink® Test™ 中创建的测试

  • 已执行测试的测试结果

注意

虽然仪表板会分析工程文件夹中的所有工件,但只有与度量直接相关的工件才会导致度量结果过时。例如,如果您对测试用例进行更改,仪表板可以识别出测试度量结果已过时。但是,如果您对测试用例所测试的模型进行更改,仪表板将无法识别测试度量结果是否因该更改而过时。

为仿真缓存和代码生成指定不同的根文件夹

默认情况下,工程使用同一个根文件夹作为仿真缓存文件夹和代码生成文件夹。如果可能,请在工程中为仿真缓存文件夹和代码生成文件夹使用不同的根文件夹。当您指定不同的根文件夹时,仪表板不再需要跟踪仿真缓存文件夹的更改。

要查看工程的缓存文件夹设置,请在工程选项卡的环境部分中,点击设置。然后,在 Simulink 部分,查看仿真缓存文件夹代码生成文件夹

变更跟踪的行为仅取决于工程设置。自定义操作不会影响变更跟踪行为。例如,仪表板不会检查 Simulink.fileGenControl 指定的根文件夹。

为工程启用工件跟踪

当您在工程中编辑和保存工件时,仪表板需要跟踪这些更改,以启用工件跟踪、跟踪派生工件并检测过时的度量结果。默认情况下,首次在控制面板中打开工程时,控制面板会要求您启用工件跟踪。点击启用并继续以允许仪表板跟踪工具输出,从而检测过时的度量结果。

您还可以通过“数字线程设置”对话框手动启用工件追踪。打开模型设计或模型测试仪表板应用程序,然后在仪表板工具栏中,点击可追溯性选项卡,然后点击设置。在“数字线程设置”对话框中,选择跟踪工具输出

有关仪表板如何分析工件和检测过时的度量结果的信息,请参阅 利用数字线程监控工件可追溯性并检测过时结果

追溯工件至单位和组件

工程面板显示与当前选择的仪表板兼容的当前工程的工件。例如,您可以打开工程中某个单元的模型测试仪表板,也可以打开工程中某个单元或组件的模型维护仪表板。您可以通过在工程中标记实体并配置仪表板以识别标签,来指定软件架构中的哪些实体是单元或更高级别的组件。默认情况下,如果您未指定被视为组件的模型,则仪表板会考虑:

  • 将 Simulink 模型视为单元。

  • 将 System Composer™ 架构模型视为组件。

有关详细信息,请参阅将模型按层级结构分类为组件或单元

Project panel showing units and components

为了确定哪些工件属于某个单元或组件的范围,仪表板会分析工程中工件、软件单元模型和组件模型之间的可追溯性链接。默认情况下,仪表板会分析工程文件夹中的所有文件,即使这些文件不在路径中或未添加到工程中。如果要从仪表板中排除某些模型,请通过在工程中标记哪些模型是单元或组件,并配置仪表板以识别该标签来指定这些模型,如 将模型指定为组件和单元 所示。

要查看仪表板在单元或组件与其工件之间找到的可追溯性路径,请点击可追溯性选项卡,然后从工具栏的添加追溯视图部分选择跟踪视图,打开跟踪视图。跟踪视图是交互式图,您可以使用它来查看工件如何追溯到设计中的单元和组件,并查看工程中需求、测试和测试结果的可追溯性信息。有关详细信息,请参阅使用溯源视图探索可追溯性信息。

当您在工程面板中选择一个工件时,工件面板将显示与所选工件相关的工件。对于单元和组件,追踪到的工件包括:

  • 功能需求

  • 设计工件

  • 测试

  • 测试结果

Artifacts panel showing traced artifacts for a unit

功能需求

文件夹功能需求显示类型 Functional 的需求,这些要求要么由单元或组件实现,要么在其上游实现。

收集度量结果时,仪表板仅分析单元或组件直接实现的功能性需求。文件夹功能需求包含两个子文件夹,用于帮助识别哪些需求是由单元或组件实现的,哪些需求是单元或组件的上游需求:

  • 已实现 - 与单元或组件直接关联的功能性需求,链接为类型Implements。仪表盘在单元或组件的度量中使用这些需求。

  • 上游 - 与已实现的需求间接或传递相关的功能性需求。仪表盘在单元或组件的度量中并未使用这些需求。

使用 Requirements Toolbox 在需求文件 (.slreqx) 中创建或导入需求。如果某个需求无法追溯到某个单元或组件,则会出现在 追踪问题 文件夹中。如果您预期某个需求会出现在工件面板中但它却没有出现,请参阅解决缺失的工件、链接和结果

有关仪表板如何追溯工程文件之间的依赖关系的详细信息,请参阅利用数字线程监控工件可追溯性并检测过时结果

设计工件

文件夹设计显示与当前单元或组件相关的工程工件,包括:

  • 包含单元或组件模块的模型文件。

  • 该单元或组件引用的模型。

  • 模型部分或全部使用的库。

  • 与模型关联的数据字典。

  • 外部 MATLAB® 代码,可追溯到模型。

如果某个工件没有按预期出现在设计文件夹中,请参阅 解决缺失的工件、链接和结果。有关仪表板如何追溯工程文件之间的依赖关系的详细信息,请参阅利用数字线程监控工件可追溯性并检测过时结果

注意

如果您期望外部 MATLAB 代码出现在仪表板中,但它没有出现,请检查该构造是否不受支持:

  • 如果类方法满足以下条件,则该方法不会显示在工件面板中:

    • 使用点号表示法调用的非静态方法。

    • 使用函数表示法调用的非静态方法。

    • 使用点号表示法从 Simulink 模型调用的静态方法。

    • 超类方法。

    • 与类定义文件分开定义。

    对于这些方法,仪表板会在设计文件夹中显示相关的类定义。

  • 如果构造函数是超类构造函数,则类构造函数不会出现在工件面板中。仪表板显示了设计文件夹中关联的超类定义,但没有显示方法本身。

  • 如果从 Simulink 或 Stateflow® 调用类属性,则该类属性不会出现在工件面板中。仪表板在工件面板中显示相关的类定义。

  • 枚举类未出现在工件面板中。例如,如果您在 Simulink 中使用 Enumerated Constant 模块,则仪表板不会显示定义 enum 类型的 MATLAB 类。

  • 如果一个类文件包含一个同名的方法和一个同名的局部函数,则使用点表示法的调用会调用类定义中的方法,而使用函数表示法的调用会调用类文件中的局部函数。

测试

文件夹测试显示与所选单元相关的测试和测试框架。一个测试可以是测试迭代,也可以是不带迭代的测试用例。

当您收集单元的度量结果时,仪表板仅分析单元测试。文件夹测试包含子文件夹,用于帮助识别测试是否被视为单元测试以及哪个测试利用了对单元的跟踪:

  • 单元测试 - 仪表板视为单元测试的测试。单元测试直接测试整个单元或单元中的较低级别元素,例如子系统。仪表盘将这些测试结果用于该单元的度量中。

  • 其他 - 可追溯到单元但仪表板不将其视为单元测试的测试。例如,仪表板不会将对库、子系统引用或虚拟子系统的测试视为单元测试。该仪表盘在单元度量中未使用这些测试。

  • 测试框架 - 可追踪到单元或单元中较低级别元素的测试框架。双击测试框架将其打开。

使用 Simulink Test 创建测试。如果测试结果无法追溯到某个单元,则会出现在 追踪问题 文件夹中。如果测试未出现在工件面板中,或者您未按预期看到测试的度量结果,请参阅 解决缺失的工件、链接和结果

有关仪表板如何追溯工程文件之间的依赖关系的详细信息,请参阅利用数字线程监控工件可追溯性并检测过时结果

测试结果

当您收集单元的度量结果时,仪表板仅分析单元测试的测试结果。文件夹测试结果包含子文件夹,用于帮助识别哪些测试结果来自单元测试。

  • 模型SILPIL 子文件夹分别包含正常单元测试、软件在环 (SIL) 单元测试和处理器在环 (PIL) 单元测试的仿真结果。仪表盘会将这些结果用于该部门的度量中。

    将显示以下几种类型的测试结果:

    • Saved test file icon 已保存的测试结果 - 您在测试管理器中收集并导出到结果文件的结果。

    • Temporary test results icon 临时测试结果 - 您在测试管理器中收集但尚未导出到结果文件的结果。从测试管理器导出结果时,仪表板会分析已保存的结果,而不是临时结果。此外,当您关闭工程或在 Simulink Test 结果浏览器中关闭结果集时,仪表板将停止识别临时结果。如果要在后续的测试或工程阶段分析结果,请将结果导出到结果文件。

  • 其他 - 结果并非仿真结果、并非来自单元测试、来自已禁用的测试,或者只是报告。仪表盘并未将这些结果用于该单元的度量中。

如果测试结果无法追溯到某个单元,则会出现在 追踪问题 文件夹中。如果测试结果未出现在工件面板中,或者您在预期看到测试度量结果时没有看到,请参阅 解决缺失的工件、链接和结果

如果您使用外部 MATLAB 函数,请参阅 外部 MATLAB 函数的控制内联。函数内联可能会导致仪表盘中覆盖率度量结果不一致。

有关仪表板如何追溯工程文件之间的依赖关系的详细信息,请参阅利用数字线程监控工件可追溯性并检测过时结果

注意

请注意,模型覆盖率度量并未将覆盖覆盖率限定于需求。如果在测试结果中选中将覆盖率结果限定为链接需求复选框,仪表板将忽略该选择,并且不会对仪表板中显示的模型覆盖率度量结果进行范围界定。有关将覆盖率结果限定为链接需求选项的信息,请参阅 限定基于需求的测试的覆盖率 (Simulink Test)

追踪问题

文件夹追溯问题显示仪表板尚未追溯到单元或组件的工件。使用文件夹追溯问题检查工件是否缺少到单元或组件的可追溯性。文件夹追溯问题包含子文件夹,用于帮助识别跟踪问题的类型:

  • 意外的实现链接 - 类型Container类型Informational 的需求,却具有类型Implements 的需求链接。仪表板并不期望这些链接属于类型 Implements,因为容器型需求和信息型需求不会影响其所在需求集的实现和验证状态。如果不需要实现某个需求,您可以更改链接类型。例如,您可以将类型Informational 的需求更改为类型 Related to 的链接。

  • 未解析和不支持的链接 - 工程内已损坏或仪表板不支持的需求链接。例如,如果模型模块实现了某个需求,但您删除了该模型模块,则该需求链接现在尚未解决。仪表盘不支持对某些工件和某些链接可追溯性分析。

  • 未追溯的测试 - 对模型或较低级别元素(如子系统)执行的测试,这些元素不在工程路径中。

  • 未追溯的结果 - 仪表板无法追溯到测试的结果。例如,如果一项测试产生了结果,但您删除了该测试,则仪表板无法将结果追溯到该测试。

仪表盘不支持对某些工件和某些链接可追溯性分析。如果某个工件无法追踪到某个单元或组件,请参阅 解决缺失的工件、链接和结果 中的故障排除解决方案。

工件问题

要查看分析过程中导致错误、警告和信息性消息的工件的详细信息,点击可追溯性选项卡,然后点击工具栏中的工件问题。问题在 MATLAB 会话之间仍然存在,您可以按严重性、消息、来源或消息 ID 对消息进行排序。

信息显示:

  • 仪表板不支持的建模结构

  • 仪表盘未追踪的链接

  • 仪表板不支持的测试框架或用例

  • 测试结果缺少覆盖率或仿真结果

  • 仪表板加载时返回错误的工件

  • 仪表板停用的模型回调信息

  • 不在路径上且在追踪过程中未被考虑的工件

有关详细信息,请参阅在工程中查看工件问题

工件错误

如果仪表板执行工件分析时工件返回错误,则会显示文件夹错误。以下是一些在可追溯性分析过程中工件可能返回的错误:

  • 当可追溯性分析开始时,如果工件存在未保存的更改,则会返回错误。

  • 如果测试结果文件是用以前版本的 Simulink 保存的,则会返回错误。

要查看仪表板在工件分析期间发现的警告和错误的详细信息,点击可追溯性选项卡,然后点击工具栏中的工件问题。打开这些工件并修复错误。仪表板顶部会显示一个横幅,表明工程工件面板中显示的工件可追溯性已过时。点击横幅上的追溯工件按钮,刷新工程工件面板中的数据。

诊断

如果在度量收集过程中出现错误或警告,仪表板中的诊断面板会显示诊断消息,可以帮助您识别和解决这些问题。您可以按类型过滤诊断消息,也可以从查看器中清除消息。

如果您期望某个工件对度量结果有所贡献,但它没有,请务必检查工件面板中的追溯问题文件夹。追溯问题文件夹及其子文件夹显示了仪表板无法追溯到当前工件的工件。只有与当前工件相关的工件才能对仪表板中的度量结果做出贡献。有关工件可追溯性的更多信息,请参阅 解决缺失的工件、链接和结果

工程需要通过仪表盘进行分析

首次打开工程仪表板时,仪表板会识别工程中的工件并收集可追溯性信息。仪表盘必须执行此首次设置以建立可追溯性数据,然后才能监控工件。如果取消首次设置,工程中的工件将出现在工件面板的未分析文件夹中。要追踪未分析的工件,点击收集 > 追溯工件

外部 MATLAB 函数的控制内联

默认情况下,覆盖率度量包括外部 MATLAB 函数覆盖率,计入整体单元覆盖率。

如果您的工程中使用了外部的 MATLAB 函数,则会出现以下两种情况之一:

  • coder.inline('never') 指令放在函数内部,并使用工程标签将 M 文件归类为一个单元。

  • coder.inline('always') 指令放在函数内部,但不要使用工程标签将 M 文件归类为单元。

有关 coder.inline 指令的信息,请参阅 coder.inline。如果可能,请避免使用 coder.inline('default')coder.inline('default') 指令使用内部启发式方法来决定是否内联函数,这可能会在仪表板中产生不一致的覆盖率度量结果。

通常情况下,您可以使用工程标签将模型在仪表板中分类为单元或组件。当您将单元标签添加到外部 MATLAB 函数时,该函数不会出现在工程面板中,但仪表板能够将函数覆盖率从整体单元覆盖率中排除。有关如何使用工程标签对单元和组件进行分类的信息,请参阅 将模型按层级结构分类为组件或单元

另请参阅

主题