テスト ケース ウィザードを使用すると、テストする関数を選択した後、GUI からグラフィカルにテスト ケースの事前条件と事後条件を設定することができます。このテスト ケースをデータ ソース値 (または自動生成値) を使ってパラメータライズすることによって、広範で徹底的なテスト カバレッジを保証するテスト ケース シナリオ、そして広範な入力に対してコードをテストするテスト ケース シナリオを迅速に作成できます。

テスト ケース ウィザードで作成したテスト ケースは、(CppUnit に似た) C++test 標準のテスト形式を使ってソース コード中に保存されます。

テスト スイートを追加する

テスト ケースは必ずテスト スイート中に存在する必要があります。テスト ケース ウィザードを使ってテスト ケースを追加するには、まずテスト ケースを格納するためのテスト スイートが必要です。

テスト スイートを生成する

テスト可能なコンテキスト (ファイルまたは関数) ごとに空のテスト スイートを生成するには、次の操作を行います。

  1. テスト スイートを生成するリソースを選択します。  
  2. [Unit Testing] > [Generate Test Suites] テスト コンフィギュレーション (またはこのビルトイン テスト コンフィギュレーションに基づいて作成したチーム テスト コンフィギュレーション) を実行します。  
    • この目的で使用されるユーザー定義テスト コンフィギュレーションは、テストを生成するよう構成する必要がありますが、[生成] タブの [1 つの関数につき生成するテスト ケースの最大数] パラメーターは 0 に設定します。  

新しいテスト スイートを追加する

自動生成テスト ケースよりも詳しくテスト ケースを設定したい場合、次の操作を行って新しいテスト ケースを追加します。

  1. [テスト ケース エクスプローラー] ビューで、テスト スイートをテストするプロジェクトのノードを右クリックし、ショートカット メニューの [新規追加] > [テスト スイート] をクリックします。  
    • [テスト ケース エクスプローラー] ビューを表示するには、[Parasoft] メニューの [ビューの表示] > [テスト ケース エクスプローラー] をクリックします。このビューの使い方については 『Parasoft Test ユーザーズ ガイド』の「はじめに」>「Parasoft Test の GUI」を参照してください。  
  2. 次のテスト スイート パラメーターを設定します。  
    • テスト スイートの名前 テスト スイートの名前  
    • テスト スイートの場所 テスト スイートの場所
    • テスト スイート ファイル テスト スイート ファイルへのパス
    • テスト スイートの言語 テスト スイートの実装言語。C または C++ を選択します。
    • テスト対象ファイル 指定のテスト対象ソース ファイルにテスト スイート コンテキストをセットします。指定したファイルは CPPTEST_CONTEXT マクロとして設定され、このマクロは、テスト スイート ファイルを指定のソース ファイルと関連付けます。
      • ファイルを選択してウィザードを開始した場合、そのファイル名が [テスト対象ファイル] に表示されます。
      • プロジェクトを選択してウィザードを開始した場合、コンテキストは指定されません。また、テスト スイートはプロジェクト スコープになります。つまり、プロジェクトのすべてのテストが実行される場合、またはテスト ファイルとしてテスト スイートが選択されている場合にだけ、テスト スイートは実行されます。テスト スイートをテスト ファイルとして選択した場合 (テスト スイートがコンテキストを持たない場合)、C++test はテスト スイートがプロジェクト コンテキストであると推測し、プロジェクト中のすべてのファイルをリンクのために準備します。
    • テスト スイート モード テスト スイートを「スタンドアロン」にするか「インクルード」にするかを指定します。C++test はどちらのタイプのテスト スイートもインストゥルメントします。private/protected クラス メンバーにアクセスできます。
      • インクルード 生成されたテスト ハーネス ソース ファイルの 1 つに、テスト スイートが物理的に含まれます。インクルード テスト スイートは、インストゥルメントされたコードと結合されて 1 つのオブジェクト ファイルにコンパイルされます。すべての自動生成テスト スイートは、インクルード テスト スイートです。ヘッダー ファイルを含めることもできます。マクロ定義はオリジナル ヘッダーで定義できます。ただし、オリジナルのテスト対象ソース ファイルで見られない型がない限り、インクルード テスト スイートはヘッダーをインクルードする必要はありません。これは通常、テスト ファクトリをインクルードするためなどの場合に、生成されたテストを変更するときにだけ必要です。
      • スタンドアロンテスト スイートは個別にコンパイルされてテスト用実行モジュールにリンクされます。ヘッダーは、テスト スイートに直接インクルードしなければなりません。インクルードされたヘッダーのカバレッジ情報を収集できます。
    • テスト スイート内でテスト対象ファイルを参照する場合 CPPTEST_CONTEXT および CPPTEST_TEST_SUITE_INCLUDED_TO マクロでプロジェクトのフル パスと相対パスのどちらを使用するかを指定します。
      • ほとんどの場合、フル パスの使用を推奨します。特別なケースでは、相対パスが有用なこともあります。たとえば、別の場所で使用されるコードのテストを生成し、さらにこのテストを複数の場所で使用する場合などです。例として、多くのプロジェクトで使用できるライブラリのソース ファイルがあり、このソース コードに一部のテストを接続させるものとします。この場合、ソース コードがプロジェクト中のどこにあるかに関係なく、フル パスを使用していないため、テストは正常に動作するはずです。

ウィザードを使ったテスト ケースの追加

テスト ケース ウィザードを使用すると、新しいテスト ケースを GUI からグラフィカルに追加することができます。C++test は、指定のテストを表すテスト ケース コードを自動的に生成し、対応するテスト スイートにこのテスト ケース コードを追加します。このテスト ケースは、他のテスト ケースと共に実行することができ、必要に応じて変更/拡張が可能です。

テスト ケース ウィザードを使って新しいテスト ケースを追加するには、次の操作を行います。

  1. [テスト ケース エクスプローラー] ビューで、テスト ケースを追加するテスト スイートのノードを選択します。  
    • [テスト ケース エクスプローラー] ビューを表示するには、[Parasoft] メニューの [ビューの表示] > [テスト ケース エクスプローラー] をクリックします。このビューの使い方については「GUI の概要」を参照してください。  
  2. 選択したテスト スイート ノードを右クリックし、ショートカット メニューの [新規追加] > [ウィザードを使用したテスト ケース] をクリックします。

     
  3. ウィザードの最初の画面で、テスト ケースを追加するソース ファイル (コンパイル単位) および関数を指定します。  
    • テスト スイートが " スタンドアロン テスト スイート" として構成され、テスト スイートの作成時にソースファイルを指定していない場合にだけ、ソース ファイルを指定できます。  
    • テスト スイートが "インクルード テスト スイート" として構成されている場合、テスト スイートがインクルードされているコンパイル単位から関数を選択する必要があります。
    • テスト スイートにコンテキスト ファイルが指定されている場合、指定のソース/ヘッダー ファイルで定義されている関数の中から選択する必要があります。
  4. [次へ] ボタンをクリックします。  
  5. テスト ケースの入力と出力を GUI から設定します。  
  6. [終了] ボタンをクリックします。新しいテスト ケースがテスト スイートに追加され、生成されたソース コードがエディターに表示されます。  

 

テスト ケースの設定のヒント

  • テスト ケースの事前条件として次のものを指定できます。  
    • テスト対象関数の引数  
    • (static ではないメンバー関数の場合) テスト対象オブジェクト ('this') の値  
    • テスト対象関数によって使用されるグローバル変数の値  
    • 標準入力のストリームの値 (「標準入出力からのデータの使用」も参照)  
  • 期待される事後条件として次のものを指定できます。  
    • テスト対象関数の戻り値  
    • (const ではない参照とポインター型の場合) テスト対象関数の引数  
    • (static ではないメンバー関数の場合) テスト対象オブジェクト ('this') の状態  
    • テスト対象関数によって使用されるグローバル変数の値  
    • 標準出力および標準エラー出力のストリームの値 (「標準入出力からのデータの使用」も参照)  
  • テスト ケースの説明を指定するには、[その他の設定] > [テスト ケースの説明]フィールドに説明を追加します。説明は、生成されたテスト ケースと共に保存されます。  
  • テスト ケースの入力と出力の値をレポートするマクロを C++test に挿入させるには、[その他の設定] > [ 事前条件および事後条件の値をレポートするコードを追加] オプションを有効にします。  
  • 事前条件または事後条件の値を変更するには、値をダブルクリックして適切な初期化タイプを選択します。  
  • 単純な型 (論理型、整数型、浮動小数点型、文字列型) のノードの場合、 ノードの値を編集して適切な値を設定できます。  
  • 初期化が必要ない値 (たとえばグローバル変数や標準入力ストリームの値) は、'LEAVE NOT INITIALIZED' または 'ACTUAL' を値として選択して、未初期化のままにすることができます。  
  • 事後条件ノードを検証から除外するには、値として 'ANY' を選択します。'ANY' を選択すると、C++test は結果に対してアサーション マクロを生成しません。  
  • 単純な型 (論理型、整数型、浮動小数点型、文字列型) の事後条件ノードだけでなく、単純な型へのポインター (たとえば char* や int*) の事後条件ごとに、値として 'ACTUAL' を選択すると、C++test は実際の値をスキャンします。C++test は、生成されるテスト ケースに対して、アサーションではなく事後条件マクロを生成します。  
  • テスト ケースでのデータ ソース値の使い方については、「データ ソースを使用したテスト ケースのパラメータライゼーション」を参照してください。  
  • たとえば前方宣言されたクラスへの参照を作成するために、テスト ケース オブジェクトのための初期化子を C++test が提供できない場合、テスト ケース ノードに赤い X のアイコンが表示されます。このアイコンは、テスト対象関数の最上位のノードまで、すべての親ノードに表示されます。この状態でテスト ケースを生成すると、不完全なテスト ケースが作成され、ユーザーによる変更が必要です。

 

  • No labels