メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

テスト ハーネスの管理

モデルに関連付けられているテスト ハーネスをエクスポート、クローン、移動、削除したり、モデルでのテスト ハーネスの格納場所を変更したりできます。テスト ハーネスは、モデルの SLX ファイルまたは MDL ファイルの一部として内部に保存するか、独立した SLX ファイルとして外部に保存できます。すべてのテスト ハーネスが内部または外部のどちらかでなければならないため、1 つのモデルで両方のタイプのハーネスの格納先を使用することはできません。

モデルを構成管理システムに格納する場合は、外部テスト ハーネスの使用を検討してください。外部テスト ハーネスを使用すると、モデル ファイルを変更せずにハーネスの作成や変更が可能です。モデルを頻繁に共有する予定の場合は、内部テスト ハーネスの使用を検討してください。内部テスト ハーネスを作成または変更すると、モデルの SLX ファイルまたは MDL ファイルが変更されます。テスト ハーネスで提供される同期、プッシュ、リビルド、およびバッジのインターフェイス機能は、内部と外部のどちらでも同じです。

ハーネス オーナーであるモデルの名前を取得するには、以下を使用します。

get_param(<harness name or handle>,"OwnerBDName")

外部テスト ハーネスの管理

外部テスト ハーネスをもつモデルでは、各ハーネスの個別の SLX ファイルと <modelName>_harnessInfo.xml という名前の XML ファイルを使用して、モデルとハーネスをリンクするメタデータを格納します。テスト ハーネスを変更すると、harnessInfo.xml ファイルが変わることがあります。メタデータとモデルは、モデルの一意の ID を使用してリンクされます。既定では、メタデータ XML ファイルはモデルと同じフォルダーに作成されます。

外部テスト ハーネスについては、以下のガイドラインに従ってください。

警告

harnessInfo.xml ファイルを削除したり手動で変更したりしないでください。harnessInfo.xml ファイルを削除すると、モデルとハーネスの間の関係が破棄される可能性があります。この場合、モデルから再生成することはできません。

  • テスト ハーネスやメイン モデルへの変更を保存するために、harnessInfo.xml ファイルは書き込み可能でなければなりません。

  • テスト ハーネスの SLX ファイルを格納するフォルダーは MATLAB® パス上になければなりません。

  • テスト ハーネスの harnessInfo.xml ファイルがモデルと同じフォルダーにない場合、XML ファイルまたはそのフォルダーは MATLAB パス上になければなりません。

  • 内部テスト ハーネスを外部テスト ハーネスに変換する場合、新しい SLX ファイルは現在の作業フォルダーに保存されます。

  • 外部テスト ハーネスを内部テスト ハーネスに変換する場合、外部 SLX ファイルは MATLAB パス上のどこにあってもかまいません。

  • モデルで外部テスト ハーネスを使用している場合、モデルのコピーの作成は [保存][名前を付けて保存] のみを使用して行います。[名前を付けて保存] を使用すると、新しいモデルの保存先フォルダーに外部テスト ハーネスがコピーされ、ハーネスの名前が変更されて、ハーネス情報が現在の状態に維持されます。

    ディスクにモデル ファイルをコピーしても、モデルに関連付けられている外部ハーネスはコピーされません。

  • テスト ハーネスの変更や削除は、Simulink® の UI またはコマンドのみを使用して行います。

    • テスト ハーネスを削除するには、サムネイルの UI または sltest.harness.delete コマンドを使用します。

    • テスト ハーネスの名前を変更するには、ハーネス プロパティの UI または sltest.harness.set コマンドを使用します。

    • 外部に保存されたテスト ハーネスのコピーを作成するには、sltest.harness.clone コマンドを使用するか、[保存][名前を付けて保存] を使用して新しい名前でテスト ハーネスを保存します。

    Simulink の外部でハーネス ファイルの削除や名前変更を行うと、harnessInfo.xml ファイルが不正確になり、テスト ハーネスの読み込みで問題が生じます。

内部テスト ハーネスと外部テスト ハーネスの間の変換

モデルにおけるテスト ハーネスの格納方法は、モデルのライフサイクルのさまざまなフェーズで変更できます。以下に例を示します。

  • レビュー用にモデルをより簡単に共有できるように、内部テスト ハーネスを使用してモデルを開発します。設計が完了してモデルを変更管理下に置いたら、外部ハーネスに変換します。

  • 構成管理モデルを新しい設計の開始点として使用します。既存のモデルを変更しないように、外部ハーネスを使用してテストします。その後、既存のモデルのコピーを作成します。新しい開発フェーズ用に内部ハーネスに変換します。

テスト ハーネスの格納先を外部 (または内部) に変更するには、次のようにします。

  1. メイン モデルの最上位に移動します。

  2. [アプリ] タブの [モデルの検証、妥当性確認、テスト] で [Simulink Test] をクリックします。次に、[テスト] タブで [テスト ハーネスを管理][外部ハーネスに変換] または [内部ハーネスに変換] をクリックします。

  3. 変換手順と影響を受けるテスト ハーネスの情報がダイアログ ボックスに表示されます。[はい] をクリックして続行します。

    ハーネスが変換されます。

  4. 外部テスト ハーネスへの変換では、各テスト ハーネスの SLX ファイルとハーネス情報の XML ファイル <modelName>_harnessInfo.xml が作成されます。

    External test harness and files list

    反対に、内部テスト ハーネスへの変換では、テスト ハーネスの SLX ファイルと harnessInfo.xml ファイルが移動されます。

    Internal harness and main model list

テスト ハーネスをプレビューして開く

モデル コンポーネントにテスト ハーネスがある場合、ブロックの右下にバッジが表示されます。テスト ハーネスを表示するには、バッジをクリックします。テスト ハーネスを開くには、タイルをクリックします。

Test harness tiles from component badge

モデルのブロック線図のテスト ハーネスを表示するには、モデルのキャンバスで引き出しアイコンをクリックします。テスト ハーネスを開くには、タイルをクリックします。

Test harness tiles from canvas pullout

モデルおよびテスト ハーネスのロック

モデルおよびテスト ハーネスのロックは同期のタイプごとに固有です。詳細については、Synchronization Modeを参照してください。

テスト ハーネスに関連付けられているテスト ケースの検索

テスト ハーネスを参照する開いているテスト ケースをリストするには、テスト ハーネスのキャンバスでバッジ をクリックします。テスト ケースの名前をクリックすると、テスト マネージャーでそのテスト ケースに移動できます。

Test cases of a test harness

スタンドアロン モデルへのテスト ハーネスのエクスポート

テスト ハーネスをスタンドアロン モデルにエクスポートできます。これは、テスト ハーネスをアーカイブする場合や、モデルは共有せずにテスト ハーネスの設計を共有する場合に便利です。

  • 個々のテスト ハーネスをエクスポートするには、次のようにします。

    1. 個々のハーネス モデルから、[アプリ] タブの [モデルの検証、妥当性確認、テスト][Simulink Test] をクリックします。

    2. [ハーネス] タブで [分離してエクスポート] をクリックします。

    3. [テスト ハーネスを個別のモデルにエクスポート] ダイアログ ボックスで、[OK] をクリックします。

    4. [名前を付けて保存] ダイアログ ボックスで、スタンドアロン ハーネス モデルのファイル名を入力し、[OK] をクリックします。

    5. ハーネスがスタンドアロン モデルに変換されます。

      変換では、メイン モデルからハーネスが削除され、メイン モデルへの関係が解除されます。モデルにハーネスが 1 つしかない場合、その harnessInfo.xml ファイルは削除されます。モデルにハーネスが複数ある場合は、そのいずれかを削除すると、harnessInfo.xml ファイルが更新されます。

  • モデル内のすべてのハーネスをエクスポートするには、次のようにします。

    1. モデルの最上位レベルに移動します。いずれのブロックも選択しないでください。

    2. [アプリ] タブの [モデルの検証、妥当性確認、テスト][Simulink Test] をクリックします。

    3. [ハーネス] タブで [分離してエクスポート] をクリックします。

    4. [テスト ハーネスを個別のモデルにエクスポート] ダイアログ ボックスで、[OK] をクリックします。

    5. [名前を付けて保存] ダイアログ ボックスで、個別のモデルのファイル名を入力し、[OK] をクリックします。

    6. すべてのテスト ハーネスがエクスポートされ、スタンドアロン モデルに変換されます。

      エクスポートでは、メイン モデルからハーネスが削除され、harnessInfo.xml ファイルが削除され、メイン モデルへの関係が解除されます。

sltest.harness.export を参照してください。

テスト ハーネスの移動とクローン

Simulink Test™ を使用すると、モデルをコンパイルすることなく、ソース オーナーから宛先オーナーにテスト ハーネスを移動またはクローンできます。以下の移動またはクローンが可能です。

  • サブシステムのハーネスをサブシステム間で。宛先のサブシステムは別のモデルのものでもかまいません。

  • ライブラリ コンポーネントのハーネスをライブラリ間で。

  • Subsystem Reference ブロックのハーネスを他の Subsystem Reference ブロックのハーネスに。

  • Subsystem Reference ブロックのハーネスをサブシステム モデルのハーネスとの間で。

ハーネスを移動またはクローンするには、Simulink キャンバスを右クリックし、[テスト ハーネス][テスト ハーネスを管理] を選択します。[テスト ハーネスを管理] ダイアログ ボックスが開き、[ハーネス オーナー別にフィルター] で指定されたサブシステムまたはブロックに関連付けられているテスト ハーネスがリストされます。[アクション] をクリックして [移動] オプションと [クローン] オプションにアクセスします。

Manage Test Harnesses dialog box Actions menu

Move Harness dialog box

宛先のパスを選択し、テスト ハーネスに名前を付けます。

サブシステムをモデル参照に変換するときのテスト ハーネスの転送

Subsystem ブロックまたは Subsystem Reference ブロックを Model ブロックに変換すると、参照されるモデルにテスト ハーネスが転送されます。Subsystem ブロックのハーネスは、ブロック線図のハーネスに変換されます。サブシステム内の入れ子になったハーネスは、Model ブロック内の同一のブロックにコピーされます。転送されたハーネスは、モデル参照内ではいずれも内部ハーネスになります。テスト ハーネスは、転送されると名前が変わることがあります。変換アドバイザーの [変換を完了] ペインまたは MATLAB コマンド ラインで、ハーネスの転送に関するフィードバックを参照できます。

Subsystem ブロックまたは Subsystem Reference ブロックを Model ブロックに変換する際は、次の制限が適用されます。

  • SIL および PIL のハーネスは転送されません。

  • サブシステムのテスト ハーネスに含まれる要件は転送されません。それらは手動でコピーする必要があります。

テスト ハーネスのクローンと別のモデルへのエクスポート

この例では、既存のテスト ハーネスをクローンし、クローンしたハーネスを別のモデルにエクスポートする方法を示します。これは、テスト ハーネスのコピーを別のモデルとして作成し、モデル コンポーネントに関連付けられているテスト ハーネスは残しておく場合に役立つことがあります。

ワークフローの概要

  1. クローンするテスト ハーネスの正確なプロパティが不明な場合は、sltest.harness.find を使用してそれらを取得します。ハーネス オーナー ID とハーネス名が必要です。

  2. sltest.harness.clone を使用してテスト ハーネスをクローンします。

  3. sltest.harness.export を使用してテスト ハーネスを別のモデルにエクスポートします。エクスポートされたモデルと元のモデルの間に関連付けはないことに注意してください。エクスポートされたモデルはスタンドアロンになります。

モデルを開く

open_system("sf_car")

ソース テスト ハーネスのプロパティを取得

properties = sltest.harness.find("sf_car/shift_logic")
properties = 

  struct with fields:

                    model: 'sf_car'
                     name: 'TestDownshiftPointsHarness'
              description: ''
                     type: 'Testing'
              ownerHandle: 415.0007
            ownerFullPath: 'sf_car/shift_logic'
                ownerType: 'Simulink.SubSystem'
                   isOpen: 0
              canBeOpened: 1
         verificationMode: 0
           saveExternally: 0
            rebuildOnOpen: 0
         rebuildModelData: 0
      postRebuildCallback: ''
                graphical: 0
                  origSrc: 'Test Sequence'
                 origSink: 'Test Assessment'
      synchronizationMode: 2
      existingBuildFolder: ''
    functionInterfaceName: ''

テスト ハーネスをクローン

sltest.harness.clone とハーネス プロパティの構造体の ownerFullPath フィールドおよび name フィールドを使用して、テスト ハーネスをクローンします。

newHarness = "ControllerHarness";
sltest.harness.clone(properties.ownerFullPath, ...
    properties.name,newHarness)

テスト ハーネスを別のモデルにエクスポート

sltest.harness.export を使用してテスト ハーネスをエクスポートします。エクスポートされるモデルの名前は ControllerTestModel です。

  sltest.harness.export("sf_car/shift_logic",newHarness,...
      Name="ControllerTestModel")

モデルを保存せずに閉じます。

close_system("sf_car",0)

プログラムによるテスト ハーネスの削除

この例では、テスト ハーネスをプログラムで削除する方法を示します。プログラム インターフェイスを使用した削除は、モデルのさまざまな階層レベルに複数のテスト ハーネスがある場合に役立つことがあります。この例では、4 つのテスト ハーネスを作成してから、それらを削除する方法を示します。

1.モデルを開きます。

model = "sf_car";
open_system(model);

2.モデル内の元のハーネスの名前とオーナーを表示します。

testHarnesses = sltest.harness.find(model);
originalHarness = testHarnesses.name;
disp(table({testHarnesses.name}', ...
    {testHarnesses.ownerFullPath}', ...
    VariableNames=["Name","Owner"]))
                 Name                         Owner         
    ______________________________    ______________________

    {'TestDownshiftPointsHarness'}    {'sf_car/shift_logic'}

3.transmission サブシステムのハーネスを 2 つと transmission ratio サブシステムのハーネスを 2 つ作成します。

subsystem1 = "sf_car/transmission";
subsystem2 = "sf_car/transmission/transmission ratio";

sltest.harness.create(subsystem1);
sltest.harness.create(subsystem1);
sltest.harness.create(subsystem2);
sltest.harness.create(subsystem2);

4.モデル内のハーネスの名前とオーナーを表示します。

testHarnesses = sltest.harness.find(model);
disp(table({testHarnesses.name}', ...
    {testHarnesses.ownerFullPath}', ...
    VariableNames=["Name","Owner"]))
                 Name                                   Owner                   
    ______________________________    __________________________________________

    {'TestDownshiftPointsHarness'}    {'sf_car/shift_logic'                    }
    {'sf_car_Harness1'           }    {'sf_car/transmission'                   }
    {'sf_car_Harness2'           }    {'sf_car/transmission'                   }
    {'sf_car_Harness3'           }    {'sf_car/transmission/transmission↵ratio'}
    {'sf_car_Harness4'           }    {'sf_car/transmission/transmission↵ratio'}

5.新しいハーネスを削除します。

for k = 1:length(testHarnesses)
    if ~strcmp(testHarnesses(k).name,originalHarness)
        sltest.harness.delete(testHarnesses(k).ownerFullPath,...
            testHarnesses(k).name)
    end
end

6.モデル内のハーネスの名前とオーナーを表示します。

testHarnesses = sltest.harness.find(model);
disp(table({testHarnesses.name}', ...
    {testHarnesses.ownerFullPath}', ...
    VariableNames=["Name","Owner"]))
                 Name                         Owner         
    ______________________________    ______________________

    {'TestDownshiftPointsHarness'}    {'sf_car/shift_logic'}

7.モデルを保存せずに閉じます。

close_system(model,0);

以前のバージョンへのテスト ハーネスのエクスポート

1 つ以上のテスト ハーネスをもつ Simulink モデルを以前の MATLAB バージョンにエクスポートする場合、ハーネスへの影響はそれらが内部であるか外部であるかによって異なります。

  • 内部ハーネスをもつモデルでは、ハーネスは内部のままで、モデルと一緒にエクスポートされます。

  • 外部ハーネスをもつモデルでは、エクスポートされたモデル内のハーネスは内部ハーネスに変換されます。内部ハーネスを変更して外部に戻すには、内部テスト ハーネスと外部テスト ハーネスの間の変換を参照してください。

内部ハーネスまたは外部ハーネスは、それらの親モデルもエクスポートしないと以前のバージョンにエクスポートできません。この制限に対処するには、ハーネスをスタンドアロン モデルにエクスポートし、そのハーネス モデルを以前のバージョンにエクスポートしてから、メイン モデルにインポートします。ハーネスをインポートした後、ハーネスの設定を確認してください。同期モードやリビルドなど、一部のプロパティのリセットが必要になることがあります。スタンドアロン モデルへのテスト ハーネスのエクスポートChange Test Harness Propertiesを参照してください。

参考

| | | | | | | |

トピック