Main Content

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

sltest.testmanager.createTestForComponent

为模型或模型组件创建测试用例和测试框架

自 R2020b 起

说明

示例

[tc,status] = sltest.testmanager.createTestForComponent('TestFile',tf,'Component',component) 为测试文件或测试套件中的指定组件创建测试用例和测试框架 tfcomponent 必须是单个组件,并且测试文件 tf 必须已经存在。如果测试文件不存在,您可以包含 CreateTestFiletrue Name-Value 参量来创建一个。返回的 status 表示测试用例 tc 是否创建成功。

示例

[tc,status] = sltest.testmanager.createTestForComponent('TestFile',tf,'TopModel',topModel, 'Component',component)component 数组中指定的每个组件创建一个测试用例和测试框架。如果测试用例未成功创建,则 tc 数组包含该测试用例的 MException 对象。使用此语法可以创建多个测试用例和框架。

示例

[tc,status] = sltest.testmanager.createTestForComponent(___,Name,Value) 为每个组件创建一个测试用例或测试框架,并通过一个或多个 Name,Value 对参量指定附加选项。在测试文件、组件和顶层模型输入参量后指定名称-值对参量。

示例

全部折叠

此示例展示如何为 vdp 模型创建基线测试用例并将输入保存在 Excel 文件中。自动创建测试框架。

请注意,此代码使用当前文件夹作为 ExcelFileLocation。要将 Excel 文件保存到其他位置,请将 ExcelFileLocation 值更改为其他可写文件夹。

vdp

tf = sltest.testmanager.TestFile('MyBaselineTestFile');

sltest.testmanager.createTestForComponent('TestFile',tf,...
   'Component','vdp',...
   'TestType','baseline',...
   'ExcelFileLocation','mybaseline_inputdata.xlsx');

sltestNormalSILEquivalenceExample 模型的 Controller 组件创建等效性(背靠背)测试用例。

load_system('sltestNormalSILEquivalenceExample'); 

tf = sltest.testmanager.TestFile('MyB2BTestFile');

sltest.testmanager.createTestForComponent("TestFile",tf,...
   "Component","sltestNormalSILEquivalenceExample/Controller",...
   "TestType","equivalence",...
   "Simulation1Mode","Normal",...
   "Simulation2Mode","Software-in-the-Loop (SIL)");
### Starting build procedure for: Controller
### Successful completion of build procedure for: Controller
### Creating SIL block ...
Building with 'gcc'.
MEX completed successfully.

Build Summary

Top model targets built:

Model       Action                        Rebuild Reason                                    
============================================================================================
Controller  Code generated and compiled.  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 35.787s

此示例显示如何为模型组件创建测试用例和测试框架。它还展示了如何使用 HarnessOptions 属性。该测试用例仅使用组件框架,无需设置任何输入或基线策略。要使用此测试用例创建策略,createTestForComponent 函数的 UseComponentInputs 属性必须为 false,并且 SLDVTestGeneration 属性必须为 offHarnessSource 属性被忽略,并且 FunctionInterfaceName 是从传递给 createTestForComponent 的参量推导出来的。

测试用例设置完成后,可以指定组件的验证策略,比如将组件的测试输入数据导入到创建的测试用例中。

此代码为 f14 模型的 Contoller 组件创建了一个测试文件和框架。HarnessOptions 指定框架名称为 myHarness,使用信号编辑器作为框架源,并且当打开框架时,框架与模型同步。

f14

tcObj = sltest.testmanager.createTestForComponent(...
    'CreateTestFile',true,'TestFile','MyHarnessTest', ...
    'Component','f14/Controller','UseComponentInputs', ...
    false,'HarnessOptions',{'Name','myHarness', ...
    'Source','Signal Editor','SynchronizationMode', ...
    'SyncOnOpen'});
load_system("sltestCruiseControl");
   
[result,status] = sltest.testmanager.createTestForComponent(...
    "CreateTestFile",true,...
    "TestFile","myTests.mldatx",...
    "TopModel","sltestCruiseControl",...
    "Component",[...
        "sltestCruiseControl/TargetSpeedThrottle",...
        "sltestCruiseControlMode/disableCaseDetection",...
        "sltestCruiseControl/DriverSwRequest",...
        "sltestCruiseControl"],...
    "CreateExcelFile",true);

仅为模型的多个组件创建测试框架,而不是测试用例。

load_system('sltestCruiseControl');

[result, status] = sltest.testmanager.createTestForComponent(...
    'CreateTestFile',true,...
    'TestFile','myTests.mldatx',...
    'TopModel','sltestCruiseControl',...
    'Component',{...
        'sltestCruiseControl/TargetSpeedThrottle',...
        'sltestCruiseControlMode/disableCaseDetection',...
        'sltestCruiseControl/DriverSwRequest',...
        'sltestCruiseControl'},...
    'UseComponentInputs',false,...
    'HarnessOptions',{'SynchronizationMode','SyncOnOpen'});

输入参数

全部折叠

要添加测试用例的测试文件或测试套件,指定为 sltest.testmanager.TestFilesltest.testmanager.TestSuite 对象、字符串或字符向量。如果 CreateTestFilefalse,则测试文件对象必须存在。如果 CreateTestFiletrue,则 TestFile 是新测试文件的路径,指定为字符串或字符向量。

示例: 'TestFile','myTestFile'

要创建测试用例和框架的一个或多个组件。要指定单个组件,请使用 Simulink.BlockPath 对象或组件路径的字符串标量或字符向量。要指定多个组件,请使用 Simulink.BlockPath 对象数组、字符向量元胞数组或字符串数组,其中每个元素都是组件的路径。组件可以是顶层模型层次结构中的任何模块或模块。您可以多次指定一个组件来为该组件创建多个测试用例和框架。该输入参量可以是任何支持测试框架生成的模型或模块。请参阅测试框架与模型关系,了解可以构建测试框架的组件列表。

示例: 'Component','sf_car/shift_logic'

示例: 'Component',{'sldvdemo/Controller','sldvdemo/Pi Controller'};

层次结构顶层的模型名称,指定为字符串或字符向量。顶层模型是其层次结构包含 component 输入中指定的组件的模型的名称。如果您的 component 输入是一个包含多个组件的数组,则必须指定顶层模型。如果 component 输入是单个组件,则指定顶层模型是可选的。如果 component 输入是顶层模型,请不要指定 TopModel

示例: 'TopModel','Plant'

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来

示例: 'CreateTestFile',true

是否创建一个新的测试文件,指定为由 'CreateTestFile'truefalse 组成的逗号分隔的对。

示例: 'CreateTestFile',true

测试用例类型,指定为由 'TestType''baseline''equivalence''simulation' 组成的逗号分隔的对。

示例: 'TestType','equivalence'

是否为模型创建测试框架,指定为由 'CreateHarness'truefalse 组成的逗号分隔的对。当 component 不是顶层模型或者您创建多个测试用例和框架时,此选项会自动设置为 true。当 component 是导出函数模型且 CreateHarnesstrue 时,该函数会在生成的测试框架中创建一个 Test Sequence 模块。

要仅生成测试框架,请将 SLDVTestGeneration 设置为 off 并将 UseComponentInputs 设置为 false。可以选择指定任何所需的 HarnessOptions

示例: 'CreateHarness',false

用于仿真模型以获取所创建测试框架的组件输入的选项,指定为由 'UseComponentInputs'truefalse 组成的逗号分隔的对。如果此属性为 true,则测试框架将使用来自模型仿真的输入。如果此属性为 false,则测试框架不使用来自仿真的组件输入,并且不会创建输入信号文件或基线准则文件。

示例: 'UseComponentInputs',false

函数接口,指定为由 'FunctionInterface' 和字符串或字符向量组成的逗号分隔的对。指定 FunctionInterface 来为可重用库子系统创建测试。该子系统必须位于子系统库的顶层,并且必须具有函数接口。如果 component 是数组或元胞数组,则不支持此属性。

示例: 'FunctionInterface','single'

等效性测试仿真 1 的仿真模式,指定为由 'Simulation1Mode''Normal''Accelerator' 组成的逗号分隔的对。如果您未指定仿真模式,则使用在测系统的模式。将自动为仿真模式创建所需的测试框架。

示例: 'Simulation1Mode','Normal'

等效性测试仿真 2 的仿真模式,指定为由 'Simulation2Mode''Normal''Accelerator''Rapid Accelerator''Software-in-the-Loop (SIL)''Processor-in-the-Loop (PIL)' 组成的逗号分隔的对。如果您未指定仿真模式,则使用在测系统的模式。如果 TestType'equivalence'Simulation2Mode'Software-in-the-Loop (SIL)',则除了测试用例和测试框架之外还会创建额外的测试框架,除非被测组件是原子子系统。当使用普通和 SIL 或 PIL 模式对原子子系统进行等效性测试时,将创建单个测试框架并用于这两种模式。

示例: 'Simulation2Mode','Software-in-the-Loop (SIL)'

用于在 MAT 文件中存储记录输入的文件或目录路径,指定为由 'InputsLocation' 和字符向量或字符串组成的逗号分隔的对。包含文件扩展名 .mat。如果 component 是数组或元胞数组,则 InputsLocation 必须是现有的目录路径。如果不指定 InputsLocation,该函数会在当前目录中创建一个文件夹。

示例: 'InputsLocation','C:\MATLAB\inputs_data.mat'

用于在 MAT 文件中存储基线记录输出数据的文件或目录路径,指定为由 'BaselineLocation' 和字符向量或字符串组成的逗号分隔的对。包含文件扩展名 .mat。如果 component 是数组或元胞数组,则 BaselineLocation 必须是现有的目录路径。如果不指定 BaselineLocation,该函数会在当前目录中创建一个文件夹。

示例: 'BaselineLocation','C:\MATLAB\baseline_data.mat'

是否对输入使用 Excel® 格式(仅对于基线测试)以及输出使用,指定为由 'CreateExcelFile'truefalse 组成的逗号分隔的对。如果您使用 'ExcelFileLocation' 参量指定文件名和位置,则不需要同时使用 'CreateExcelFile'

示例: 'CreateExcelFile',true

Excel 文件的文件路径,指定为由 'ExcelFileLocation' 和字符向量或字符串组成的逗号分隔的对。在文件名中包含文件扩展名 .xlsx。如果 component 是数组或元胞数组,则 ExcelFileLocation 必须是现有的目录路径。如果您指定了位置,则不需要同时使用 'CreateExcelFile' 选项。如果您未指定 ExcelFileLocation,该函数会在当前目录中创建一个文件夹。

注意

如果 SLDVTestGenerationtrueHarnessSource'Signal Editor',则无法将数据保存到 Excel 文件。

示例: 'ExcelFileLocation','C:\MATLAB\baseline_data.xlsx'

用于保存数据的 Excel 工作表的名称,指定为由 'Sheet' 和字符向量或字符串组成的逗号分隔的对。如果您正在创建单个测试用例和框架且未指定 Sheet,则使用默认工作表。创建多个测试用例和框架时,如果不指定 Sheet,则使用默认的 Excel 工作表名称。

示例: 'Sheet','MySubsysTest'

是否使用 Simulink Design Verifier 生成测试,指定为:

  • 'off'false—不要使用 Simulink Design Verifier 来生成测试。

  • 'on'true — 使用 Simulink Design Verifier 生成测试并使用模型配置中的 Simulink Design Verifier 选项。

    'EnhancedMCDC' — 使用 Simulink Design Verifier 生成以模型覆盖率目标为增强型 MCDC 的测试。仅当 TestType'equivalence'Simulation2Mode'Software-in-the-Loop (SIL)''Processor-in-the-Loop (PIL)' 时,EnhancedMCDC 选项才有效。

注意

要从 Simulink Design Verifier 生成测试,在测系统必须是原子子系统。

示例: 'SLDVTestGeneration','on'

是否在 Simulink Design Verifier 测试生成期间仿真顶层模型,指定为逻辑值。当返回的测试的模型覆盖率低于预期时,在分析可能的原因并重新配置默认仿真后,将此属性设置为 true。然后,重新运行 Simulink Design Verifier 测试生成。如果覆盖率结果仍然低于预期,则可以迭代分析、仿真重新配置和测试生成。

示例: 'SimulateModelForSLDVTestGeneration','true'

测试框架的输入源模块,指定为由 'HarnessSource''Inport''Signal Editor' 组成的逗号分隔的对。如果您没有生成任何测试输入数据(UseComponentInputsfalse),则不支持此属性。相反,将 HarnessOptions 单元格内的值指定为 {'Source','Test Sequence'}

示例: 'HarnessSource','Signal Editor'

测试框架创建选项,指定为以逗号分隔的名称-值对的元胞数组。请参阅 sltest.harness.create 了解有效选项。不要将 harnessOwner 句柄作为元胞数组中的第一个参量。第一个参量自动设置为 Component 值。

对于以下任一设置,请仅指定 HarnessOptions

  • UseComponentInputsfalse

  • SLDVTestGenerationonEnhancedMCDC)

如果您正在使用 Simulink Design Verifier 并且需要使用外部框架,请使用 HarnessOptions 仅将 SaveExternally 设置为 true。对于这种情况,您不能同时设置其他选项。

示例: 'UseComponentInputs',false,'HarnessOptions',{'SynchronizationMode','SyncOnOpen','Source','Test Sequence','SeparateAssessment',true}

示例: 'SLDVTestGeneration','on','HarnessOptions',{'SaveExternally',true}

输出参量

全部折叠

测试用例,以 sltest.testmanager.TestCase 对象或测试用例的元胞数组返回。如果在创建多个测试用例和框架时测试或框架创建失败,则元胞数组包含具有故障诊断的 MExceptionMSLException 对象。如果 component 是一个数组或元胞数组,并且一个测试或框架创建失败,则该函数会为其他组件创建测试用例和框架,即使一个组件。

测试用例创建状态,以 truefalse 值的数组形式返回。true 表示测试用例创建成功,false 表示创建失败。

版本历史记录

在 R2020b 中推出

全部展开