テスト ケース ウィザードを使用すると、テストする関数を選択した後、GUI からグラフィカルにテスト ケースの事前条件と事後条件を設定することができます。このテスト ケースをデータ ソース値 (または自動生成値) を使ってパラメータライズすることによって、広範で徹底的なテスト カバレッジを保証するテスト ケース シナリオ、そして広範な入力に対してコードをテストするテスト ケース シナリオを迅速に作成できます。
テスト ケース ウィザードで作成したテスト ケースは、(CppUnit に似た) C/C++test 標準のテスト形式を使ってソース コード中に保存されます。
テスト スイートを追加する
テスト ケースは必ずテスト スイート中に存在する必要があります。テスト ケース ウィザードを使ってテスト ケースを追加するには、まずテスト ケースを格納するためのテスト スイートが必要です。
テスト スイートを生成する
テスト可能なコンテキスト (ファイルまたは関数) ごとに空のテスト スイートを生成するには、次の操作を行います。
- テスト スイートを生成するリソースを選択します。
- [Unit Testing] > [Generate Test Suites] テスト コンフィギュレーション (またはこのビルトイン テスト コンフィギュレーションに基づいて作成したチーム テスト コンフィギュレーション) を実行します。
- この目的で使用されるユーザー定義テスト コンフィギュレーションは、テストを生成するよう構成する必要がありますが、[生成] タブの [1 つの関数につき生成するテスト ケースの最大数] パラメーターは 0 に設定します。
新しいテスト スイートを追加する
自動生成テスト ケースよりも詳しくテスト ケースを設定したい場合、次の操作を行って新しいテスト ケースを追加します。
- [テスト ケース エクスプローラー] ビューで、テスト スイートをテストするプロジェクトのノードを右クリックし、ショートカット メニューの [新規追加] > [テスト スイート] をクリックします。
- [テスト ケース エクスプローラー] ビューを表示するには、[Parasoft] メニューの [ビューの表示] > [テスト ケース エクスプローラー] をクリックします。このビューの使い方については 『Parasoft Test ユーザーズ ガイド』の「はじめに」>「Parasoft Test の GUI」を参照してください。
- 次のテスト スイート パラメーターを設定します。
- テスト スイートの名前 テスト スイートの名前
- テスト スイートの場所 テスト スイートの場所
- テスト スイート ファイル テスト スイート ファイルへのパス
- テスト スイートの言語 テスト スイートの実装言語。C または C++ を選択します。
- テスト対象ファイル 指定のテスト対象ソース ファイルにテスト スイート コンテキストをセットします。指定したファイルは CPPTEST_CONTEXT マクロとして設定され、このマクロは、テスト スイート ファイルを指定のソース ファイルと関連付けます。
- ファイルを選択してウィザードを開始した場合、そのファイル名が [テスト対象ファイル] に表示されます。
- プロジェクトを選択してウィザードを開始した場合、コンテキストは指定されません。また、テスト スイートはプロジェクト スコープになります。つまり、プロジェクトのすべてのテストが実行される場合、またはテスト ファイルとしてテスト スイートが選択されている場合にだけ、テスト スイートは実行されます。テスト スイートをテスト ファイルとして選択した場合 (テスト スイートがコンテキストを持たない場合)、C/C++test はテスト スイートがプロジェクト コンテキストであると推測し、プロジェクト中のすべてのファイルをリンクのために準備します。
- テスト スイート モード テスト スイートを「スタンドアロン」にするか「インクルード」にするかを指定します。C/C++test はどちらのタイプのテスト スイートもインストゥルメントします。private/protected クラス メンバーにアクセスできます。
- インクルード 生成されたテスト ハーネス ソース ファイルの 1 つに、テスト スイートが物理的に含まれます。インクルード テスト スイートは、インストゥルメントされたコードと結合されて 1 つのオブジェクト ファイルにコンパイルされます。すべての自動生成テスト スイートは、インクルード テスト スイートです。ヘッダー ファイルを含めることもできます。マクロ定義はオリジナル ヘッダーで定義できます。ただし、オリジナルのテスト対象ソース ファイルで見られない型がない限り、インクルード テスト スイートはヘッダーをインクルードする必要はありません。これは通常、テスト ファクトリをインクルードするためなどの場合に、生成されたテストを変更するときにだけ必要です。
- スタンドアロンテスト スイートは個別にコンパイルされてテスト用実行モジュールにリンクされます。ヘッダーは、テスト スイートに直接インクルードしなければなりません。インクルードされたヘッダーのカバレッジ情報を収集できます。
- テスト スイート内でテスト対象ファイルを参照する場合 CPPTEST_CONTEXT および CPPTEST_TEST_SUITE_INCLUDED_TO マクロでプロジェクトのフル パスと相対パスのどちらを使用するかを指定します。
- ほとんどの場合、フル パスの使用を推奨します。特別なケースでは、相対パスが有用なこともあります。たとえば、別の場所で使用されるコードのテストを生成し、さらにこのテストを複数の場所で使用する場合などです。例として、多くのプロジェクトで使用できるライブラリのソース ファイルがあり、このソース コードに一部のテストを接続させるものとします。この場合、ソース コードがプロジェクト中のどこにあるかに関係なく、フル パスを使用していないため、テストは正常に動作するはずです。
ウィザードを使ったテスト ケースの追加
テスト ケース ウィザードを使用すると、新しいテスト ケースを GUI からグラフィカルに追加することができます。C/C++test は、指定のテストを表すテスト ケース コードを自動的に生成し、対応するテスト スイートにこのテスト ケース コードを追加します。このテスト ケースは、他のテスト ケースと共に実行することができ、必要に応じて変更/拡張が可能です。
テスト ケース ウィザードを使って新しいテスト ケースを追加するには、次の操作を行います。
- [テスト ケース エクスプローラー] ビューで、テスト ケースを追加するテスト スイートのノードを選択します。
- [テスト ケース エクスプローラー] ビューを表示するには、[Parasoft] メニューの [ビューの表示] > [テスト ケース エクスプローラー] をクリックします。このビューの使い方については「GUI の概要」を参照してください。
- 選択したテスト スイート ノードを右クリックし、ショートカット メニューの [新規追加] > [ウィザードを使用したテスト ケース] をクリックします。
- ウィザードの最初の画面で、テスト ケースを追加するソース ファイル (コンパイル単位) および関数を指定します。
- テスト スイートが " スタンドアロン テスト スイート" として構成され、テスト スイートの作成時にソースファイルを指定していない場合にだけ、ソース ファイルを指定できます。
- テスト スイートが "インクルード テスト スイート" として構成されている場合、テスト スイートがインクルードされているコンパイル単位から関数を選択する必要があります。
- テスト スイートにコンテキスト ファイルが指定されている場合、指定のソース/ヘッダー ファイルで定義されている関数の中から選択する必要があります。
- [次へ] ボタンをクリックします。
- テスト ケースの入力と出力を GUI から設定します。
- 詳細については 「テスト ケースの設定のヒント」 を参照してください。
- 詳細については 「テスト ケースの設定のヒント」 を参照してください。
- [終了] ボタンをクリックします。新しいテスト ケースがテスト スイートに追加され、生成されたソース コードがエディターに表示されます。
テスト ケースの設定のヒント
- テスト ケースの事前条件として次のものを指定できます。
- テスト対象関数の引数
- (static ではないメンバー関数の場合) テスト対象オブジェクト ('this') の値
- テスト対象関数によって使用されるグローバル変数の値
- 標準入力のストリームの値 (「標準入出力からのデータの使用」も参照)
- 期待される事後条件として次のものを指定できます。
- テスト対象関数の戻り値
- (const ではない参照とポインター型の場合) テスト対象関数の引数
- (static ではないメンバー関数の場合) テスト対象オブジェクト ('this') の状態
- テスト対象関数によって使用されるグローバル変数の値
- 標準出力および標準エラー出力のストリームの値 (「標準入出力からのデータの使用」も参照)
- テスト ケースの説明を指定するには、[その他の設定] > [テスト ケースの説明]フィールドに説明を追加します。説明は、生成されたテスト ケースと共に保存されます。
- テスト ケースの入力と出力の値をレポートするマクロを C/C++test に挿入させるには、[その他の設定] > [ 事前条件および事後条件の値をレポートするコードを追加] オプションを有効にします。
- 事前条件または事後条件の値を変更するには、値をダブルクリックして適切な初期化タイプを選択します。
- 単純な型 (論理型、整数型、浮動小数点型、文字列型) のノードの場合、 ノードの値を編集して適切な値を設定できます。
- 初期化が必要ない値 (たとえばグローバル変数や標準入力ストリームの値) は、'LEAVE NOT INITIALIZED' または 'ACTUAL' を値として選択して、未初期化のままにすることができます。
- 事後条件ノードを検証から除外するには、値として 'ANY' を選択します。'ANY' を選択すると、C/C++test は結果に対してアサーション マクロを生成しません。
- 単純な型 (論理型、整数型、浮動小数点型、文字列型) の事後条件ノードだけでなく、単純な型へのポインター (たとえば char* や int*) の事後条件ごとに、値として 'ACTUAL' を選択すると、C/C++test は実際の値をスキャンします。C/C++test は、生成されるテスト ケースに対して、アサーションではなく事後条件マクロを生成します。
- テスト ケースでのデータ ソース値の使い方については、「データ ソースを使用したテスト ケースのパラメータライゼーション」を参照してください。
- たとえば前方宣言されたクラスへの参照を作成するために、テスト ケース オブジェクトのための初期化子を C/C++test が提供できない場合、テスト ケース ノードに赤い X のアイコンが表示されます。このアイコンは、テスト対象関数の最上位のノードまで、すべての親ノードに表示されます。この状態でテスト ケースを生成すると、不完全なテスト ケースが作成され、ユーザーによる変更が必要です。