Main Content

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

修复基于需求的测试问题

此示例展示如何使用模型测试仪表板解决模型需求和测试中常见的可追溯性问题。仪表板分析工程中的测试工件,并报告有关质量和完整性测量值的度量数据,例如可追溯性和覆盖率,这些数据反映了业界认可的软件开发标准中的指导方针,例如 ISO 26262 和 DO-178C。仪表板小组件汇总数据,以便您可以跟踪基于需求的测试进度并修复仪表板突出显示的缺失。您可以点击小组件来打开包含详细信息的表格,在其中可以找到并修复不符合相应标准的测试工件。

收集工程中测试工件的度量

仪表板显示模型的测试数据和单元在工程内跟踪到的工件。对于此示例,打开工程并收集工件的度量数据。

1.打开包含模型和测试工件的工程。对于此示例,在 MATLAB® 命令窗口中输入:

openProject("cc_CruiseControl");

2.打开仪表板窗口。要打开模型测试仪表板:在工程选项卡上,点击模型测试仪表板。或者在命令行中输入:

modelTestingDashboard

3.在工程面板中,仪表板将单元模型组织在模型层次结构中包含它们的组件模型下。查看单元 cc_DriverSwRequest 的度量结果。在工程面板中,点击单元名称 cc_DriverSwRequest。当您最初选择 cc_DriverSwRequest 时,仪表板会收集未收集度量度量,并使用该单元的数据填充小组件。

将需求链接到模型中的实现

工件面板显示追溯到工程面板中选择的单元的需求、测试和测试结果等工件。

工件面板中,跟踪问题文件夹显示未跟踪到工程中单元模型的工件。追溯问题文件夹包含以下子文件夹:

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

  • 未解析和不支持的链接 - 需求链接已损坏或不受仪表板支持。例如,如果模型模块实现了某个需求,但您删除了该模型模块,则该需求链接现在尚未解决。模型测试仪表板不支持某些工件和某些链接的可追溯性分析。如果您希望链接追踪到某个单元但实际上没有,请参阅Resolve Missing Artifacts, Links, and Results (Simulink Check)中的故障排除解决方案。

  • 未追溯的测试 - 在不在工程路径上的模型或子系统上执行的测试。

  • 未追溯的结果 - 仪表板无法再追踪到测试的结果。例如,如果某个测试产生了结果,但您删除了该测试,则结果就无法再追溯到该测试。

解决测试可追溯性问题

模型测试仪表板的测试分析部分中的小组件显示有关单元需求、单元测试以及它们之间的链接的数据。这些小组件可指示已实施需求的测试和可追溯性中是否存在缺失。

链接需求和测试

对于单元 cc_DriverSwRequest与需求相关的测试部分显示,某些测试缺少与模型中需求的联系。

要查看有关缺失链接的详细信息,请在链接到需求的测试部分中点击小组件未链接。仪表板打开小组件的度量详细信息,其中包含度量值表和指向每个相关工件的超链接。该表显示了单元中实施的测试,但没有与需求的链接。该表经过过滤,仅显示缺少与需求相关的链接的测试。

测试 Detect long decrement 缺少链接需求。

  1. 在表格的工件列中,指向 Detect long decrement。工具提示显示测试 Detect long decrement 位于测试套件 DriverSwRequest 的单元测试中,位于测试文件 cc_DriverSwRequest_Tests 中。

  2. 点击 Detect long decrement 在测试管理器中打开测试。对于这个例子,测试需要链接到工程中已经存在的三个需求。如果还没有需求,您可以使用需求编辑器添加需求。

  3. 在需求编辑器中打开软件需求。在仪表板窗口的工件面板中,展开文件夹功能需求 > 已实现,然后双击需求文件 cc_SoftwareReqs.slreqx

  4. 查看容器中摘要为 Driver Switch Request Handling 的软件需求。展开 cc_SoftwareReqs > Driver Switch Request Handling

  5. 选择多个软件需求。按住 Ctrl 键并点击 Output request modeAvoid repeating commandsLong Increment/Decrement Switch recognition。在需求编辑器中保持这些需求被选中。

  6. 在测试管理器中,展开测试 Detect long decrement需求部分。点击添加按钮旁边的箭头,并选择链接到所选需求。可追溯性链接表明测试 Detect long decrement 验证了 Output request modeAvoid repeating commandsLong Increment/Decrement Switch recognition 三个需求。

  7. 仪表板中的度量结果仅反映已保存的工件文件。要保存测试套件 cc_DriverSwRequest_Tests.mldatx,请在测试浏览器中右键点击 cc_DriverSwRequest_Tests,然后点击保存

刷新仪表板中的度量结果

仪表板检测到度量结果现已过时,并在仪表板顶部显示警告横幅。

  1. 点击警告横幅上的收集按钮,重新收集度量数据,以便仪表盘体现测试与需求之间的可追溯性联系。

  2. 返回模型测试结果来查看更新后的仪表板小组件。在仪表板顶部,有一条从度量详细信息返回到模型测试结果的面包屑路径。点击 cc_DriverSwRequest 的面包屑按钮可返回该单元的模型测试结果。

链接到需求的测试部分显示没有未链接的测试。链接到测试的需求部分显示有 3 个未链接的需求。通常,在运行测试之前,您可以通过添加测试并将其链接到需求来调查并解决这些测试可追溯性问题。对于此示例,保留未链接的工件并继续运行测试的下一步。

测试模型并分析失败和缺失

在创建并链接验证需求的单元测试后,运行测试来检查模型的功能是否满足需求。要查看测试结果和覆盖率测量值的摘要,请使用仪表板的仿真测试结果分析部分中的小组件。这些小组件有助于显示失败的测试和覆盖率缺失。使用度量结果来分析底层工件并解决问题。

执行单元测试

使用测试管理器运行模型测试。将测试结果保存在您的工程中并在模型测试仪表板中查看。

  1. 在测试管理器中打开模型的单元测试。在模型测试仪表板的工件面板中,展开文件夹测试 > 单元测试,然后双击测试文件 cc_DriverSwRequest_Tests.mldatx

  2. 在测试管理器中,点击运行

  3. 结果和工件窗格中选择结果。

  4. 将测试结果保存为工程中的文件。在测试选项卡的结果部分中,点击导出。将结果文件命名为 Results1.mldatx,并将文件保存在工程根文件夹下。

模型测试仪表板检测结果并自动更新工件面板以包含子文件夹测试结果 > 模型中该单元的新测试结果。

仪表板还检测到度量结果现已过时,并在仪表板顶部显示警告横幅。

过时图标 出现在仿真测试结果分析部分的小组件上,表示它们显示的是未包含更改的过时数据。

点击警告横幅上的收集按钮重新收集度量数据,并使用当前工件中的数据更新过时的小组件。

处理失败的测试并消除缺失

对于单元 cc_DriverSwRequest,仪表板的模型测试状态部分显示在最近的测试运行期间有一项测试失败并且有一项测试被禁用。

  1. 要查看已禁用的测试,请在仪表板中点击已禁用小组件。该表显示了该模型禁用的测试。

  2. 在测试管理器中打开已禁用的测试。在表格中,点击测试工件 Detect long decrement

  3. 启用测试。在测试浏览器中,右键点击测试,然后点击已启用

  4. 重新运行测试。在测试浏览器中,右键点击测试,然后点击运行并保存测试套件文件。

  5. 查看更新后的禁用测试数量。在仪表板中,点击警告横幅上的收集按钮。请注意,仪表板的模型测试状态部分现在报告了零个已禁用的测试。

  6. 在仪表板中查看失败的测试。点击 cc_DriverSwRequest 的面包屑按钮返回模型测试结果,然后点击失败小组件。

  7. 在测试管理器中打开失败的测试。在表格中,点击测试工件 Detect set

  8. 在测试管理器中检查失败测试。您可以使用测试结果和模型链接来确定是否需要更新测试或模型。对于此示例,无需修复故障,而是使用仪表板中的面包屑导航返回模型测试结果并继续检查测试覆盖率。

使用覆盖率度量检查您运行的测试是否充分执行了模型设计。对于此示例,仪表板的模型覆盖率部分表明模型中的某些条件未被覆盖。将光标放在小组件中的决策栏上,查看已实现的条件覆盖率百分比。

  1. 点击其中一个决策栏即可查看有关决策覆盖率的详细信息。对于此示例,点击决策栏以获取已实现的覆盖率。

  2. 在表中,展开模型工件。该表显示了模型的测试结果和包含该结果的结果文件。对于此示例,点击指向源文件 Results1.mldatx 的超链接以在测试管理器中打开结果文件。

  3. 要查看详细的覆盖率结果,请使用测试管理器在覆盖率视角中打开模型。在测试管理器的聚合覆盖率结果部分中,在分析的模型列中,点击 cc_DriverSwRequest

  4. 模型上的覆盖率突出显示了测试未涵盖的点。对于此示例,不要修复缺失覆盖率。对于工程中未涵盖的点,您可以添加测试来覆盖它。您可以找到模型元素所实现的需求,如果没有,则为其添加一个需求。然后您可以将新的测试链接到需求。如果该点不应被覆盖,则可以使用过滤器申述缺失覆盖率。

更新单元测试以解决工程中的失败和缺失后,运行测试并保存结果。然后通过收集仪表板中的度量来检查结果。

使用模型测试仪表板进行基于需求的迭代测试

在具有许多工件和可追溯性连接的工程中,每当工程中的文件发生更改时,您就可以监视设计和测试工件的状态。更改工件后,使用仪表板通过更新跟踪数据和度量结果来检查是否存在下游测试影响。使用度量详细信息表来查找并修复受影响的工件。通过更新仪表板小组件来跟踪您的进度,直到它们显示模型测试质量符合工程标准。