C++test には、アセンブリ言語のコード カバレッジ レポートを生成する機能があります (このカバレッジはオブジェクト コード カバレッジとも呼ばれます)。アセンブリ コード カバレッジは、単体テストまたはアプリケーション検証と組み合わせることが可能です。このカバレッジは以下のコンパイラをサポートします。
C++test は、Green Hills Software の PPC シミュレーターからアセンブリ レベルのカバレッジ データを収集するようにあらかじめ設定されています。オブジェクト カバレッジ データを収集するように設定したい場合は、テクニカル サポートにお問い合わせください。
アセンブリ言語のコード カバレッジ レポートは、テストの実行後に生成され、HTML、テキスト、または CSV ファイルで確認することができます。アセンブリ カバレッジ データは、C++test の [カバレッジ] ビュー、ソース コード エディター、および C++test Eclipse または Visual Studio プラグインの他のコンポーネントには表示されません。詳細については「オブジェクト カバレッジ レポートの生成」を参照してください。
単体テストまたはアプリケーション メモリ検出のためにプロジェクトがすでに準備できている場合、アセンブリ カバレッジの監視のための設定を行う必要はありません。ただし、アセンブリ言語のカバレッジ メトリクスがサポートされたコンパイラ用にプロジェクトをセットアップする必要があります。
(C++test が追加した) テストハーネスのイニシャライザーをアセンブリ カバレッジのレポートから除外できます。それには、[プロジェクト プロパティ] の [Parasoft] > [C++test] > [ビルド設定] > [コンパイラ オプション] をクリックし、以下のオプションを追加します。
-DCPPTEST_USE_GLOBAL_OBJECTS_TO_INIT_RUNTIME=0 |
これにより、テストハーネスのイニシャライザーがテスト対象のコンパイル単位に追加されなくなります。C++test は個別の「テスト ランナー」を生成してテストハーネスの初期化を行います。
C++test には、アセンブリ カバレッジの監視を行う単体テストのためのビルトイン テスト コンフィギュレーションが用意されています。このテスト コンフィギュレーションの設定を確認するには、以下の操作を行います。
カバレッジはテスト対象プログラムのメモリ バッファーに蓄えられ、テストが完了してテスト モジュールが終了した後、収集されたカバレッジ情報が定義済みのチャネル (通常はファイルに直接) を通じて保存されます。たとえば、テスト実行モジュールがクラッシュしたり、メモリが破壊された場合は、カバレッジ情報を格納したバッファーが破壊され、保存されない場合があります。すべての単体テスト ケースをレビューしてアプリケーションのクラッシュの原因となる可能性があるテスト ケースをテスト セッションから除外することを推奨します。
アセンブリ コード カバレッジをレポートするテスト コンフィギュレーションでは以下の [テスト実行フロー] プロパティを使用できます (「オブジェクト カバレッジ レポートの生成」も参照)。
プロパティ名 | 値 |
---|---|
Assembly coverage report format | 選択できるフォーマット: html、xml、txt、flattxt、csv デフォルト:html |
Assembly coverage report encoding | html レポートに使用するエンコーディング デフォルト: UTF-8 |
ターゲットでのテスト実行からオブジェクト カバレッジ データを収集したい場合は、テクニカル サポートにお問い合わせください。
「Run GHS Tests with Assembly Coverage Monitoring 」ビルトイン テスト コンフィギュレーションを複製し (テスト コンフィギュレーションを右クリックして [複製] をクリックします)、プロジェクト固有のカスタマイズを行うためのベースとして使用できます。
アセンブリ レベルでのコード インストゥルメンテーションを有効化するほかに、テスト実行フローを変更してアセンブリ カバレッジ レポート生成のステップを含める必要があります。このステップは、Run GHS Tests with Assembly Coverage Monitoring ビルトイン テスト コンフィギュレーションではすでに設定済みです。
エディターで次のテスト実行フローの箇所を探し、閉じ括弧の後ろをクリックして挿入ポイントを作成します。
<ReadTestLogStep testLogFile="${cpptest:testware_loc}/ cpptest_results.tlog" timeoutInfoProperty="test_exec_timeouted" /> <ReadDynamicCoverageStep covLogFile="${cpptest:testware_loc}/ cpptest_results.clog" /> |
次のステップを挿入します。
<GenASMToolReportFlowStep asmToolCmdPattern="$(asmReportTool) --generate-report=on --workspace=$(asmWorkspace) --psrc=$(additionalOptions) --report-format=$(asmReportFor-mat) --results-directory=$(asmReportdir) --project-name=$(asmProjectName) --input-file=$(asmInputFile) --report-encoding=$(asmReportEncoding) --psrc=$(advancedOp- tionsFile)" asmReportFormat="${cpptestproperty:repor_format}" asmReportEncoding="${cpptestprop-erty:repor_encoding}" asmReportdir="${cpptestproperty:repor_loc}" asmInputFile="${cpptest:testware_loc}/${cpptestprop-erty:oc_result_file_name}" /> |
asmToolCmdPattern 属性は、レポートを生成するツールのコマンド ラインを定義します。この属性は、レポート生成設定を簡単にするために変数を使用します。テスト実行フロー プロパティによって変数を編集可能にするには、テスト実行フローの先頭に次を追加します。
<SetProperty key="repor_format" value="html||xml||flat- txt||txt||csv" uiEditable="true" displayName="Assembly coverage report format" /> <SetProperty key="repor_encoding" value="UTF-8" uiEdit- able="true" displayName="Assembly coverage report encoding" /> <SetProperty key="report_loc" value="${workspace_loc}/.cpptest/${project_name}/cpptestasm/ report-data" uiEditable="true" displayName="Assembly coverage report location" /> |
アセンブリ言語のカバレッジ レポートはテスト実行後に生成され、HTML、テキスト、または CSV フォーマットで参照できます。C++test のカバレッジ ビュー、ソース コード エディター、あるいはその他の C++test Eclipse または Visual Studio プラグインのコンポーネントには、アセンブリ カバレッジのデータは表示されません。ユーザー定義コンフィギュレーションでアセンブリ カバレッジを生成した場合、必ず上の説明に従ってテスト実行フローを設定してください。
この設定によって、メイン レポートの最後にある [追加のレポート] セクションにアセンブリ カバレッジ レポートへのリンクが表示されるようになります。
HTML レポートのリンクは相対パスであり、レポートを別の場所に移動したときもリンクは壊れません。 |
アセンブリ カバレッジ レポート設定で利用可能なテスト実行フロー プロパティについては、「アセンブリ コードの収集」の下のテーブルを参照してください。