在自定义代码中实现缺失覆盖率
此示例向您展示如何测试自定义代码中缺失的覆盖率。您还可以使用这些步骤来测试外部 C 代码中缺失的覆盖率。如果您通过 C Caller 模块、C Caller Library 或 coder.ceval 函数使用自定义代码仿真模型,则会报告自定义代码的覆盖率。如果代码没有实现全覆盖率,可以使用 Simulink® Design Verifier™ 生成实现全覆盖率的测试用例。然后,您可以使用 Simulink® 测试管理器™ 仅为自定义代码生成测试用例来执行单元测试。
1.打开该测试文件。
testFile = 'dTest_TopOffCoverage_mFuncWithPointers.mldatx';
sltest.testmanager.load(testFile);
sltest.testmanager.view;
2.仿真测试文件并观察聚合覆盖率结果窗口中的覆盖率值。
3.由于自定义代码的覆盖率不是 100%,点击添加缺失覆盖率测试。
4.Simulink Design Verifier 生成额外的测试用例。自定义代码文件 hFuncWithPointers.c 包含两个函数:getValue 和 getValuePointer。
函数 1:函数 getValue 有向量和标量输入。为向量输入指定维度。
由该代码构建的框架输入包含适当的信号维度。因此,Simulink Design Verifier 将能够为代码生成正确的测试用例。
该代码生成的框架如下所示:
分析结果如下:
函数 2:函数 getValuePointer 也有向量和标量输入。没有指定向量输入的维度。
从该代码构建的框架的输入包含要继承的信号的维度。大多数情况下,Simulink Design Verifier 可能无法为代码生成正确的测试用例。
5.为函数 getValue 添加新的测试用例,如下所示:
从警告消息中,您将获得未调用 Simulink Design Verifier 的函数列表,以及需要手动更新的相应框架名称列表,以实现额外的覆盖率。在此示例中,对于函数 getValuePointer 没有生成额外的测试用例,而 hFuncWithPointers_Lib_getValuePointer_harnessTopOff.slx 是您需要更新的相应框架。
6.要为函数 getValuePointer 手动添加其他测试用例,请更新生成的库模型 hFuncWithPointers_Lib 的 C Caller 模块 getValuePointer 的端口规范。打开 C Caller 模块的模块参数 getValuePointer,更新所需的端口维度并保存模型。
7.在现有测试文件中,为更新后的框架添加一个新的测试套件。
8.使用添加缺失覆盖率测试来仿真测试套件并生成其他测试用例。您现在已经为自定义代码中缺失的覆盖率生成了测试用例。