В этом примере показано, как использовать функции командной строки Simulink ® Design Verifier™ для создания тестовых данных, включающих различные значения параметров.
Примером модели является простой контроллер с одним параметром. Параметр константы «control _ mode» может быть либо 1, либо 2. Для достижения полного покрытия параметр должен принимать оба значения для тестовых случаев. Значение определяет выход блока коммутатора и подсистему, которая будет работать.
open_system('sldvdemo_param_controller');

Simulink Design Verifier не определяет значения параметров. Для создания тестов и проверки свойств инструмент использует значения параметров в начале анализа. Можно принудительно включить в инструмент изменяющиеся значения параметров, повторив анализ с различными значениями.
Первая итерация верификатора конструкции будет использовать control_mode=1.
control_mode = 1;
Функции Simulink Design Verifier используют объекты опций, созданные с помощью sldvoptions функция для управления всеми аспектами анализа и вывода.
В этом примере мы запустим Simulink Design Verifier в тестовом режиме генерации в течение максимум 300 секунд и создадим модель электрического жгута. Мы отключим генерацию отчетов.
Значения по умолчанию для остальных параметров устанавливаются правильно для создания тестов. Вы можете использовать get для отображения всех параметров и значений.
opts = sldvoptions; opts.Mode = 'TestGeneration'; opts.MaxProcessTime = 300; opts.SaveHarnessModel = 'on'; opts.SaveReport = 'off'; opts.HarnessModelFileName = '$ModelName$_harness.slx'; get(opts)
Mode: 'TestGeneration'
MaxProcessTime: 300
AutomaticStubbing: 'on'
UseParallel: 'off'
DesignMinMaxConstraints: 'on'
OutputDir: 'sldv_output/$ModelName$'
MakeOutputFilesUnique: 'on'
BlockReplacement: 'off'
BlockReplacementRulesList: '<FactoryDefaultRules>'
BlockReplacementModelFileName: '$ModelName$_replacement'
Parameters: 'off'
ParametersConfigFileName: 'sldv_params_template.m'
ParameterNames: []
ParameterConstraints: []
ParameterUseInAnalysis: []
ParametersUseConfig: 'off'
TestgenTarget: 'Model'
ModelCoverageObjectives: 'ConditionDecision'
TestConditions: 'UseLocalSettings'
TestObjectives: 'UseLocalSettings'
MaxTestCaseSteps: 10000
TestSuiteOptimization: 'Auto'
Assertions: 'UseLocalSettings'
ProofAssumptions: 'UseLocalSettings'
ExtendExistingTests: 'off'
ExistingTestFile: ''
IgnoreExistTestSatisfied: 'on'
IgnoreCovSatisfied: 'off'
CoverageDataFile: ''
CovFilter: 'off'
CovFilterFileName: ''
IncludeRelationalBoundary: 'off'
RelativeTolerance: 0.0100
AbsoluteTolerance: 1.0000e-05
DetectDeadLogic: 'off'
DetectActiveLogic: 'off'
DetectOutOfBounds: 'on'
DetectDivisionByZero: 'on'
DetectIntegerOverflow: 'on'
DetectInfNaN: 'off'
DetectSubnormal: 'off'
DesignMinMaxCheck: 'off'
DetectDSMAccessViolations: 'off'
DetectHISMViolationsHisl_0002: 'off'
DetectHISMViolationsHisl_0003: 'off'
DetectHISMViolationsHisl_0004: 'off'
DetectHISMViolationsHisl_0028: 'off'
DetectBlockInputRangeViolations: 'off'
ProvingStrategy: 'Prove'
MaxViolationSteps: 20
DataFileName: '$ModelName$_sldvdata'
SaveExpectedOutput: 'off'
RandomizeNoEffectData: 'off'
SaveHarnessModel: 'on'
HarnessModelFileName: '$ModelName$_harness.slx'
ModelReferenceHarness: 'off'
HarnessSource: 'Signal Builder'
SaveReport: 'off'
ReportPDFFormat: 'off'
ReportFileName: '$ModelName$_report'
ReportIncludeGraphics: 'off'
DisplayReport: 'on'
SFcnSupport: 'on'
CodeAnalysisExtraOptions: ''
CodeAnalysisIgnoreVolatile: 'on'
ReduceRationalApprox: 'on'
SlTestFileName: '$ModelName$_test'
SlTestHarnessName: '$ModelName$_sldvharness'
SlTestHarnessSource: 'Inport'
StrictEnhancedMCDC: 'off'
RebuildModelRepresentation: 'IfChangeIsDetected'
sldvgencov функция создает вместе наборы тестов и покрытие модели. Все тесты, которые могут быть сгенерированы с текущими значениями параметров, будут собраны в модели кабельных трасс, и результирующее покрытие будет возвращено в объект данных покрытия.
[status,coverageData,files] = sldvgencov('sldvdemo_param_controller',opts);
Checking compatibility for test generation: model 'sldvdemo_param_controller'
Compiling model...done
Building model representation...done
'sldvdemo_param_controller' is compatible for test generation with Simulink Design Verifier.
Generating tests using model representation from 27-Jan-2021 09:24:41...
..............
Completed normally.
Generating output files:
Harness model:
/tmp/BR2021ad_1584584_202060/publish_examples0/tp6e10a940/ex05697027/sldv_output/sldvdemo_param_controller/sldvdemo_param_controller_harness.slx
Results generation completed.
Data file:
/tmp/BR2021ad_1584584_202060/publish_examples0/tp6e10a940/ex05697027/sldv_output/sldvdemo_param_controller/sldvdemo_param_controller_sldvdata.mat


Созданные тестовые примеры должны выполняться с теми же значениями параметров, которые использовались во время анализа. Команда инициализации настраивает значения во время моделирования тестовых случаев. sldvharnessmerge функция включает команды инициализации в тестовые жгуты.
initCmdStr = 'control_mode=1;'
[path,modelName] = fileparts(files.HarnessModel);
sldvmergeharness(modelName,modelName,initCmdStr);
initCmdStr =
'control_mode=1;'
Изменение значений параметров позволяет создать дополнительный тест. Передача объекта данных покрытия в качестве третьего ввода в sldvgencov заставляет функцию игнорировать все цели теста покрытия модели, которые были выполнены. Мы используем данные переадресации, которые были возвращены из предыдущего вызова sldvgencov ограничить генерацию теста неудовлетворительными целями тестирования.
control_mode=2;
[status,newCov,newFiles] = sldvgencov('sldvdemo_param_controller',opts,false,coverageData);
Validating cached model representation from 27-Jan-2021 09:24:41...change detected
Checking compatibility for test generation: model 'sldvdemo_param_controller'
Compiling model...done
Building model representation...done
'sldvdemo_param_controller' is compatible for test generation with Simulink Design Verifier.
Generating tests using model representation from 27-Jan-2021 09:24:57...
..............
Completed normally.
Generating output files:
Harness model:
/tmp/BR2021ad_1584584_202060/publish_examples0/tp6e10a940/ex05697027/sldv_output/sldvdemo_param_controller/sldvdemo_param_controller_harness1.slx
Results generation completed.
Data file:
/tmp/BR2021ad_1584584_202060/publish_examples0/tp6e10a940/ex05697027/sldv_output/sldvdemo_param_controller/sldvdemo_param_controller_sldvdata1.mat



Еще один звонок sldvharnessmerge объединяет тестовые данные из нового электрического жгута и его команды инициализации в существующую модель электрического жгута.
newInitCmd = 'control_mode=2;'
[path,newModelName] = fileparts(newFiles.HarnessModel);
sldvmergeharness(modelName,newModelName,newInitCmd);
newInitCmd =
'control_mode=2;'

Мы закрываем вторую модель электрического жгута, которая была создана, поскольку тестовые примеры были объединены в первую модель электрического жгута. Вы можете выполнить набор тестов, нажав кнопку «Run all» в построителе сигналов.
close_system(newModelName,0); sldvdemo_playall(modelName);

Чтобы завершить пример, закройте модели и удалите созданные файлы.
close_system(modelName,0);
close_system('sldvdemo_param_controller',0);
delete(files.HarnessModel);
delete(newFiles.HarnessModel);