メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

CAN 経由の自動車アルゴリズムのクラスベースユニットテスト

この例では、Vehicle Network Toolbox ™ および MATLAB ® クラスベースの単体テスト フレームワークを使用して、クルーズ コントロール アルゴリズムの出力を検証する方法を示します。

MATLAB ユニット テスト クラス tCruiseControlAlgorithmVerifier.m を使用して、Controller Area Network (CAN) 経由でクルーズ コントロール アルゴリズムの Simulink ® モデルに入力コマンドを提供し、アルゴリズムの機能動作をトリガーします。その後、CAN 経由でモデルからフィードバックを受信し、アルゴリズムの予想される動作を検証します。また、解析に使用できるテスト結果の PDF レポートも生成されます。テストクラスの記述方法の詳細については、tCruiseControlAlgorithmVerifier.m ファイルを参照してください。このクラスのダイアログは、テスト クラスを設定する方法と、個々のテストが何を行うかを理解するのに役立ちます。

この例では、MathWorks ® 仮想 CAN チャネルを使用してアルゴリズムと通信します。

Simulink モデル概要

クルーズ コントロール アルゴリズムには仮想 CAN 入力ブロックがあり、CAN Configuration ブロックを使用して CAN チャネルのセットアップが格納され、CAN Receive ブロックを使用して MATLAB テストクラスからコマンドされたメッセージが受信されます。次に、CAN Unpack ブロックを使用して、受信した CAN メッセージから個々の信号を分離し、適切なデータ タイプに変換して、実際のクルーズ コントロール アルゴリズムに転送します。

Cruise Control Algorithm ブロックには、Stateflow ® チャートであるクルーズ コントロール アルゴリズム ステート マシンが格納されます。このアルゴリズムは、Virtual CAN Inputs ブロックから受信した入力に基づいて動作し、入力条件が特定の条件に達したときにトリガーするように設定されます。Stateflow チャートの出力は、予想される車両の巡航速度とアルゴリズムの作動状態です。

Virtual CAN Outputs ブロックは、CAN Pack ブロックを使用して個々の信号を単一の CAN メッセージにロードし、その後、CAN Transmit ブロックを使用して CAN バスに送信します。このフィードバック メッセージは、MATLAB テスト クラスでの検証に使用されます。

テストスイートを作成する

実行するテスト クラスのスイートを作成します。この例では、tCruiseControlAlgorithmVerifier.m がスイート内の唯一のテストです。同じテスト スイートに追加のテストを追加できます。1xN テスト配列には、テストクラスの数ではなく、テストの数が表示されます。

suite = testsuite("tCruiseControlAlgorithmVerifier")
suite = 
  1×3 Test array with properties:

    Name
    ProcedureName
    TestClass
    BaseFolder
    Parameterization
    SharedTestFixtures
    Tags

Tests Include:
    0 Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.

テストランナーを作成する

テスト スイート内の一連のテストを実行するためのテスト ランナーを作成します。これは特別なプラグインなしでランナーを定義します。

runner = matlab.unittest.TestRunner.withNoPlugins
runner = 
  TestRunner with properties:

    ArtifactsRootFolder: "/tmp/Bdoc25a_2864802_1971459"
       PrebuiltFixtures: [1×0 matlab.unittest.fixtures.Fixture]

PDFレポート出力を作成する

出力をキャプチャする PDF ファイルの名前を設定します。

pdfFile = "CruiseControlAlgorithmTestReport.pdf"
pdfFile = 
"CruiseControlAlgorithmTestReport.pdf"

テストランナーに PDF 作成プラグインを追加します。まず、プラグインを構築します。

plugin =  matlab.unittest.plugins.TestReportPlugin.producingPDF(pdfFile)
plugin = 
  PDFTestReportPlugin with properties:

     IncludeCommandWindowText: 0
    IncludePassingDiagnostics: 0
                 LoggingLevel: Terse
                        Title: "MATLAB® Test Report"
              PageOrientation: 'portrait'

このプラグインをテスト ランナーに関連付けると、作業ディレクトリに PDF レポートが生成されます。

runner.addPlugin(plugin)

テストの実行

テスト ランナーを使用してテスト スイートを実行します。

result = runner.run(suite)
Generating test report. Please wait.
    Preparing content for the test report.
    Adding content to the test report.
    Writing test report to file.
Test report has been saved to:
 /tmp/Bdoc25a_2864802_1971459/tpcbc94420/vnt-ex21299704/CruiseControlAlgorithmTestReport.pdf
result = 
  1×3 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   2 Passed, 1 Failed, 0 Incomplete.
   79.1507 seconds testing time.

PDFレポートを解析する

定義された名前で作成された PDF ファイルを開きます。デフォルト設定では、現在の作業ディレクトリに作成されます。PDF レポートでは、次の 2 つの点に注意する必要があります。

全体結果と結果円グラフ

全体的な結果は、すべてのテストが合格したかどうかに基づいて最終的な結果を示します。円グラフには、定義されたテストの総数のうち、合格したテストと失敗したテストの数が表示されます。

障害概要の詳細

失敗の概要には、どのテストが失敗したか、またその理由が表示されます。

失敗名の右側にある詳細タブをクリックすると、テストで設定した診断メッセージとともに、失敗の詳細な理由が表示されます。