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
endend
TestRunner とテスト スイートの作成
sltest_ratelim モデルを実行するために TestRunner を作成します。
import matlab.unittest.TestRunner;
runner = TestRunner.withTextOutput;
TestRunner と共に使用する TestSuite を作成します。
suite = testsuite('TestHarnessWithModelCoverage');
テスト ランナーの構成
プラグイン メソッドを使用して、sltest.TestCase からのテスト結果をテスト マネージャーに追加するように TestRunner を構成します。TestRunnerPlugin を TestRunner に追加します。
import sltest.plugins.MATLABTestCaseIntegrationPlugin;
runner.addPlugin(MATLABTestCaseIntegrationPlugin);
DiagnosticsOutputPlugin および ToTestManagerLog は、sltest.TestCase の実行からの診断を、Test Manager の TestCaseResults のログにストリーミングします。診断には、パスしたテストのパスした診断情報が含まれます。DiagnosticsOutputPlugin および ToTestManagerLog を TestRunner に追加します。
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 カバレッジを収集します。ModelCoveragePlugin を TestRunner に追加します。
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/Bdoc25b_2988451_599513/tpdfd27f0d_f4f0_4469_aaec_616a3ee03fa3.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 について収集されたカバレッジの集計が表示されます。集計結果には、指定されたカバレッジ メトリクスのフル カバレッジが表示されます。
参考
sltest.TestCase | matlab.unittest.TestRunner | sltest.plugins.ModelCoveragePlugin | sltest.plugins.coverage.CoverageMetrics | sltest.plugins.MATLABTestCaseIntegrationPlugin | sltest.plugins.ToTestManagerLog | matlab.unittest.plugins.DiagnosticsOutputPlugin | verifySignalsMatch | Simulink.SimulationOutput