评估仿真并比较输出数据
概述
功能测试需要评估仿真行为并将仿真输出与预期输出进行比较。例如,您可以:
分析事件发生后一定时间区间内的信号行为。
在仿真中比较两个变量。
将时间序列数据与基线进行比较。
在时间序列数据中查找峰值,并将峰值与模式进行比较。
本主题提供了概述,以帮助您针对特定应用程序编写评估。在主题中,您可以找到每个评估的更详细示例的链接。
您可以将评估纳入测试用例、模型或测试框架中。
在测试用例中,您可以:
比较仿真输出与基线数据。
比较两次仿真的输出。
使用自定义脚本对仿真输出进行后处理。
使用逻辑和时序评估来评估时序属性。如果测试用例中有一个或多个已定义的评估及其关联符号,则可以使用 API 或测试管理器获取有关它们的列表和信息、将它们复制到另一个测试用例以及将它们从测试用例中删除。有关使用 API 的信息,请参阅
sltest.testmanager.Assessment
、sltest.testmanager.AssessmentSymbol
和sltest.testmanager.TestCase
。对于测试管理器,请参阅使用时序评估来评估时序逻辑。
在测试框架或模型中,您可以:
使用
verify
语句在运行时验证逻辑条件,该语句为每个时间步返回pass
、fail
或untested
结果。使用
assert
语句在发生故障时停止仿真。
使用模型验证或 Simulink® Design Verifier™ 库中的模块。
将仿真数据与基线数据或其他仿真进行比较
基线准则是仿真数据与基线数据相比的容差。等效性准则是两组仿真数据的容差,每组数据来自不同的仿真。您可以设置数字、枚举或逻辑数据的容差。
使用绝对或相对容差设置数字容差。使用超前容差和滞后容差设置时间容差。对于数值数据,您可以指定绝对容差、相对容差、超前容差或滞后容差。对于枚举或逻辑数据,您可以指定超前或滞后容差。容差范围之外的结果失败。有关更多信息,请参阅 设置信号容差。
在测试管理器基线准则或等效性准则部分指定基线数据和容差。结果出现在结果和工件窗格中。比较图显示数据和差异。
该图显示了基线准则的一个示例。基线准则为信号 output torque
和 vehicle speed
设置了相对容差。
使用自定义脚本对结果进行后处理
您可以使用自定义准则脚本,利用专门的函数来分析仿真数据。例如,您可以使用 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 Assessment 或 Test Sequence 模块中输入 verify
语句。您可以在测试管理器中使用带有或不带有测试用例的 verify
语句。如果没有测试用例,结果就会出现在仿真数据检查器中。通过测试用例,结果就会出现在测试管理器中。
有关在模型中使用 verify
语句的信息,请参阅 使用 verify 语句评估模型仿真。
assert
语句
您可以在 Test Assessment 或 Test Sequence 模块中使用 assert
语句来停止执行无效测试。assert
评估逻辑参量,但与 verify
不同,assert
停止仿真。失败表现为仿真错误。为了使结果更容易解释,请添加可选消息。
例如,如果被测组件输出两个信号 h
和 k
,而测试需要 h
和 k
初始化为 0
,则如果信号未初始化,则使用 assert
停止测试。如果逻辑条件 h == 0 && k == 0
失败,则此 assert
语句返回消息 'Signals must initialize to 0'
。
注意
Test Sequence 模块或 Stateflow® 图中的 assert
语句不支持代码生成并将被忽略,因此如果在 Simulink Real-Time™ 仿真期间断言条件失败,则不会发生错误。但是,verify
语句支持 Simulink Real-Time 代码生成,并会自动记录测试管理器中测试用例的结果。使用 Simulink Assert 模块时可获得相同的日志记录行为。
实时测试评估
如果您正在使用实时测试用例,或者您想要在实时目标上重用桌面仿真测试用例,请使用 verify
语句。verify
语句内置于实时应用程序中,并在实时目标上运行。参见 使用 verify 语句评估模型仿真。
模型验证模块
使用 Simulink Model Verification 库或 Simulink Design Verifier 库中的模块来评估模型或测试框架中的信号。每个模块的 pass
、fail
或 untested
结果都会出现在测试管理器中。有关更多信息,请参阅 使用仿真数据检查器检查模型验证结果。
注意
所有模型验证库模块(包括 Assertion 模块)在 For Each 子系统中使用时都不会产生验证结果。改用带有 verify
语句的 Test Sequence 模块。
运行时评估的示例
该示例测试框架包括:
Test Assessment 模块中的
verify
语句,验证signalC >= 5
。一个 Assertion 模块验证
throttle >= 0
。
逻辑和时序评估
逻辑和时序评估评估时序属性,例如模型时序和记录数据的事件排序。仿真完成后,使用时序评估进行额外的系统验证。时序评估与测试管理器中的测试用例相关。使用逻辑和时序评估编辑器来编写时序评估。查看 使用时序评估来评估时序逻辑 以了解更多信息。
时序评估评价结果出现在结果和工件窗格中。使用表达式树详细调查结果。如果您拥有 Requirements Toolbox™ 许可证,您可以通过创建需求链接来建立需求和时序评估之间的可追溯性。查看 链接至需求 以了解更多信息。