Main Content

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

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

概要

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

要件

  • MATLAB® プロジェクトの使用

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

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

GitLab の設定

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

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

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

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

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

プロジェクトの追加

この例では、ダッシュボードのプロジェクト例を使用します。このプロジェクトの作業コピーを作成するには、コマンド ラインに以下を入力します。

openProject("cc_CruiseControl");

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

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

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

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

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

プロジェクトの作成

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

  1. [New Item] をクリックし、名前を記入して、フリースタイル プロジェクトを選択します。または、既存のフリースタイル Jenkins プロジェクトに対して [Configure] をクリックします。

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

  3. [Build Triggers] タブをクリックし、[Build when a change is pushed to GitLab] を選択します。

  4. [Build Environment] タブをクリックし、[Use MATLAB Version] を選択し、[MATLAB root] を入力してビルドの MATLAB バージョンを指定します。

ビルドおよびテスト

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

[Build] セクションで、[Add build step][Run MATLAB Command] を選択します。[Command] フィールドに次を入力します。

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

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

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

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

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

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

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

[Post-build Actions] タブをクリックし、[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;"