Parasoft DTP は、ソフトウェア開発に関連する分析を収集、処理、レポートするブラウザー ベースのアプリケーションです。静的解析、フロー解析、単体テストといったソフトウェア品質アクティビティは、C/C++test、dotTEST、Jtest、SOAtest などの Parasoft 静的解析/テスト ツールが実行し、DTP にレポートします。データは DTP で処理され、ダッシュボード ウィジェットなどの DTP インターフェイスを通じて開発者やテスターに提供されます。開発およびテスト リードが指摘事項を確認して優先順位を付けることもできます。それらの指摘事項はチーム メンバーの IDE にダウンロードされます。
このセクションでは、DTP Server の機能を取り上げますが、必要に応じて C/C++test、dotTEST、Jtest、SOAtest、および Selenic と関連する機能についても言及します。このセクションで説明する DTP と Parasoft 静的解析/テスト ツールの重要な概念は、Parasoft のソリューションがどのように機能するかを理解する上で非常に重要です。
このセクションの内容:
実行
DTP の「実行 (run)」 は、Parasoft 静的解析/テスト ツールでの 1 回の実行を表します。「実行」は Parasoft 静的解析/テスト ツールが出力する XML レポートに相当します。「実行」は以下の属性によって一意に定義されます。
- 実行時刻
- ビルド ID
- カバレッジ タグ
- ツール (C/C++test、dotTEST、Jtest、SOAtest)
- DTP プロジェクト
- テスト コンフィギュレーション
- セッション タグ
- マシン名
- マシン ユーザー
静的解析の事例
以下の静的解析の実行は、それぞれ別の実行としてカウントされます。
- マシン A での Recommended Rule テスト コンフィギュレーションを使用したプロジェクト A のコード解析
- マシン A での Recommended Rule テスト コンフィギュレーションを使用したプロジェクト A/B のコード解析
- マシン A での Find Duplicated Code テスト コンフィギュレーションを使用したプロジェクト A のコード解析
- マシン B での Recommended Rule テスト コンフィギュレーションを使用したプロジェクト A のコード解析
各実行で XML が生成され、DTP に送信されます。
ラン コンフィギュレーション
ラン コンフィギュレーションは、同じコード解析/実行ツールによる一連の「実行」を表します。プロジェクト、テスト コンフィギュレーション、およびセッション タグが同じ「実行」は、同じラン コンフィギュレーションにグループ化されます。ラン コンフィギュレーションは以下の属性によって一意に定義されます。
- ツール (C/C++test、dotTEST、Jtest、SOAtest)
- DTP プロジェクト
- テスト コンフィギュレーション
- セッション タグ
フィルター (DTP Server)
フィルターは、ラン コンフィギュレーションのグループを表します。フィルターによって、1 つのアプリケーションで作業する複数のユーザーが、アプリケーション内の別々のプロジェクトから静的解析結果を取得できます。フィルターを使用するには、ラン コンフィギュレーションを適切に設定しなければなりません。
静的解析の事例
ユーザー A は "core" プロジェクトの静的解析結果だけが必要です。ユーザー B は "API" プロジェクトの結果だけが必要です。ユーザー C は両方のプロジェクトの結果が必要です。
それぞれのユーザーのニーズに対応するために、3 種類のフィルターを設定できます。ユーザー A のためのフィルターは "core" プロジェクト用の 1 つのラン コンフィギュレーションを含みます。ユーザー B ためのフィルターは "API" プロジェクト用の 1 つのラン コンフィギュレーションを含みます。ユーザー C のためのフィルターは両方のラン コンフィギュレーションを含みます。
プロジェクト (DTP Server)
プロジェクトとは、進行中のソフトウェア開発プロジェクトの名称です。
例
3 種類の製品を扱う企業があるものとします。この企業は、それぞれの製品のために別個のプロジェクトを DTP で用意できます。
プロパティ (または Settings)
Parasoft ツールは properties または settings ファイルの設定プロパティによって設定されます。これらは .properties というファイル拡張子のプレーン テキスト ファイルです。Parasoft ツールは .properties ファイルの dtp.project
設定で指定された DTP プロジェクトにデータを送信します。.properties ファイルの詳細については、ツールのドキュメントを参照してください。
デフォルトの動作
.properties ファイルで指定しない場合、DTP に送られるデータはデフォルト プロジェクトに収集されます。
プロジェクト フィルターとデータ構造の例
以下の図は、DTP プロジェクト、フィルター、ラン コンフィギュレーション、実行の関係を示したものです。
テスト コンフィギュレーション
テスト コンフィギュレーションは、解析の実行中に C/C++test、dotTEST、Jtest、SOAtestが使用する設定を表します。
例
- 静的解析の事例: [Recommended Rules] テスト コンフィギュレーションを使って、このテスト コンフィギュレーションで指定されたルール セットに対してコードを解析します。
- 単体テストの事例: [Unit Tests] テスト コンフィギュレーションを使って、このテスト コンフィギュレーションに従って単体テストを実行します。
- メトリクスの事例: [Metrics] テスト コンフィギュレーションを使って、このテスト コンフィギュレーションに従ってメトリクス データを収集します。
詳細については「テスト コンフィギュレーション」を参照してください。
セッション タグ
セッション タグは、「実行」を表す固有の識別子を表し、類似する「実行」を区別するために使用されます。セッション タグは、ツールの .properties ファイルの session.tag
設定で定義されます。.properties ファイルの詳細については、ツールのドキュメントを参照してください。
デフォルトの動作
ツールの .properties ファイルで指定していない場合、以下の属性が使用されます。
${scontrol_branch}-${exec_env}
${scontrol_branch}
変数は、ブランチの名前を指します。
${exec_env}
変数は、実行環境を指します。
例
64-bit Linux 環境でヘッド ブランチとリリース ブランチに対して静的解析を実行する場合、たとえば以下のタグを使用できます。
- ヘッド ブランチ:
session.tag = head-linux_x86_64
- リリース ブランチ:
session.tag = release-linux_x86_64
Linux 環境と Windows 環境で単体テストを実行する場合、たとえば以下のタグを使用できます。
- Linux 環境:
session.tag = linux_x86_64
- Windows 環境:
session.tag = windows_x86_64
- 変数を使っていずれかの環境をキャプチャー:
session.tag=${exec_env}
大規模なコード ベースに対して静的解析を実行する場合に、コード ベース全体に対して 1 回静的解析を実行するのではなく、2 回に実行を分けるものとします。2 回の実行を区別するために、以下の session.tag を手動で設定する必要があります。
- "core" コード ベース:
session.tag=${scontrol_branch}-core
- "API" コード ベース:
session.tag=${scontrol_branch}-API
セッション タグとラン コンフィギュレーション
異なるセッション タグを使用するということは、セッション タグによって、異なるラン コンフィギュレーションに「実行」がグループ化されることを意味します。上記の 1 番目の例では、2 つの異なる環境に対する同じ「実行」を区別するために、2 種類のセッション タグを使用しています。この場合、2 種類のラン コンフィギュレーションが設定されます。
異なるブランチに対する 2 つの「実行」が同じセッション タグを持つ場合 (Parasoft 静的解析/テスト ツール、DTP プロジェクト、テスト コンフィギュレーションが同じ場合)、DTP は 2 つの「実行」を区別せず、同じラン コンフィギュレーションの 2 つの「実行」と解釈します。2 番目の「実行」は、同じ「実行」の新しいものと見なされます。このようなセッション タグの使用はお勧めできません。
セッション タグ、ラン コンフィギュレーション、およびフィルターを適切に利用して組み合わせることで、1 種類の「実行」 (つまりラン コンフィギュレーション) の結果を参照したり、異なる種類の複数の「実行」の結果を組み合わせて参照したりすることができます。
ビルド
ビルドは、複数のラン コンフィギュレーションにまたがって「実行」をグループ化するために使用されます。ビルドはすべての XML レポートに含まれますが、主に複数の動的解析の実行 (たとえば単体テスト、機能テスト、手動テスト) とカバレッジ実行からデータを集計するために使用されます。
ビルドが同じレポートは、アプリケーションの同一ビルドに対するテスト結果を表します。
ビルド ID は、ツールの .properties ファイルのbuild.id
設定で定義されます。.properties ファイルの詳細については、ツールのドキュメントを参照してください。
DTP は 128 文字までのビルド ID を許可します。受信したビルド ID が 128 文字を超えている場合、Data Collector はエラーをスローし、XML レポートは処理されません。
デフォルトの動作
ツールの .properties ファイルで指定していない場合、以下の属性が使用されます。
${dtp_project}-date_of_run
${dtp_project}
変数は、dtp.project
設定によって指定された値を指します。「Project (DTP Server)」を参照してください。
例
「Coverage Tag」の例を参照してください。
カバレッジ タグ
カバレッジ タグは同じビルド ID を持つ実行のカバレッジ データを集約するのに使用される一意の識別子です。実行ごとに異なるカバレッジ タグを使用すると、たとえば、異なる種類のテスト (自動単体テスト、機能テスト、手動テスト セッション) のカバレッジを 1 つの DTP ダッシュボードに表示できます。カバレッジは、プラクティスごとに個別に表示することも、すべてのテスト プラクティスについて集約して表示することもできます。
カバレッジ タグは、ツールの .properties ファイルの report.coverage.images
設定で定義されます。.properties ファイルの詳細については、ツールのドキュメントを参照してください。
デフォルトの動作
ツールの .properties ファイルで指定していない場合、以下の属性が使用されます。
${dtp_project}
例: 単体テストの実行とカバレッジの計測
200 万行のコードがあるアプリケーションがあり、単体テストを 3 セットに分割しているとします。単体テストが 3 種類のラン コンフィギュレーションにグループ化されるよう、ラン コンフィギュレーションとフィルターを設定済みです。
各「実行」のビルド ID とカバレッジ タグが同じ場合、単体テストとカバレッジの結果を DTP は適切に集計します。ユーザーは正しいデータを DTP で参照できます。
「実行」が同じ日に実行され、同じ DTP プロジェクトと関連付けられている場合、デフォルトでは、それらの「実行」のビルド ID は同じです。そのため、ほとんどのナイトリー テスト インフラストラクチャでは、このデフォルトのビルド ID 設定を使用することを推奨します。
指摘事項
Parasoft の「指摘事項」は、1 つまたはそれ以上のプロパティでタグ付けされたコード解析実行の個々の出力です。Parasoft コード解析ツールがコードをチェックすると、レポートでは、解析対象ファイル、コードの作成者、解析ルールなどのプロパティのセットとツールの出力が自動的に関連付けられます。優先度、取るべき対処などのプロパティを自動的に付加するよう DTPを設定できます。あるいは、手動でデータを確認し、指摘事項への対処方法を決定することもできます。指摘事項は、主に静的解析の違反ですが、メトリクスなど、プロパティを受け取るその他の解析タイプが含まれている可能性があります。