主要内容

要件に基づくテストに対する仕様モデルの使用

この例では,仕様モデルを使用して,航空機の自動操縦コントローラーのモデルで形式的要件をモデル化およびテストする方法を説明します。この仕様モデルでは,2つの需求表ブロックを使用して,航空機の自動操縦コントローラーモデルの必要な入力と出力をモデル化します。仕様モデルからテストを生成し,そのテストを航空機の自動操縦コントロ,ラ,モデルで実行します。テスト対象のモデルは“設計モデル”です。

要求表ブロックを定義および設定する方法の詳細にいては、表ブロックを使用した形式的要件の作成(需求工具箱)および形式的要件のプロパティの構成(需求工具箱)を参照してください。

上位レベルの要件の表示

“要件エディタ”で要件セットAP_Controller_Reqsを開きます。

slreq.open (“AP_Controller_Reqs”);

上位レベルの要件によって,モデルの出力と自動操縦コントロ,ラ,モ,ドが指定されます。各要件の説明では,形式的要件で必要なロジックを明示的に定義するために使うことができる高水準言語が使用されます。

这个图像显示了需求编辑器中的需求集AP_Controller_Reqs。

仕様モデルの最初の反復の表示

仕様モデルspec_model_partialを開きます。

spec_model =“spec_model_partial”;open_system (spec_model);

このモデルには2つの需求表ブロックが含まれていて,上位レベルの要件をテスト可能な論理式に変換する形式的要件を定義します。AP_Mode_Determinationブロックは自動操縦コントロ,ラ,モ,ドの形式的要件を指定し,Cmd_Determinationブロックはコントロ,ラ,の出力を指定します。

此图像显示了规范模型spec_model_partial。该模型有两个连接在一起的Requirements Table块。

形式的要件を表示するには、各要求表ブロックを検証します。

コントロ、ラ、モ、ドの要求表ブロック.

AP_Mode_Determinationを開きます。ブロックは、自動操縦コントローラー モードの形式的要件を指定します。出力データ模式を決定するために,AP_Mode_Determinationは次の2の入力デタを使用して3の要件を指定します。

  • AP_Engage_Switch-自動操縦の係合スie浏览器ッチ

  • HDG_Engage_Switch-機首の係合スie浏览器ッチ

各要件は入力の組み合わせを使用して,模式の一意の出力値を指定します。

该图像显示了AP_Mode_Determination的表格。该块指定了自动驾驶仪控制器模式的正式要求。

コントロ、ラ、コマンドの要求表ブロック.

Cmd_Determinationを開きます。Cmd_Determinationは補助翼コマンドとロ,ル参照コマンドの要件を指定します。Cmd_Determinationは次の4の入力デタを使用します。

  • 模式- - - - - -AP_Mode_Determinationの出力模式

  • Roll_Ref_TK—ロル参照タゲットノブの設定

  • Roll_Angle_Phi—実際の航空機ロル角

  • HDG_Ref_TK—機首参照タゲットノブの設定

このブロックでは,これらの入力デ,タを使用して,コントロ,ラ,の出力デ,タを決定します。

  • Roll_Ref_Cmd—ロル参照コマンド

  • Ail_Cmd-補助翼コマンド

这个图像显示了Cmd_Determination的表。Cmd_Determination指定副翼命令和滚转参考命令的要求。

この例では,式に定数デ,タが使用され,Roll_Ref_TKおよびRoll_Angle_Phiの値の範囲を定義します。値をパラメ,タ,化するか,リテラル値を使用することもできます。要求表ブロックのデ,タの定義(需求工具箱)を参照してください。これらの値を表示するには,[シンボル]ペ@ @ンを開きます。[モデル化]タブの[デ,タの設計]セクションで[シンボル]ペ电子邮件ンをクリックします。

要件だけでなく,Cmd_Determinationは設計の仮定も定義します。要件への仮定の追加(需求工具箱)を参照してください。この例では,仮定により、物理的な制限に基づいてロール角とロール参照ターゲット ノブの値が制約されます。ロール角は180度を超えたり,-180年度を下回ることはできず,ロ,ル参照タ,ゲットノブは30.を超えたり,-30年を下回ることはできません。テ,ブルで,[仮定]タブをクリックします。

此图像显示了Cmd_Determination中使用的假设。

また,デ,タの[最小値][最大値]プロパティでデータ範囲の制限を指定するか,ブロックを使用して信号から範囲を明示的に指定することもできます。

テストの生成

金宝app仿真软件®设计校验™は、需求表ブロックで定義された要件からテストオブジェクティブを自動的に作成します。テストを生成するには,[コンフィギュレーションパラメーター]ウィンドウを使用するか,テストをプログラムによって指定します。テスト生成用のモデルカバレッジオブジェクティブを参照してください。異なるカバレッジオブジェクティブを選択し,生成されるテスト数を最小限に抑える必要があるか,またはテストの精度とトレーサビリティを改善する必要があるかを決定します。

この例では,判定カバレッジを使用してテストが生成され,出力がmatファescルに保存されます。

Opts = sldvoptions;选择。模式=“TestGeneration”;选择。模式lCoverageObjectives =“决定”;[~, files] = sldvrun(spec_model,opts,true);

金宝app仿真软件设计校验は要件からテストオブジェクティブとテストを生成しますが,要件が達成するのは7つのテストオブジェクティブだけです。

此图像显示了在规范模型上生成测试的结果。需求只满足七个测试目标。

テストオブジェクティブを達成するには,仕様モデルを改訂しなければなりません。一般的に,形式的要件が完全で,一貫性があり,上位レベルの要件に対応していることを確認せずに仕様モデルからテストが生成されることを回避します。そうしないと,生成するテストがテストオブジェクティブを達成する可能性が低くなってしまいます。

仕様モデルの調査と更新

仕様モデルを調査し,形式的要件を更新します。この例では,Cmd_Determinationの要件セットには要件3の3番目の箇条書きに対応する形式的要件がありません。

这个图像显示了第三个高级需求的描述。Cmd_Determination中缺少的需求在红色框中。

モデルspec_model_final内のCmd_Determinationを開き,更新された要件セットを表示します。追加要件の@ @ンデックスは2.2.4です。

spec_model =“spec_model_final”;load_system (spec_model);open_system (spec_model +“/ Cmd_Determination”);

这个图像显示了Cmd_Determination更新后的形式需求。新要求在红框中。

要件セットに含まれる問題を手作業で見けることは困難です。金宝appSimulink设计验证器を使用すると、要件セットを解析し、矛盾と不完全性を特定できます。詳細については、ブロックの要件セットの問題にいての解析(需求工具箱)を参照してください。

上位レベルの要件と形式的要件のリンク

仕様モデルを読み込むと,“要件エディタ”で形式的要件が読み込まれます。仕様モデルを閉じると、関連する要件セットも閉じられます。形式的要件の作成時に、形式的要件を対応する上位レベルの要件にリンクし、仕様モデル内の要件を追跡します。この例では、要件をリンクしてもテスト生成やテスト結果には影響しません。

最初の形式的要件を対応する上位レベルの要件にリンクするには,次の手順を実行します。

  1. spec_model_finalで,table1という名前の要件セットを展開します。

  2. [applerンデックス]1である形式的要件を右クリックし,[要件とのリンクを選択]を選択します。

  3. 要件セットAP_Controller_Reqsを展開します。

  4. (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);

该图像显示了模型spec_model_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;结束

更新されたテストを設計モデルで実行

設計モデルをテストして検証するには,次を含むハ,ネスモデルを作成します。

  1. 仕様モデル

  2. 設計モデル

  3. テスト▪▪ンタ▪▪フェ▪▪スと検証モデル

ハ,ネスモデルで,モデルを一緒に付加します。次に,設計モデルでテストを実行し,出力がハ,ネスモデル内の要件に対応することを検証します。

ハ,ネスモデルを表示するには,モデルsldvexDesignHarnessFinalを開きます。

harness_model =“sldvexDesignHarnessFinal”;open_system (harness_model);

インターフェイスモデルと同様に,設計モデルのすべての入力が仕様モデルの入力に直接対応するとは限らない場合があります。この例では,仕様モデルによって指定された 5 つの入力を使用してテストするために、ハーネス モデルによって設計モデルが準備されます。

这张图片显示了线束模型sldvexDesignHarnessFinal。

ハ,ネスモデル内から,設計モデルで更新済みテストを実行します。関数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;

参考

(需求工具箱)

関連するトピック