主要内容

使用 Excel 文件添加测试用例

此示例说明如何使用 Simulink® Design Verifier™ 支持的 Excel® 文件逐步创建测试用例。

Simulink® Design Verifier™ 会生成测试用例以满足测试准则,例如模型目标。由于支持限制和模型复杂度,有时它生成的测试用例可能无法覆盖所有模型目标。使用此示例了解如何执行以下操作:

  • 以 Excel 文件格式创建测试用例。

  • 在 Excel 文件中手动编写新测试用例。

  • 通过 Excel 文件使用测试扩展创建额外的测试用例。

使用 Design Verifier 生成测试用例

打开模型并创建测试用例。

model = 'sldvexSpreadsheetTopoff';
open_system(model);
[~, files] = sldvrun(model);
12-Aug-2025 18:09:16
Checking compatibility for test generation: model 'sldvexSpreadsheetTopoff'
Compiling model...done
Building model representation...done

12-Aug-2025 18:09:31

'sldvexSpreadsheetTopoff' is compatible for test generation with Simulink Design Verifier.

Generating tests using model representation from 12-Aug-2025 18:09:31...


Generating output files:

12-Aug-2025 18:09:56
Results generation completed.

    Data file:
    /tmp/Bdoc25b_2988451_638779/tp4197d6c1/sldv-ex79932255/sldv_output/sldvexSpreadsheetTopoff/sldvexSpreadsheetTopoff_sldvdata.mat

将 Design Verifier 测试用例保存到 Excel 文件

Simulink Design Verifier 默认以 MAT 文件格式创建测试用例。使用以下任一方法将上一节中生成的测试用例保存在 Excel 文件中:

  • 点击“结果”中的“保存到电子表格”按钮。

  • 点击结果窗口或结果检查器中的“保存到电子表格”链接。

  • 使用 sldvgenspreadsheet 函数。

对于此示例,使用 sldvgenspreadsheet 函数保存测试用例。

excelFilePath = sldvgenspreadsheet(model, files.DataFile);

注意不支持将总线信号数组导入或导出到 Excel 文件有关详细信息,请参阅Microsoft Excel 导入、导出和记录格式

识别缺失覆盖率目标

使用 Excel 文件中的所有测试用例对模型进行仿真,并创建覆盖率报告。sldvruntest 支持将电子表格中的测试用例作为仿真输入。

runOpts = sldvruntestopts;
runOpts.coverageEnabled = true; % Enable coverage
[~, initialCov] = sldvruntest(model, excelFilePath, runOpts); % Use test cases from Excel file for simulation
cvhtml('Initial coverage', initialCov);

请注意,在覆盖率报告中,Switch 模块 logical trigger input 的值永远不会为 false。

switchblock.png

编写测试用例以满足覆盖率目标

确定缺失覆盖率目标的原因。在此示例中,模型包含不受支持的模块 Sqrt,这限制了 Simulink Design Verifier 分析。

要使 Switch 模块的触发器输入值为 false,需注意输入端口 In3 的值应大于 100。在 Excel 文件中添加一个包含测试用例的新工作表。

验证新测试用例是否满足所需的覆盖率目标。

excelFilePath = 'WithNewTestCase.xlsx';
runOpts = sldvruntestopts;
runOpts.testIdx = 2; % Simulate only the newly added test case
runOpts.coverageEnabled = true;
[~, newTestCov] = sldvruntest(model, excelFilePath, runOpts);
cvhtml('New test coverage', newTestCov);

使用 Excel 文件运行测试扩展

Simulink Design Verifier 测试扩展工作流通过扩展现有测试用例来生成新测试用例。这有助于通过扩展您的新测试用例来满足额外的覆盖率目标。

opts = sldvoptions(model);
opts.ExistingTestFile = excelFilePath; % Use Excel file with new test cases as input for test extension
opts.ExtendExistingTests = 'on'; % Enable test extension
[~, files] = sldvrun(model, opts);
12-Aug-2025 18:10:21
Checking compatibility for test generation: model 'sldvexSpreadsheetTopoff'
Compiling model...done
Building model representation...done

12-Aug-2025 18:10:24

'sldvexSpreadsheetTopoff' is compatible for test generation with Simulink Design Verifier.

12-Aug-2025 18:10:24
Loading initial test data...done

Generating tests using model representation from 12-Aug-2025 18:10:24...


Generating output files:

12-Aug-2025 18:10:33
Results generation completed.

    Data file:
    /tmp/Bdoc25b_2988451_638779/tp4197d6c1/sldv-ex79932255/sldv_output/sldvexSpreadsheetTopoff/sldvexSpreadsheetTopoff_sldvdata1.mat

验证完整覆盖率

使用新测试用例对模型进行仿真,并验证您现在是否具有完整覆盖率。

runOpts = sldvruntestopts;
runOpts.coverageEnabled = true; % Enable coverage
[~, finalCov] = sldvruntest(model, files.DataFile, runOpts);
cvhtml('Final coverage', finalCov);
close_system(model, 0);

如果新测试用例仍产生部分覆盖率,您可以在 Excel 文件中编写新测试用例,然后运行测试扩展工作流,直到实现完整覆盖率。