メインコンテンツ

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

MATLAB ベースの Simulink テストを使用したカバレッジの収集

この例では、MATLAB® ベースの Simulink® テストを使用してテスト ハーネスでモデルのカバレッジを収集し、MATLAB Test フレームワークを使用して結果をテスト マネージャーに取り込む方法を説明します。MATLAB ベースの Simulink テストは、sltest.TestCase から継承された MATLAB コード (.m) ファイルのテスト ケース クラス定義です。

MATLAB ベースの Simulink テスト ファイル

この例には、ここで使用するために作成された MATLAB ベースの Simulink テスト ファイルである TestHarnessWithModelCoverage.m が提供されています。このテスト ファイルには 2 つのテスト関数が含まれています。それぞれに、入力データを駆動してサブシステム TestHarnessWithModelCoverage/Subsystem1 をテストし、対応するベースラインと比較するためのハーネス モデルがあります。このテストは、モデルのシミュレーションを実行する際に、Simulink.SimulationOutput オブジェクトを使用します。

classdef TestHarnessWithModelCoverage < sltest.TestCase
   methods (Test)
      function testOne(testCase)
          in = testCase.createSimulationInput('simpleSwitchWithSubsystemIn',...
             'WithHarness','simpleSwitchWithSubsystemIn_Harness1');
          simOut = testCase.simulate(in);
          testCase.verifySignalsMatch(simOut,'baselineOne.mat');
      end
      function testTwo(testCase)
          in = testCase.createSimulationInput('simpleSwitchWithSubsystemIn',...
             'WithHarness','simpleSwitchWithSubsystemIn_Harness2');
          simOut = testCase.simulate(in);
          testCase.verifySignalsMatch(simOut,'baselineTwo.mat');
      end
   end
end

TestRunner とテスト スイートの作成

sltest_ratelim モデルを実行するために TestRunner を作成します。

import matlab.unittest.TestRunner;
runner = TestRunner.withTextOutput;

TestRunner と共に使用する TestSuite を作成します。

suite = testsuite('TestHarnessWithModelCoverage');

テスト ランナーの構成

プラグイン メソッドを使用して、sltest.TestCase からのテスト結果をテスト マネージャーに追加するように TestRunner を構成します。TestRunnerPluginTestRunner に追加します。

import sltest.plugins.MATLABTestCaseIntegrationPlugin;
runner.addPlugin(MATLABTestCaseIntegrationPlugin);

DiagnosticsOutputPlugin および ToTestManagerLog は、sltest.TestCase の実行からの診断を、Test ManagerTestCaseResults のログにストリーミングします。診断には、パスしたテストのパスした診断情報が含まれます。DiagnosticsOutputPlugin および ToTestManagerLogTestRunner に追加します。

import sltest.plugins.ToTestManagerLog;
import matlab.unittest.plugins.DiagnosticsOutputPlugin;
streamOutput = ToTestManagerLog();
diagnosticsOutputPlugin = DiagnosticsOutputPlugin...
    (streamOutput,'IncludingPassingDiagnostics',true);
runner.addPlugin(diagnosticsOutputPlugin);

Simulink モデルのカバレッジ収集の構成

simulate メソッドを使用してシミュレートされた sltest.TestCase 内のモデルは、カバレッジを収集できます。カバレッジ メトリクスの収集を構成するには、ModelCoveragePlugin を使用します。この例では、MCDC カバレッジを収集します。ModelCoveragePluginTestRunner に追加します。

import sltest.plugins.coverage.CoverageMetrics;
import sltest.plugins.ModelCoveragePlugin;
mcdcMetrics = CoverageMetrics('MCDC',true);
runner.addPlugin(ModelCoveragePlugin('Collecting',mcdcMetrics));

代わりに、テスト マネージャーでカバレッジ収集をオンにしてカバレッジ メトリクスを設定することもできます。この代替方法を使用する場合、カバレッジのプラグインを runner にインポートしたり追加したりする必要はありません。

カバレッジの収集と、テスト マネージャーへのカバレッジおよびテスト結果の追加

これで、TestRunner が完全に構成されたので、run 関数を使用して、カバレッジを収集し、カバレッジとテスト結果をテスト マネージャーに追加します。

run(runner,suite);
Setting up ResultSetFixture
Done setting up ResultSetFixture
__________

Running TestHarnessWithModelCoverage
..
Done TestHarnessWithModelCoverage
__________

Coverage Report for simpleSwitchWithSubsystemIn/Subsystem1
    /tmp/Bdoc25a_2864802_2017580/tpd64aa3bb_9dc8_45d6_a88d_c23df8fef962.html
Tearing down ResultSetFixture
Done tearing down ResultSetFixture
__________

run は、実行されたテスト スイートの累積カバレッジを含むレポートも生成します。レポートを表示するには、Coverage Report for sltest_ratelim リンクを使用します。

テスト マネージャーを開きます。

sltest.testmanager.view

[結果とアーティファクト] ペインを選択して、[結果] および [BaselineTestWithCoverage] 行を展開します。

testOne 行を選択します。

[カバレッジの結果] セクションに、testOne から sltest_ratelim について収集されたカバレッジが表示されます。

testTwo 行を選択します。

[カバレッジの結果] セクションに、testTwo から sltest_ratelim について収集されたカバレッジが表示されます。

BaselineTestWithCoverage 行を選択します。

[カバレッジの結果の集計] セクションに、testOne および testTwo から sltest_ratelim について収集されたカバレッジの集計が表示されます。集計結果には、指定されたカバレッジ メトリクスのフル カバレッジが表示されます。

参考

| | | | | | | |