業界標準のコード カバレッジ メトリクスに加えて、C/C++test はアセンブリ レベルでコード カバレッジ レポートを収集する機能があります (このカバレッジはオブジェクト コード カバレッジとも呼ばれます)。これを利用すると、テスト実行中にアセンブリ コードのどのセクションがカバーされたかや、分岐点の実行に関する詳細を知ることができます。
C/C++ コード カバレッジとは異なり、アセンブリ カバレッジの結果は、C/C++test ビューには統合されません。レポートは外部的な HTML、XML、CSV ファイルとして利用できます。詳細については「アセンブリ カバレッジ レポートの生成」を参照してください。
このセクションでは、IDE でのオブジェクト コード カバレッジの収集について説明します。 アセンブリ レベルでカバレッジを収集する Parasoft ツールの詳細については、C/C++test の [INSTALL_DIR]\engine\asmtool\manuals
ディレクトリにある Parasoft ASMtools のドキュメントを参照してください。
サポート対象コンパイラ
Windows
アセンブリ コード カバレッジは、以下の GHS コンパイラをサポートしています。
- Green Hills Software Compiler for PPC v. 3.5.x
- Green Hills Software Compiler for PPC v. 4.0.x
- Green Hills Software Compiler for PPC v. 4.2.x
- Green Hills Software Compiler for PPC v. 2017.1.x
C/C++test は、Green Hills Software の PPC シミュレーターからアセンブリ レベルのカバレッジ データを収集するようにあらかじめ設定されています。 ターゲット上でのテスト実行からオブジェクト カバレッジ データを収集したい場合は、テクニカル サポートにお問い合わせください。
Linux 64-bit
アセンブリ コード カバレッジは、以下のx86 (32-bit) 対応 GNU GCC コンパイラをサポートしています。
- GNU GCC 4.6.x
- GNU GCC 4.7.x
- GNU GCC 4.8.x
- GNU GCC 4.9.x
- GNU GCC 5.x
- GNU GCC 6.x
- GNU GCC 7.x
- GNU GCC 8.x
プロジェクトの設定
C/C++test でサポート対象コンパイラ (「サポート対象コンパイラ」を参照) 用に単体テストまたはアプリケーション メモリ検出のためにプロジェクトがすでに準備できている場合、他の設定を行う必要はありません。
(C/C++test が追加した) テストハーネスのイニシャライザーをアセンブリ カバレッジのレポートから除外できます。それには、[プロジェクト プロパティ] の [Parasoft] > [C++test] > [ビルド設定] > [コンパイラ オプション] をクリックし、以下のオプションを追加します。
-DCPPTEST_USE_GLOBAL_OBJECTS_TO_INIT_RUNTIME=0
これにより、テストハーネスのイニシャライザーがテスト対象のコンパイル単位に追加されなくなります。C++test は個別の「テスト ランナー」を生成してテストハーネスの初期化を行います。
アセンブリ コードの収集
C/C++test には、アセンブリ カバレッジの監視を行う単体テストのためのビルトイン テスト コンフィギュレーションが用意されています。 このテスト コンフィギュレーションの設定を確認するには、以下の操作を行います。
- IDE のメニューから [Parasoft] > [テスト コンフィギュレーション] をクリックします。
- 次のビルトイン テスト コンフィギュレーションを選択します。
Windows の場合: [ビルトイン] > [Embedded Systems] > [Green Hills Software] > [Run GHS Tests with Assembly Coverage Monitoring]
Linux の場合: [ビルトイン] > [Embedded Systems] > [GNU GCC] > [Run GNU GCC Tests with Assembly Coverage Monitoring]
テスト コンフィギュレーションを実行すると、カバレッジ データがテスト対象プログラムのメモリ バッファーに蓄えられます。スケジュールされたテストが完了してテスト モジュールが終了した後、収集されたカバレッジ情報が定義済みのチャネル (通常はファイルに直接) を通じて保存されます。
テスト実行モジュールがクラッシュしたり、メモリが破壊された場合は、カバレッジ情報を格納したバッファーが破壊され、保存されない場合があります。そのため、すべての単体テスト ケースをレビューしてアプリケーションのクラッシュの原因となる可能性があるテスト ケースをテスト セッションから除外することを推奨します。
アセンブリ カバレッジ レポートの生成
アセンブリ カバレッジ レポートはテスト実行後に生成され、テスト コンフィギュレーションで指定したフォーマットで参照できます (「レポート オプションのカスタマイズ」を参照)。C/C++test のカバレッジ ビュー、ソース コード エディター、あるいはその他の C/C++test の UI には、アセンブリ カバレッジのデータは表示されません。
- テスト コンフィギュレーションの実行後、[レポートの生成] ボタンをクリックします。
- [設定] ボタンをクリックし、[フォーマット] ドロップダウン メニューから [HTML (C++test’s Unit Testing details)] を選択します。
- 定を適用し、[OK] をクリックして [設定] ダイアログを閉じます。
- [OK] をクリックして [レポートとパブリッシュ] ダイアログを閉じます。
この設定によって、メイン レポートの最後にある [追加のレポート] セクションの [アセンブリ カバレッジ] 列にアセンブリ カバレッジ レポートへのリンクが表示されるようになります。
レポート オプションのカスタマイズ
テスト ケースの実行に使用するテスト コンフィギュレーションを変更すると、アセンブリ カバレッジ レポートのフォーマットとエンコーディングをカスタマイズできます (「アセンブリ コードの収集」を参照)。[全般] > [テスト実行フロー] に移動し、以下のオプションを設定します。
オプション名 | 値 |
---|---|
Assembly coverage report format | 利用可能なフォーマット: html,xml,txt, flattxt, csv デフォルト値は html です。 |
Assembly coverage report encoding | HTML レポートに使用するエンコーディング デフォルト値は UTF-8 です。 |
ターゲット上でのテスト実行からオブジェクト カバレッジ データを収集したい場合は、テクニカル サポートにお問い合わせください。
アセンブリ カバレッジについての注意事項
- アセンブリ カバレッジ メトリクスは、特定のコンパイラでだけサポートされます (「Assembly Code Coverage」を参照)。サポートされていないコンパイラ用のプロジェクトに対してアセンブリ カバレッジの監視を実行した場合、C/C++test のコンソールにメッセージが出力されます。
- アセンブリ カバレッジは、C/C++ のインストゥルメント コードから生成されたアセンブラーのソース コード インストゥルメントを使って収集されます。C/C++ のインストゥルメント コードをオリジナル コードと非常に異なるものにするようなインストゥルメント機能を有効にしてはいけません。推奨するインストゥルメント機能の設定を以下の画像に示します。