パイプライン実行におけるコードカバレッジの追跡

このトピックでは、ALM Octaneのコードカバレッジレポートからデータを表示する方法について説明します。ALM Octaneは、JaCoCo (XML形式) または他のツール (LCOV形式) によって、またはSonarQubeによって収集されたカバレッジデータをREST APIを使用してフェッチすることによって収集されたコードカバレッジデータを表示できます。(これは、SonarQubeがJenkinsと統合されている場合にのみ可能です。)

Jenkins CIサーバーがない場合でも、専用のREST APIを使用することで、JACOCO-XMLやLCOVカバレッジレポートのフォーマットを注入することができます。

このトピックの内容:

コードカバレッジの概要

最小限のサービス中断と最高の品質を両立しながらリリースを高頻度で提供するには、コードのカバレッジを最大限に高めた自動テストを定期的に実行する必要があります。パイプライン実行のコードカバレッジでは、パイプラインの特定の実行中に呼び出されたコードの行数の割合を測定します。

ALM Octaneは、パイプライン実行で生成されたコードカバレッジレポートの情報をすべてまとめて、全体の状態を表示します。パイプライン表示ウィジェットは、パッケージごとおよびファイルごとのコードカバレッジと、時間経過に伴うコードカバレッジのトレンドを表示します。この情報に基づいて、自動テストでコードがどの程度カバーされているかを追跡できます。

ALM Octaneのコードカバレッジ追跡は、次の手順で構成されます。

手順 ツール/フォーマット

コードカバレッジレポートを設定

  • SonarQube
  • Jenkins JaCoCo
  • LCOV
コードカバレッジレポートをALM Octaneに送信
コードカバレッジ情報を表示

ALM Octane

トップに戻る

SonarQubeからコードカバレッジデータを取得する

SonarQubeのALM Octaneでコードカバレッジデータを表示するには、カバレッジがすでにSonarQubeに表示されているJenkinsジョブが必要です。

  1. SonarQubeとの統合のセットアップの説明に従って統合を作成します。

  2. アプリケーション自動化ツールプラグインを使用して、ALM OctaneとJenkinsサーバーの統合をセットアップします。詳細については、CIサーバーのセットアップを参照してください。

    このフィーチャーには、バージョン5.7.2以降のプラグインが必要です。このバージョンは現在ベータ版として提供されています。 これ以前のバージョンのプラグインを使用している場合は、使用しているプラグインをこのバージョンへアップグレードできます。

  3. パイプラインを実行します。

トップに戻る

Jenkins JaCoCoまたはLCOVレポートからコードカバレッジデータを取得する

フリースタイルジョブとパイプラインアズコードジョブの両方からコードカバレッジデータを取得できます。

前提条件: この統合には、JenkinsサーバーでコードカバレッジJaCoCoまたはLCOVレポートを生成するMavenやJaCoCoなどの標準的な業界ツールが必要です。

  1. アプリケーション自動化ツールプラグインを使用して、ALM OctaneとJenkinsサーバーの統合をセットアップします。詳細については、CIサーバーのセットアップを参照してください。

    このフィーチャーには、バージョン5.3.1以降のプラグインが必要です。これ以前のバージョンのプラグインを使用している場合は、使用しているプラグインをこのバージョンへアップグレードできます。

    1. フリースタイルのジョブ: ALM Octaneでコードカバレッジを追跡するパイプラインステップの場合、コードカバレッジレポートをALM Octaneに送信するビルド後のステップを作成します。[ALM Octane code coverage publisher] ポストビルドステップを選択し、コードカバレッジレポートのパスを指定します。

    2. Pipeline-as-code: パイプラインスクリプト内に、ステップpublishCodeCoverage: ALM Octane code coverage publisher、およびコードカバレッジレポートへのパスを提供します。(スニペットジェネレーターを使用して、サンプル構文を確認できます。)

      例:  

      stage('Publish Coverage') {

      publishCodeCoverage jacocoPathPattern: ' **/site/jacoco-unit-test-coverage-report/jacoco.xml ', lcovPathPattern: '**/coverage-reports/lcov.info'

      }

  2. パイプラインを実行します。

トップに戻る

ALM Octaneでのコードカバレッジデータの表示

ALM Octaneは、1つのパイプライン実行に関するコードカバレッジレポートをすべて受信し、集計します。これにより、パイプライン実行のコードカバレッジを全体的に把握し、時間の経過とともにカバレッジが改善されているかどうかを判断できます。

  1. [パイプライン] > [パイプライン] ページで、パイプラインダッシュボードにコードカバレッジウィジェットを追加します。このウィジェットは、パッケージごとおよびファイルごとのコードカバレッジと、時間経過に伴うコードカバレッジのトレンドを表示します。

    コードカバレッジ (パイプライン実行別) ウィジェットは、各パイプライン実行の自動テストでカバーされるコード行全体の割合を示します。できるだけ多くのコードをカバーする自動テストを開発し、コードカバレッジを高め、コードベースが拡大しても高いコードカバレッジを維持できるようにしてください。

    Code coverage by pipeilne run widget

    コードカバレッジ (パッケージ別) ウィジェットは、コードベース内のパッケージごとのコードカバレッジと、自動テストでカバーされる各ファイルのコード行の割合を表示します。詳細については、コードカバレッジ (パッケージ別) ウィジェットを参照してください。

    ヒント: ウィジェット構成のスコープ設定を使用して、チャートのルートとして表示するパッケージを定義します。たとえば、チームリーダーは、製品階層全体を表示するのではなく、チームに関連するパッケージに焦点を合わせたい場合があります。

  2. パイプラインのIDをクリックしてパイプラインを開きます。

    [実行] タブでは、パイプライン実行ごとにコードカバレッジバーが表示されます。赤は、どのテスト実行でも呼び出されなかったコード行を表します。緑は、このパイプライン実行中に実行されたテストで1回以上呼び出されたコード行を表します。バーの上にカーソルを合わせると、正確な行数が表示されます。

    Pipeline runs with code coverage

トップに戻る

コードカバレッジ (パッケージ別) ウィジェット

コードカバレッジ (パッケージ別) ウィジェットでは、コード内で最大の領域とコードカバレッジが最も低い領域を簡単に把握できます。重要なコードパッケージのサイズが大きく、カバレッジが低い場合には、自動テストを追加または改良して、その領域を的確にカバーできるようにします。

Code coverage by package widget

領域にマウスを置くかクリックすると、その領域に関する詳細情報がインタラクティブに表示されます。

  • このサンバーストチャートでは、各領域がコードパッケージを表します。

  • 領域のサイズは、パッケージに含まれるコード行の数を示します。

  • 領域の色は、各パッケージのコードカバレッジを表します。赤は、テスト実行によってコード行が呼び出されなかったパッケージを表します。緑は、コードカバレッジが100%であることを表します。その間の範囲のコードカバレッジは、赤と緑の間の色で表します。

  • 円は、コードパッケージの階層を表します。グラフの中心に近くなるほど、上位のパッケージになります。

    領域にカーソルを置くと、パッケージ名とコードカバレッジの割合が表示されます。

    Code coverage widget with hover

  • グラフの一番外側は最下位のコードパッケージを示し、ここにファイルが格納されています。この領域をクリックすると、ファイルごとのカバレッジの詳細がヒートマップで表示されます。

Code coverage by file widget

  • ヒートマップの各領域は、選択したパッケージ内のファイルを表します。

  • 領域のサイズは、ファイルに含まれるコード行の数を示します。
  • 領域の色は、コードカバレッジのレベルを表します。
  • 領域にカーソルを置くと、正確なコード行数とコードカバレッジの割合が表示されます。

トップに戻る

参照情報: