テストの実行中、C++test はテスト コンフィギュレーションで定義された条件に基づいて、生成さ れたテストとユーザー定義テストを実行します ( または実行時のカバレッジ監視が有効な状態でアプ リケーションを実行します)

[ 実行] タブ共通

  • テスト実行を有効にする 単体テストを実行するか、または実行時のカバレッジ監視を有効 にしてアプリケーションを実行するかを指定します。このオプションをオフにすると、すべ てのテスト実行パラメーターが使用できなくなります。

[全般] タブ

  • 実行モード > アプリケーション検証 インストゥルメントしたアプリケーションの実行モ ジュールを用意して実行するよう C++test を設定します。たとえば「実行時エラー検出」で説明されている実行時エラー検出などの場合にこの実行モードを選択しま す。
  • 実行モード > 単体テスト単体テストを実行するよう C++test を設定します。
  • 実行の詳細 > インストゥルメント モード 実行中にテスト ケース/ アプリケーションをイ ンストゥルメントするレベルを決定します。
    • 完全 完全なインストゥルメントを実行します。これには、カバレッジ、関 数スタブ、スタック トレースのレポート、private メンバーへのアクセス、 および main 関数の名前変更が該当します。これらのインストゥルメント オプションの詳細については下記の「カスタム インストゥルメント」の説明 を参照してください。
    • 行カバレッジ計測とメモリエラー検出 完全なインストゥルメントを実行し ます。また、単体テストの実行中に実行時エラーを検出するためにテスト用 実行モジュールをインストゥルメントします。
    • 行カバレッジ計測 行カバレッジだけの完全なインストゥルメントを実行し ます。行ヒット カウントは無効です。
    • カバレッジ計測なし ( スタブあり) インストゥルメントの対象は、 関数ス タブ、スタック トレースのレポート、private メンバーへのアクセス、およ び main 関数の名前変更です。カバレッジは対象外です。
    • カバレッジ計測なし ( スタブなし)インストゥルメントの対象は、 スタック トレースのレポート、private メンバーへのアクセス、および main 関数の 名前変更です。関数スタブは対象外です。
    • アプリケーションの完全監視 実行時エラー検出とカバレッジの追跡の両方 を有効にして完全なアプリケーションをインストゥルメントします。メモリ が限られる組込みデバイス上でテストを実行する場合、カバレッジとメモリ エラー チェックの両方を適用できないことがあります。そのような場合、次 のいずれかのオプションを選択できます。
    • アプリケーション カバレッジの監視カバレッジの追跡を有効にして完全 なアプリケーションをインストゥルメントします。
    • アプリケーション メモリ エラー チェック実行時エラー検出とメモリの チェックを有効にして完全なアプリケーションをインストゥルメントしま す。
    • インストゥルメントなし インストゥルメントを実行しません。カバレッジ 情報は追跡されず、関数スタブは使用されません。
    • カスタム インストゥルメント[ 編集] ボタンをクリックしてインストゥルメント のレベルをカスタマイズします。ドロップダウン リストから [ カスタム インストゥ ルメント] を選択して設定を有効にします。
      • 以下は、テスト対象ソース、追加のソース、およびテスト ケース ソー スに対して有効/ 無効にできる [ インストゥルメント機能] についての説明 です。
        • C/C++ コード カバレッジ   カバレッジ情報を追跡するかどうかを指定します。 インクルード ヘッダーのインライン関数のために、テスト ケー ス ソース ( スタンドアロン テスト スイート) のカバレッジ情報 が必要です。C++test がカバレッジのためにテスト ケース関数 をインストゥルメントすることはありません。
        • スタック トレースのレポー ト スタック トレース コールバックをレポートするかどうかを指定 します。オフの場合、レポートされるスタック トレースには、実 行された行は表示されず、スタブ化されていない関数呼び出しも 表示されません。
        • private メンバーにアクセス   テスト ケースで private メンバーを使用するかどうかを指定し ます。( たとえば、private 関数の呼び出し、オブジェクトを作 成するための private コンストラクターの使用、テスト ケース の事前条件での private フィールドの設定、事後条件での private フィールドの値のチェック)
        • 関数スタブ   セーフ定義スタブおよびユーザー定義スタブを単体テストで使用 するかどうかを指定します。
        • main() 関数の名前を変更main() 関数があるコードをテストするかどうかを指定します。 このオプションがオンの場合、C++test はインストゥルメント 中のこの関数の名前を変更します。この処理が必要な理由は、 C++test にはテスト ケースを実行する独自の main() 関数があ るからです。このオプションがオフであり、テスト対象のコード 中に main() 関数がある場合、main シンボルの複数定義による エラーが、テスト用実行モジュールのリンク フェーズで発生しま す。 [ アプリケーション検証] モードで作業する場合、このオプショ ンはオフにするべきです。
        • メモリ エラー チェック   実行時エラー検出を有効にしてメモリ関連の問題を検出するかど うかを指定します。

      •  C/C++ コード カバレッジ メトリクス 計測するカバレッジの種類を指定し ます。[ 行ヒット カウント] は、行ヒットの数を計測するかどうかを指定し ます。カバレッジ メトリクスの種類の詳細については、「カバレッジの種類」を参照してください。

      • C++ テンプレートからのコード カバレッジ情報の収集を有効化するには、 [C++ テンプレートからのコード カバレッジを有効化] チェックボックス をオンにします。 「C++test でのテンプレート関数のサポート」を参照してください。
      • [カバレッジの最適化 ( アプリケーション検証のみ)] チェックボックスをオ ンにして、以下の表で説明する、特別な最適化されたカバレッジ モードを有 効にします。
      • オプション説明
        カバレッジ インストゥルメ ント> サイズの最適化できる限り少ない RAM を使用するよう、メトリクス データを格 納するためにカバレッジ インストゥルメントによって使用される メモリ バッファーが最適化されます。このオプションは、メモリ が限られる組込みデバイスに適しています。
        カバレッジインストゥルメン ト> スピードの最適化実行時のオーバーヘッドが最小になるよう、メトリクス データを 格納するためにコード カバレッジ インストゥルメントによって 使用されるメモリ バッファーが最適化されます。このオプション は、実行時オーバーヘッドの増加に弱いアプリケーションでカバ レッジを計測するのに適しています。
        データ一貫性チェックを有効 化するカバレッジ バッファーの破損を検出するアルゴリズムを有効にし ます。テスト対象アプリケーションの欠陥のある動作によってカ バレッジ バッファーの破損が起こる可能性が高い場合はこのオプ ションを有効にしてください。なお、このオプションを有効にす ると、実行時オーバーヘッドが増加します。
        カバレッジ メモリ バッ ファーの初期化を有効化する

        コードのカバレッジ インストゥルメントによって使用されるメモ リ バッファーを初期化します。プログラムが実行する前に、コン パイラがグローバル変数と静的変数を 0 に初期化しない場合、こ のオプションを有効にするべきです ( 変数の初期化は ISO C 規 格によって要求されています)。[ サイズの最適化] と [ データ の一貫性チェックを有効化する] が同時に有効である場合、この オプションは自動的に有効になり、ユーザーが無効にすることは できません。

実行の詳細 > テスト実行フロー 使用するテスト実行フローを選択します。選択肢は、ホス ト ベースの単体テストのためのデフォルト フロー、テスト用実行モジュールをビルドする ためのデフォルト フロー ( たとえば実行なしのトライアル ビルドのため)、見つからない関 数定義のためのスタブ生成のためのデフォルト フロー、およびカスタム フロー ( たとえば 組込みテストまたは他のクラス プラットフォーム テストのためのフロー) です。カスタム フローの定義の詳細については「テスト実行フローのカスタマイズ」を参照 してください。

テスト実行フローのカスタマイズ

テストを実行するように設定されたテスト コンフィギュレーションを実行すると、一連のアク ションが実行されます。そして通常、C++test GUI に単体テストの結果がロードされます。この アクションはテスト実行フロー ファイルで定義されています。テスト実行フロー ファイルは XML 形式のファイルであり、テスト コンフィギュレーションの一部として保存されます。そのた め、チーム メンバー間で共有することができます。

 C++test には、ホスト ベースのテストに特化したデフォルトの実行フローが用意されています。

ユーザーは、独自のテスト実行フローを定義することができます。ユーザー定義のテスト実行フ ローには、C++test の内部アクションを含めることができるほか、オペレーティング システムで プロセスとして起動される外部ユーティリティも含めることができます。デフォルトのテスト実 行フローは、次の方法で変更できます。

  • 既存のステップを削除する。「テスト実行フローのカスタマイズ」 を参照 してください。
  • 新しいステップを追加する。
  • 既存のステップのパラメーターをカスタマイズする。

ユーザー定義のテスト実行フローを定義するには、次の操作を行います。

  1. [Parasoft] メニューの [ テスト コンフィギュレーション] をクリックします。
  2. テスト実行に使用するテスト コンフィギュレーションを選択します。
  3. [ 実行] タブの [ 全般] タブをクリックします。
  4. [ テスト実行フロー] から [ カスタム フロー] を選択して [ 編集] ボタンをクリックします。
  5. テスト実行フローを入力します。

既存のテスト実行フローを利用するには、[ 利用可能なビルトイン テスト実行フロー] からテスト実行フローを選択して [XML を再現] ボタンをクリックします。そして表示された XML を編集します。

     6. [OK] をクリックしてファイルを保存します。


 

実行の詳細 > クイック実行モード 「テスト用実行モジュールの副生成物が現行かどうか」、言い換えると、前回の実行から変更されたかどうか通常よりも低い厳密さで検証します。

ヒント- クイック実行モードはいつ使用するのか

クイック実行モードを使用すると、テスト用実行モジュールを準備するのにかかる時間を短縮することができます。テスト用実行モジュールの副生成物が現行かどうかの検証が通常より緩やかになるため、テストの準備フェーズがより早くなります。

クイック実行モードでは、次の項目は前回の実行から変更されていないと見なされます。

  • コンパイラとリンカーのオプション
  • ヘッダー ファイル
  • スタブ構成

次のようにクイック実行モードを利用することを推奨します。

  1. 「通常の」テスト コンフィギュレーションを複製して「クイック実行モード」用のテストコンフィギュレーションを作成し、[ クイック実行モード] チェックボックスをオンにします。
  2. 2 つのテスト コンフィギュレーションを次のように使用します。
  • 夜間テストのためにサーバー マシンでテストを実行する場合、「通常の」テストコンフィギュレーションを使用します。
  • 毎日の作業のために開発者のマシンでテストを実行する場合、「クイック実行モード」用のテスト コンフィギュレーションを使用します。

次の状況では、開発者マシンで「通常の」テスト コンフィギュレーションを実行する必要があります。

  • プロジェクトのコンパイラ / リンカーのフラグが変更された。たとえば、新しいマクロ定義がコンパイラ オプションに追加された場合や、新しい外部ライブラリがリンカー フラグのリストに追加された場合。
  • テスト対象ソース/ テスト スイート ソース/ スタブ ソースによってインクルードされるヘッダー ファイルが変更された。
  • 新しいユーザー スタブがプロジェクトに追加された。スタブ定義がプロジェクトから削除された。
  • カバレッジ データをレポートする必要がある。

「通常の」テスト コンフィギュレーションを使ってテスト用実行モジュールを再ビルドした後、「クイック実行モード」に戻ることができます。

 

 

      • 単体テストの設定 > テスト スイート ファイルの場所のパターン テストで実行するテストスイート ファイルの場所を指定します。複数の場所を指定するには、セミコロン (;) で区切って指定します。たとえば、テストのレベル別に異なるテストを使用する場合、あるいはホストとターゲットで異なるテストを使用する場合などです。
        • 次の変数がサポートされています。括弧内は例であり、/MyProject/module1/src/MyClass.cpp がテスト対象ファイルであるものとします。
          • ${source_name} - テスト対象ファイルの完全な名前 (MyClass.cpp)
          • ${src_file_base_name} - 拡張子を含まない、テスト対象ファイルの名前 (MyClass)
          • ${src_file_ext} - テスト対象ファイルの拡張子 (cpp)
          • ${source_loc} - ワークスペースを起点とした、テスト対象ファイルの場所 (/MyProject/module1/src)
          • ${src_file_loc_rel} - プロジェクトから相対の、テスト対象ファイルの場所 (module1/src)
          • ${src_file_loc_rel:<path>} - <path> から相対の、テスト対象ファイルの場所 (<path>=/MyProject/module1 の場合、src)
          • ${test_ext} - C++test 独自のテスト スイート ファイル拡張子 (.cpp)



      • プロジェクト ツリーでテスト スイートが利用可能でなければなりません。

 

 

    • 単体テストの設定 > テスト対象コンテキストごとにテスト用実行モジュールを作成する テスト対象のコンテキスト ( たとえばファイルなど) ごとに、個別のテスト用実行モジュールを使用するかどうかを指定します。
      • このオプションをオンにした場合、C++test はソース ファイルごとに個別のテスト用実行モジュールを作成します。ただし、[ シンボル] タブで定義されているようにプロジェクト ソースおよびスタブを使用します。CPPTEST_CONTEXT が設定されていないすべてのテストのために、個別にテスト用実行モジュールが準備されて実行されます。テスト用実行モジュールのサイズを小さくしたい場合、このオプションをオンにしてください。
      • このオプションをオフにし、プロジェクト全体を選択して単体テストを実行した場合、すべてのソース ファイルを含む 1 つの大きなテスト用実行モジュールがビルドされて 1 回実行されます。I

[シンボル] タブ

  • ライブラリ シンボル識別モード テスト用実行モジュールを準備するときに、( たとえば関数やグローバル変数のための) オリジナル シンボル定義のリストをどのように作成するかを指定します。
    • オフ C++test はシンボル定義を探しません。必要なすべてのシンボルがリンクフェーズで取得できるものと推測します。
    • 自動 C++test は、リンク時に使用されるはずのオリジナル シンボル定義のリストを自動的に作成しようとします。
    • 手動 カスタム シンボル ファイルをユーザーが指定できます。
  • プロジェクト内の他のファイルのシンボルを使用 テスト対象ファイルのオリジナル定義を解決するために、デフォルトで使用されるプロジェクト ソース ファイルに加えて、C++test が使用するべきプロジェクト ソース ファイルを定義します。
    • デフォルトでは、C++test はテスト対象のファイル ( テスト対象のプロジェクトファイル) とテスト スイートを次のように算出します。
      • 選択されたテスト スイートの中から、[ 実行] タブの [ 全般] タブの [ テスト スイート ファイルの場所のパターン] 条件に一致するすべてのテスト スイートを実行します。テスト スイート ファイルが CPPTEST_CONTEXT あるいは CPPTEST_INCLUDED_TO マクロを使用している場合、適切なソース ファイルおよびヘッダー ファイルがテスト対象になります。
      • 選択されたすべてのプロジェクト ソース ファイルおよびヘッダー ファイルがテスト対象になります。さらに C++test は [ テスト スイート ファイルの場所のパターン] で指定の場所において、CPPTEST_CONTEXT がテスト対象ファイルにセットされたテスト スイート ファイルを探します。発見されたテスト スイート ファイルも実行されます
    • 次の C++test 変数を使って、追加するプロジェクト ファイルへのパスを指定できます。
      • ${project_loc} は、

        プロジェクトの場所

      • ${resource_loc} は、特定のプロジェクト リソースへの絶対パスです。

    • プロジェクト ファイルの特定サブセットのシンボルを使用するには、そのサブセットを入力します。たとえば:${project_loc}/src/core/*
    • すべてのプロジェクト ソースを使用するテスト用実行モジュールをビルドするには、1 個のアスタリスク(*) を入力します。テスト中にプロジェクトのすべてのシンボル定義が利用可能になります。
    • ある 1 つのファイルが、テスト対象プロジェクトの他のソースで定義されている関数を参照している場合、このファイルをこのオプションを指定せずにテストすると、未解決のシンボルが発生してリンカー エラーが起こることがあります。
    • テスト対象のソースが他のファイルのシンボルを参照している場合、またはそのようなすべてのシンボルにスタブを用意していない場合、このオプションをオフにしないでください。
  • 次の場所で発見されたファイルのシンボルも使用 現在のテストを実行するときに、C++test がセーフ定義スタブ、ユーザー定義スタブ、およびファクトリ関数定義を探す場所を指定します。セミコロン (;) で区切って複数の場所を指定できます。たとえば、異なる
    レベルのテストに異なるスタブを使用している場合やホストとターゲットのテストを実行したい場合などです。
  • オブジェクト/ ライブラリ ファイルを無視する 無視するライブラリとオブジェクトを指定します。たとえば、他と分離した環境でのファイルのテストを簡単にしたい場合などに、このオプションを使用します。コマンドライン オプションのパターンを、セミコロン (;) で区
    切って指定します。リンカー コマンドラインからのオプションだけが無視されます。標準ライブラリ、コンパイラ ライブラリ、およびプラグマを使ってインクルードされているものは無視されません。
  • 自動生成スタブ出力先 自動生成スタブの保存先を指定します。自動生成スタブの詳細については 391 ページの 「スタブの自動生成とカスタマイズ」 を参照してください。
  • 未解決シンボルが検出された場合は実行を中断する このオプションをオンにすると、シンボル/ スタブの解析時に未解決シンボルが検出された場合、C++test は単体テストの実行を中断します。未解決のシンボルを解決する方法については 「スタブの自動生成とカスタマイズ」 を参照してください。

[実行時] タブ

  • テスト用実行モジュールの実行ディレクトリ テスト用実行モジュールを実行するディレクトリを指定します。テスト ケース ソースまたはオリジナル コードで相対パスを使用している場合、C++test はこのディレクトリ中でファイルを探します。
  • デバッガーでテストを実行する デバッガーを使ってテストを実行するかどうかを指定します。詳細については「テスト実行中のデバッガーの使用」 を参照してください。

 

 

 

  • 単一テスト ケースのタイムアウト時間 ( ミリ秒) テスト ケースの実行のタイムアウト時間をミリ秒で指定します。
  • 単体テストの実行の詳細をレポート 実行されたテスト ケースから単体テストの実行の詳細をレポートするかどうかを指定します。これには、CPPTEST_REPORT マクロからレポートされる値も含まれます。
  • タスクの詳細を含める レポートされたタスク ( たとえば例外、アサーションの失敗、結果) をテスト ケースの実行の詳細に含めるかどうかを指定します。
  • 成功したアサーションの詳細を含める チェックされたアサーションおよび成功したアサーションをテスト ケースの実行の詳細に含めるかどうかを指定します。
  • 未検証の結果をレポートする テスト実行中に取得された事後条件をレポートするかどうかを指定します。このオプションがオフの場合、[テスト ケースの結果を自動的に検証する]オプションは使用できません。
  • テスト ケースの結果を自動的に検証する テスト ケースの実行中に取得した事後条件を自動的に「検証済み」にするかどうか ( アサーションに変換するかどうか) を指定します。詳細については「自動生成テスト ケースの検証と回帰テスト」 を参照してください。

 

  • No labels