Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

コマンド ライン関数を使用したパラメーターの変更のサポート

この例では、Simulink® Design Verifier™ のコマンド ライン関数を使用して、さまざまなパラメーター値を含むテスト データを生成する方法を説明します。

調整可能なパラメーターをもつコントローラー モデル

このモデル例は、1 つのパラメーターをもつ単純なコントローラーです。定数パラメーター 'control_mode' は 1 または 2 の値をとります。このパラメーターは、フル カバレッジを達成するためテスト ケースで両方の値を受け入れなければなりません。この値により、スイッチ ブロックの出力と実行する有効なサブシステムが決まります。

open_system('sldvdemo_param_controller');

解析のパラメーター値の指定

Simulink Design Verifier はパラメーター値を識別しません。このツールは、テスト生成とプロパティ証明に対する解析の開始時にパラメーター値を使用します。異なる値で解析を繰り返すと、変化するパラメーター値を強制的にツールに組み込むことができます。

Design Verifier の最初の反復では、control_mode=1 を使用します。

control_mode = 1;

Simulink® Design Verifier™ のオプション

Simulink Design Verifier 関数は、関数 sldvoptions で作成されたオプション オブジェクトを使用して、解析および出力のすべてを制御します。

この例では、テスト生成モードで最大 300 秒間 Simulink Design Verifier を実行し、ハーネス モデルを生成します。レポート生成は無効にします。

残りのオプションの既定値は、テストが生成されるように正しく設定されています。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 07-May-2021 21:27:33...
..............

Completed normally.

Generating output files:

    Harness model:
    /tmp/Bdoc21a_1669600_218335/tp95884528/ex05697027/sldv_output/sldvdemo_param_controller/sldvdemo_param_controller_harness.slx

Results generation completed.

    Data file:
    /tmp/Bdoc21a_1669600_218335/tp95884528/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;'

パラメーターの変更とテスト生成の反復

パラメーター値を変更して、テスト生成を追加することができます。カバレッジ データ オブジェクトを 3 番目の入力として sldvgencov に渡すと、この関数は既にモデル カバレッジが達成されているすべてのテスト オブジェクティブを無視します。ここでは、sldvgencov の以前の呼び出しにより返されたカバレッジ データを使用して、達成されていないテスト オブジェクティブにテスト生成を制限します。

control_mode=2;
[status,newCov,newFiles] = sldvgencov('sldvdemo_param_controller',opts,false,coverageData);
Validating cached model representation from 07-May-2021 21:27:33...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 07-May-2021 21:28:02...
..............

Completed normally.

Generating output files:

    Harness model:
    /tmp/Bdoc21a_1669600_218335/tp95884528/ex05697027/sldv_output/sldvdemo_param_controller/sldvdemo_param_controller_harness1.slx

Results generation completed.

    Data file:
    /tmp/Bdoc21a_1669600_218335/tp95884528/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;'

ハーネス モデルのテストの実行

テスト ケースは最初のハーネス モデルにマージされているので、作成された 2 番目のハーネス モデルを閉じます。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);