Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

执行功能测试并分析测试覆盖率

功能测试从基于需求构建测试用例开始。这些测试可以涵盖设计的关键方面,并验证各个模型组件是否满足需求。测试用例包括输入、预期输出和验收标准。

通过在测试套件中收集各个测试用例,您可以系统地运行功能测试。为了检查回归,请在测试用例中添加基线标准,并以迭代方式测试模型。覆盖率测量反映这些测试覆盖模型运行范围的程度。覆盖率测量还可以帮助您添加测试和需求,以满足覆盖率目标。

Functional testing workflow

使用测试用例生成逐步增加测试覆盖率

此示例说明巡航控制模型的基于功能测试的测试工作流。首先从包含链接到外部需求文档的测试的模型开始,在 Simulink® Coverage™ 中分析该模型的覆盖率,使用 Simulink Design Verifier™ 逐步增加覆盖率,并报告结果。

探查测试框架和模型

  1. 在工作文件夹中创建一个工程副本。在命令行中输入:

    path = fullfile(matlabroot,'toolbox','shared','examples',...
    'verification','src','cruise')
    run(fullfile(path,'slVerificationCruiseStart'))

  2. 打开模型和测试框架。在命令行中输入:

    open_system simulinkCruiseAddReqExample
    sltest.harness.open('simulinkCruiseAddReqExample','SafetyTest_Harness1')
  3. Test Model Against Requirements and Report Results (Simulink Test)加载测试套件,并打开 Simulink 测试管理器。在命令行中输入:

    sltest.testmanager.load('slReqTests.mldatx')
    sltest.testmanager.view

  4. 打开测试序列模块。序列会测试系统在以下情况下不啮合:

    • 踩下制动踏板

    • 速度超限

    一些测试顺序步骤链接到需求文档 simulinkCruiseChartReqs.docx

测量模型覆盖率

  1. 在 Simulink 测试管理器中,点击 slReqTests 测试文件。

  2. 要为测试文件启用覆盖率收集,请在右侧页中的 Coverage Settings 下:

    • 选择 Record coverage for referenced models

    • 使用 Coverage filter filename 指定用于覆盖率分析的覆盖率筛选器。默认设置遵循模型配置参数设置。将该字段留空不会应用任何覆盖率筛选器。

    • 选择 DecisionConditionMCDC

  3. 要运行测试,请在测试管理器工具条中,点击 Run

  4. 测试完成后,在测试管理器中选择 Results。汇总的覆盖率结果表明,示例模型实现了 50% 的决策覆盖率、41% 的条件覆盖率和 25% 的 MCDC 覆盖率。

    Coverage results

生成测试以增加模型覆盖率

  1. 使用 Simulink Design Verifier 生成附加测试以增加模型覆盖率。在 Results and Artifacts 中,选择 slReqTests 测试文件,并打开位于右窗格中的 Aggregated Coverage Results 部分。

  2. 右键点击测试结果,然后选择 Add Tests for Missing Coverage

  3. Harness 下,选择 “Create a new harness”。

  4. 点击 OK 以使用 Simulink Design Verifier 向测试套件添加测试。待测模型必须在MATLAB® 路径上或者在工作文件夹中。

  5. 在测试管理器工具条中,点击 Run 以执行更新后的测试套件。测试结果现在包含新增的测试用例输入的覆盖率,实现了更高的模型覆盖率。

您也可以通过使用 sltest.testmanager.addTestsForMissingCoverage (Simulink Test)sltest.testmanager.TestOptions (Simulink Test) 以编程方式创建并使用测试来增加覆盖率。

相关主题