Main Content

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

评估仿真并比较输出数据

概述

功能测试需要评估仿真行为并将仿真输出与预期输出进行比较。例如,您可以:

  • 分析事件发生后一定时间区间内的信号行为。

  • 在仿真中比较两个变量。

  • 将时间序列数据与基线进行比较。

  • 在时间序列数据中查找峰值,并将峰值与模式进行比较。

本主题提供了概述,以帮助您针对特定应用程序编写评估。在主题中,您可以找到每个评估的更详细示例的链接。

您可以将评估纳入测试用例、模型或测试框架中。

  • 在测试用例中,您可以:

  • 在测试框架或模型中,您可以:

    • 使用 verify 语句在运行时验证逻辑条件,该语句为每个时间步返回 passfailuntested 结果。

    • 使用 assert 语句在发生故障时停止仿真。

    • 使用模型验证或 Simulink® Design Verifier™ 库中的模块。

将仿真数据与基线数据或其他仿真进行比较

基线准则是仿真数据与基线数据相比的容差。等效性准则是两组仿真数据的容差,每组数据来自不同的仿真。您可以设置数字、枚举或逻辑数据的容差。

使用绝对或相对容差设置数字容差。使用超前容差和滞后容差设置时间容差。对于数值数据,您可以指定绝对容差、相对容差、超前容差或滞后容差。对于枚举或逻辑数据,您可以指定超前或滞后容差。容差范围之外的结果失败。有关更多信息,请参阅 设置信号容差

在测试管理器基线准则等效性准则部分指定基线数据和容差。结果出现在结果和工件窗格中。比较图显示数据和差异。

该图显示了基线准则的一个示例。基线准则为信号 output torquevehicle speed 设置了相对容差。

Baseline criteria table

使用自定义脚本对结果进行后处理

您可以使用自定义准则脚本,利用专门的函数来分析仿真数据。例如,您可以使用 Curve Fitting Toolbox™ 函数在时间序列数据中找到峰值。自定义准则脚本是在仿真后运行的 MATLAB® 代码。自定义准则脚本使用 MATLAB 单元测试框架。

在测试用例的测试管理器自定义准则部分中编写自定义准则脚本。自定义准则结果出现在结果和工件窗格中。结果显示为单独的 MATLAB 单元测试资格。有关更多信息,请参阅 使用自定义脚本处理测试结果

这个简单的测试用例自定义准则验证 slope 的值是否大于 0。

% A simple custom criteria
test.verifyGreaterThan(slope,0,'slope must be greater than 0')

运行时评估

verify 语句

对于一般的运行时评估,使用 verify 语句。verify 语句评估逻辑表达式并返回每个仿真时序步骤的通过、失败或未测试结果。verify 语句可以包括时序和条件语法。失败并不会停止仿真。

使用测试序列编辑器在 Test AssessmentTest Sequence 模块中输入 verify 语句。您可以在测试管理器中使用带有或不带有测试用例的 verify 语句。如果没有测试用例,结果就会出现在仿真数据检查器中。通过测试用例,结果就会出现在测试管理器中。

有关在模型中使用 verify 语句的信息,请参阅 使用 verify 语句评估模型仿真

assert 语句

您可以在 Test AssessmentTest Sequence 模块中使用 assert 语句来停止执行无效测试。assert 评估逻辑参量,但与 verify 不同,assert 停止仿真。失败表现为仿真错误。为了使结果更容易解释,请添加可选消息。

例如,如果被测组件输出两个信号 hk,而测试需要 hk 初始化为 0,则如果信号未初始化,则使用 assert 停止测试。如果逻辑条件 h == 0 && k == 0 失败,则此 assert 语句返回消息 'Signals must initialize to 0'

Assert statement in a test step

注意

Test Sequence 模块或 Stateflow® 图中的 assert 语句不支持代码生成并将被忽略,因此如果在 Simulink Real-Time™ 仿真期间断言条件失败,则不会发生错误。但是,verify 语句支持 Simulink Real-Time 代码生成,并会自动记录测试管理器中测试用例的结果。使用 Simulink Assert 模块时可获得相同的日志记录行为。

实时测试评估

如果您正在使用实时测试用例,或者您想要在实时目标上重用桌面仿真测试用例,请使用 verify 语句。verify 语句内置于实时应用程序中,并在实时目标上运行。参见 使用 verify 语句评估模型仿真

模型验证模块

使用 Simulink Model Verification 库或 Simulink Design Verifier 库中的模块来评估模型或测试框架中的信号。每个模块的 passfailuntested 结果都会出现在测试管理器中。有关更多信息,请参阅 使用仿真数据检查器检查模型验证结果

注意

所有模型验证库模块(包括 Assertion 模块)在 For Each 子系统中使用时都不会产生验证结果。改用带有 verify 语句的 Test Sequence 模块。

运行时评估的示例

该示例测试框架包括:

  • Test Assessment 模块中的 verify 语句,验证 signalC >= 5

  • 一个 Assertion 模块验证 throttle >= 0

Test harness with Test Assessment and Test Sequence blocks

逻辑和时序评估

逻辑和时序评估评估时序属性,例如模型时序和记录数据的事件排序。仿真完成后,使用时序评估进行额外的系统验证。时序评估与测试管理器中的测试用例相关。使用逻辑和时序评估编辑器来编写时序评估。查看 使用时序评估来评估时序逻辑 以了解更多信息。

时序评估评价结果出现在结果和工件窗格中。使用表达式树详细调查结果。如果您拥有 Requirements Toolbox™ 许可证,您可以通过创建需求链接来建立需求和时序评估之间的可追溯性。查看 链接至需求 以了解更多信息。

相关主题