要件に基づくテストに対する仕様モデルの使用
この例では,仕様モデルを使用して,航空機の自動操縦コントローラーのモデルで形式的要件をモデル化およびテストする方法を説明します。この仕様モデルでは,2つの需求表ブロックを使用して,航空機の自動操縦コントローラーモデルの必要な入力と出力をモデル化します。仕様モデルからテストを生成し,そのテストを航空機の自動操縦コントロ,ラ,モデルで実行します。テスト対象のモデルは“設計モデル”です。
要求表ブロックを定義および設定する方法の詳細にいては、表ブロックを使用した形式的要件の作成(需求工具箱)および形式的要件のプロパティの構成(需求工具箱)を参照してください。
上位レベルの要件の表示
“要件エディタ”で要件セットAP_Controller_Reqs
を開きます。
slreq.open (“AP_Controller_Reqs”);
上位レベルの要件によって,モデルの出力と自動操縦コントロ,ラ,モ,ドが指定されます。各要件の説明では,形式的要件で必要なロジックを明示的に定義するために使うことができる高水準言語が使用されます。
仕様モデルの最初の反復の表示
仕様モデルspec_model_partial
を開きます。
spec_model =“spec_model_partial”;open_system (spec_model);
このモデルには2つの需求表ブロックが含まれていて,上位レベルの要件をテスト可能な論理式に変換する形式的要件を定義します。AP_Mode_Determination
ブロックは自動操縦コントロ,ラ,モ,ドの形式的要件を指定し,Cmd_Determination
ブロックはコントロ,ラ,の出力を指定します。
形式的要件を表示するには、各要求表ブロックを検証します。
コントロ、ラ、モ、ドの要求表ブロック.
AP_Mode_Determination
を開きます。ブロックは、自動操縦コントローラー モードの形式的要件を指定します。出力データ模式
を決定するために,AP_Mode_Determination
は次の2の入力デタを使用して3の要件を指定します。
AP_Engage_Switch
-自動操縦の係合スie浏览器ッチHDG_Engage_Switch
-機首の係合スie浏览器ッチ
各要件は入力の組み合わせを使用して,模式
の一意の出力値を指定します。
コントロ、ラ、コマンドの要求表ブロック.
Cmd_Determination
を開きます。Cmd_Determination
は補助翼コマンドとロ,ル参照コマンドの要件を指定します。Cmd_Determination
は次の4の入力デタを使用します。
模式
- - - - - -AP_Mode_Determination
の出力模式
Roll_Ref_TK
—ロル参照タゲットノブの設定Roll_Angle_Phi
—実際の航空機ロル角HDG_Ref_TK
—機首参照タゲットノブの設定
このブロックでは,これらの入力デ,タを使用して,コントロ,ラ,の出力デ,タを決定します。
Roll_Ref_Cmd
—ロル参照コマンドAil_Cmd
-補助翼コマンド
この例では,式に定数デ,タが使用され,Roll_Ref_TK
およびRoll_Angle_Phi
の値の範囲を定義します。値をパラメ,タ,化するか,リテラル値を使用することもできます。要求表ブロックのデ,タの定義(需求工具箱)を参照してください。これらの値を表示するには,[シンボル]ペ@ @ンを開きます。[モデル化]タブの[デ,タの設計]セクションで[シンボル]ペ电子邮件ンをクリックします。
要件だけでなく,Cmd_Determination
は設計の仮定も定義します。要件への仮定の追加(需求工具箱)を参照してください。この例では,仮定により、物理的な制限に基づいてロール角とロール参照ターゲット ノブの値が制約されます。ロール角は180
度を超えたり,-180年
度を下回ることはできず,ロ,ル参照タ,ゲットノブは30.
を超えたり,-30年
を下回ることはできません。テ,ブルで,[仮定]タブをクリックします。
また,デ,タの[最小値]と[最大値]プロパティでデータ範囲の制限を指定するか,ブロックを使用して信号から範囲を明示的に指定することもできます。
テストの生成
金宝app仿真软件®设计校验™は、需求表ブロックで定義された要件からテストオブジェクティブを自動的に作成します。テストを生成するには,[コンフィギュレーションパラメーター]ウィンドウを使用するか,テストをプログラムによって指定します。テスト生成用のモデルカバレッジオブジェクティブを参照してください。異なるカバレッジオブジェクティブを選択し,生成されるテスト数を最小限に抑える必要があるか,またはテストの精度とトレーサビリティを改善する必要があるかを決定します。
この例では,判定カバレッジを使用してテストが生成され,出力がmatファescルに保存されます。
Opts = sldvoptions;选择。模式=“TestGeneration”;选择。模式lCoverageObjectives =“决定”;[~, files] = sldvrun(spec_model,opts,true);
金宝app仿真软件设计校验は要件からテストオブジェクティブとテストを生成しますが,要件が達成するのは7つのテストオブジェクティブだけです。
テストオブジェクティブを達成するには,仕様モデルを改訂しなければなりません。一般的に,形式的要件が完全で,一貫性があり,上位レベルの要件に対応していることを確認せずに仕様モデルからテストが生成されることを回避します。そうしないと,生成するテストがテストオブジェクティブを達成する可能性が低くなってしまいます。
仕様モデルの調査と更新
仕様モデルを調査し,形式的要件を更新します。この例では,Cmd_Determination
の要件セットには要件3の3番目の箇条書きに対応する形式的要件がありません。
モデルspec_model_final
内のCmd_Determination
を開き,更新された要件セットを表示します。追加要件の@ @ンデックスは2.2.4
です。
spec_model =“spec_model_final”;load_system (spec_model);open_system (spec_model +“/ Cmd_Determination”);
要件セットに含まれる問題を手作業で見けることは困難です。金宝appSimulink设计验证器を使用すると、要件セットを解析し、矛盾と不完全性を特定できます。詳細については、ブロックの要件セットの問題にいての解析(需求工具箱)を参照してください。
上位レベルの要件と形式的要件のリンク
仕様モデルを読み込むと,“要件エディタ”で形式的要件が読み込まれます。仕様モデルを閉じると、関連する要件セットも閉じられます。形式的要件の作成時に、形式的要件を対応する上位レベルの要件にリンクし、仕様モデル内の要件を追跡します。この例では、要件をリンクしてもテスト生成やテスト結果には影響しません。
最初の形式的要件を対応する上位レベルの要件にリンクするには,次の手順を実行します。
spec_model_final
で,table1
という名前の要件セットを展開します。[applerンデックス]が
1
である形式的要件を右クリックし,[要件とのリンクを選択]を選択します。要件セット
AP_Controller_Reqs
を展開します。(ID)が
1
である要件を右クリックし,[1:自动驾驶模式关闭"から"1:高级别:自动驾驶骗局…"へのリンクを作成]をクリックします。
リンクタ@ @プの既定の設定は有关
です。リンクタ化学键プの詳細に化学键いては,链接类型(需求工具箱)を参照してください。
更新したモデルからテストを生成
以前に定義したオプションを使用して,更新された仕様モデルからテストを生成します。
Opts = sldvoptions;选择。模式=“TestGeneration”;选择。模式lCoverageObjectives =“决定”;[~, files] = sldvrun(spec_model,opts,true);
このバ,ジョンの仕様モデルでは,テストオブジェクティブが達成されます。
設計モデルでのテストの実行
テストオブジェクティブを達成するテストを作成したら,そのテストを設計モデルで実行できます。この例では,設計モデルは航空機の自動操縦コントロ,ラ,のモデルsldvexRollApController
です。
設計モデルでテストを実行する前に,仕様モデルと設計モデルとの@ @ @フェ@ @ @ @ @ @ @通常,仕様モデルは設計モデルと同じ信号を生成することも,使用することもありません。こうした違いは,シンプルな場合もあれば,抽象的な場合もあります。たとえば,設計モデルが仕様モデルとは異なる入力および出力信号タイプを使用する場合や,設計モデルからのスカラー出力を仕様モデル内の範囲と比較する場合があります。そのため,設計モデルと仕様モデルの間で@ @ @フェ@ @ @ @ @ @ @
設計モデルと仕様モデルとの▪▪ンタ▪▪フェ▪▪スをとる
この例では,仕様モデルspec_model_final
と設計モデルsldvexRollApController
の入力は直接1。spec_model_final
は補助翼コマンドを値の範囲として表しますが,sldvexRollApController
によって生成される補助翼コマンドの値は双のスカラ,です。インターフェイスはMATLAB函数ブロックを使用して,補助翼コマンドの値を比較します。その後,ブロックを使用して両方の出力を検証します。モデルspec_model_test_interface
を開いて,。
test_interface =“spec_model_test_interface”;open_system (test_interface);
MATLAB函数ブロックは,次のコ,ドを使用して2の信号を比較します。
函数Y = fcn(design_val, spec_val)开关spec_val情况下Ail_Cmd。全部y = true;情况下Ail_Cmd。0 y = (design_val == 0);否则Y = false;结束
更新されたテストを設計モデルで実行
設計モデルをテストして検証するには,次を含むハ,ネスモデルを作成します。
仕様モデル
設計モデル
テスト▪▪ンタ▪▪フェ▪▪スと検証モデル
ハ,ネスモデルで,モデルを一緒に付加します。次に,設計モデルでテストを実行し,出力がハ,ネスモデル内の要件に対応することを検証します。
ハ,ネスモデルを表示するには,モデルsldvexDesignHarnessFinal
を開きます。
harness_model =“sldvexDesignHarnessFinal”;open_system (harness_model);
インターフェイスモデルと同様に,設計モデルのすべての入力が仕様モデルの入力に直接対応するとは限らない場合があります。この例では,仕様モデルによって指定された 5 つの入力を使用してテストするために、ハーネス モデルによって設計モデルが準備されます。
ハ,ネスモデル内から,設計モデルで更新済みテストを実行します。関数sldvruntest
を使用して,テストを実行し,結果を保存します。金宝app仿真软件覆盖™ をお使いの場合は、sldvruntest
の出力からのテスト結果をカバレッジレポ,トで確認できます。関数cvhtml
(金宝app仿真软件覆盖)を使用して,カバレッジレポ,トを表示します。
cvots = sldvruntestopts;cvopts。coverageEnabled = true;[finalData, finalCov] = sldvruntest(harness_model,files.DataFile,cvopts);cvhtml (“finalCov”, finalCov);
カバレッジレポ,トには,設計モデルsldvexRollApController
でフルカバレッジが達成されたことが示されます。
bdclose (“所有”);slreq.clear;
参考
需求表(需求工具箱)