Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

継続的インテグレーションを使用した要件に基づくテスト メトリクスの収集

概要

要件に基づくテスト メトリクスを使用すると、要件に基づくテスト (RBT) のアクティビティのステータスと品質を評価できます。その結果は、モデル テスト ダッシュボードを使用して可視化できます。これらのメトリクスの収集を、継続的インテグレーション (CI) ワークフローに組み込むことができます。これらのメトリクスを継続的に収集すると、プロジェクトの進行と品質の監視に役立ちます。この例では、GitLab を使用してプロジェクト ソースをホストし、Jenkins を使用してプロジェクトをビルドおよびテストして、結果をアーカイブします。

要件

  • MATLAB プロジェクトの使用

  • Simulink テスト マネージャーのテスト ハーネスの使用

ソース管理でのプロジェクトの設定

GitLab の設定

プロジェクトのソース管理のための GitLab プロジェクトを作成します。詳細については、https://docs.gitlab.com/ee/README.html を参照してください。

  1. Git クライアントをインストールします。

  2. 分岐ワークローを設定します。GitLab を使用して、メイン ブランチから、モデル ファイルに変更を実装するための一時的なブランチを作成します。統合担当のエンジニアは Jenkins のテスト結果を使用して、一時的なブランチをメイン ブランチにマージすべきかを判断できます。詳細については、https://git-scm.com/book/en/Git-Branching-Branching-Workflows を参照してください。

  3. [Settings][Repository] で、開発者がメイン ブランチに変更をマージする際にマージ要求の使用を強制することで、メイン ブランチを保護します。

  4. [Integrations] ページの [Settings] で、Jenkins プロジェクトの URL に Web フックを追加します。この Web フックは、Jenkins サーバー上のビルド ジョブをトリガーします。

プロジェクトの追加

この例では CruiseDashboardExample プロジェクトを使用します。このファイルの作業コピーを作成するには、コマンド ラインに「dashboardCCProjectStart.」と入力します。

git を使用して、プロジェクトのすべてのファイルを、この例に添付されているファイルとともにメイン ブランチに追加します。これらのスクリプトは、テストの実行とメトリクスの収集に使用します。

派生したアーティファクトのフィルター処理

メトリクスを収集すると、通常はソース管理にチェック インさせないファイルが生成されます。Git では、ルート ディレクトリにある .gitignore という名前のテキスト ファイルにフィルターを追加することでファイルを無視できます。この例に添付されているサンプル ファイルを追加すると、この例で生成され、ソース管理に追加する必要のないファイルをフィルター処理できます。gitignore の詳細については、https://git-scm.com/docs/gitignore を参照してください。

継続的インテグレーション ツールでのプロジェクトの設定

継続的インテグレーション ツールでは、プロジェクトのビルドとテストが自動化されます。同様の一般的手順に従うことによって、多くの異なるツールを使用して要件に基づくテストの結果を生成できます。この例では、Jenkins を自動化ツールとして使用します。この例を実行するには、Jenkins 用の GitLab プラグインと MATLAB プラグインをインストールしなければなりません。

プロジェクトの作成

CI ツールは、プロジェクトのソース管理リポジトリに統合する必要があります。この統合により、CI ツールが変更をリッスンし、ビルドするプロジェクトにアクセスできるようになります。Jenkins には、あらゆるソース管理 (SCM) と連携可能なプロジェクトの汎用テンプレートとして機能するフリースタイル プロジェクトが用意されています。フリースタイル プロジェクトで、ソース管理情報を追加することによって、ホストされたプロジェクトに SCM がアクセスできるようになります。

  1. [New Item] をクリックし、名前を記入して、フリースタイル プロジェクトを選択します。

  2. Jenkins プロジェクトで [Configure] をクリックします。

  3. [General] タブで、プロジェクト名を指定します。

  4. [Source Code Management] タブの [Repository URL] フィールドで、GitLab リポジトリの URL を指定します。

  5. [Build Triggers] タブで、[Build when a change is pushed to GitLab] を選択します。

  6. プロジェクトに必要なインストール済みのバージョンの MATLAB を使用するように [Build Environment] を設定します。

ビルドおよびテスト

Jenkins 用の MATLAB プラグインを使用すると、MATLAB コマンドを指定して統合したり、コマンド ラインを使用せずにテストを構成したりすることができます。この例では、1 回のビルド ステップでプロジェクトを開き、メトリクス構造を初期化し、テストを実行し、結果を収集します。

[Add build step] をクリックし、[Run MATLAB Command] を選択します。次のコマンドを入力します。

openProject(pwd);collectModelTestingResults();runTests();collectModelTestingResults();

メトリクス結果のアーカイブと使用

メトリクス結果は、ビルド ステップ中にアーカイブし、その後、レビューするときに MATLAB に再インポートできます。この例では、結果の収集スクリプトによって、メトリクス データが derived ディレクトリに保存されます。一部のメトリクスはエクスポートされた Simulink Test の結果に依存しているため、エクスポートされた .mldatx ファイルもアーカイブしなければなりません。

後でレビューするために結果をアーカイブするには、CI システムを以下のファイルをエクスポートするように設定します。

  • <project-root>/derived ディレクトリにあるすべてのファイル

  • <project-root>/testresults/.mldatx ファイルにエクスポートされたすべてのテスト結果

この例では、Jenkins が提供しているビルド後のアクションを使用して、ビルド中に生成されたアーティファクトをアーカイブします。

[Add post-build action] をクリックし、[Archive the artifacts] を選択します。パス「derived/**,testresults/*.mldatx 」を入力して、そのディレクトリに保存されているすべてのファイルをアーカイブします。

最後に、[Save] ボタンをクリックし、構成を保存して閉じなければなりません。

Jenkins でのビルド ジョブの実行

Jenkins は、プロジェクトへの新しい変更が GitLab リポジトリにコミットされるたびに、新しいビルド ジョブを実行するように構成されました。Jenkins のプロジェクト ページの [Build Now] をクリックして、手動でビルドを実行することもできます。

MATLAB でのアーカイブされた結果のレビュー

Jenkins では、ビルドが正常に実行されるたびに、生成されてアーカイブされたすべてのファイルが保存されます。これらは、個別に表示したり、1 つの zip ファイルにまとめてダウンロードしたりできます。MATLAB で結果を表示するには、次を行います。

  1. 結果の生成に使用したプロジェクトのバージョンをソース管理から取得します。

  2. アーカイブされたメトリクス結果をアーカイブされた場所から取得します。

  3. derived ディレクトリとすべてのファイルをダウンロードし、プロジェクトのルート ディレクトリにコピーまたは解凍します。

  4. アーカイブされたエクスポート済みの Simulink Test の結果ファイルをダウンロードし、これらのファイルもコピーまたは解凍します。

  5. MATLAB でプロジェクトを開き、モデル テスト ダッシュボードを開きます。ダッシュボードに CI ビルドから生成された結果が表示されます。

コマンド ラインを使用した代替の CI 統合

別の自動化ツールを使用する場合は、代替としてコマンド ラインを使用して統合をテストできます。-batch フラグを使用して、コマンド ライン インターフェイスで適切なコマンドを実行することにより、テストを実行し、メトリクスを収集します。

たとえば、次のコマンドを使用した場合、MATLAB はプロジェクトを開き、モデルのテスト結果を初期化し、すべてのテストを実行し、モデル メトリクスを収集してからシャット ダウンします。

matlab -c %LICENSE_PATH% -nosplash -logfile output.log -batch "openProject(pwd);collectModelTestingResults();runTests();collectModelTestingResults(); exit;"