В этом примере показано, как использовать функции командной строки Simulink® Design Verifier™, чтобы сгенерировать тестовые данные, который включает различные значения параметров.
Модель в качестве примера является простым контроллером одним параметром. Постоянный параметр 'control_mode' может быть или 1 или 2. Параметр должен принять оба значения для тестов, чтобы достигнуть полного обзора. Значение определяет блок switch выход и который включил подсистему, выполнится.
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' на Signal Builder.
close_system(newModelName,0); sldvdemo_playall(modelName);

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