Jtest Tracer Client ツールは、モニタリングするテスト アクションに基づいて JUnit テストを生成するために使用されます。
セクションの内容:
Jtest Tracer Client とは
Parasoft Jtest に同梱の Jtest Tracer を使って Java アプリケーションや Web サービスをリスンする場合、SOAtest の Jtest Tracer ツールを使用して、メソッド呼び出しの記録をいつ開始/停止するか、どのクラスまたはパッケージのメソッドをモニタリングするか、および記録したデータをどこに送るかをコントロールすることができます。
Tracer を使用すると、SOAtest テスト ケースが網羅する機能をキャプチャする、現実的な機能 JUnit テスト ケースを素早く簡単に作成できます。Tracer を使って、(コードを変更したりリコンパイルする必要なく) 大規模な統合システムの状況で、JVM レベルで Java アプリケーションの実行をトレースできます。SOAtest のテスト ケースの実行中に、Tracer は作成されるすべてのオブジェクトをモニタリングするほか、すべてのデータの出入をモニタリングします。
トレースの結果は、文脈的な JUnit テスト ケースを生成するために使用されます。この JUnit テスト ケースは、アプリケーションのすべての依存関係にアクセスする必要なく、開発者のデスクトップ上で、他から切り離した状態で同じアクションを再生します。つまり、検証手続き中に、複雑なシステムの動作を 1 台のマシンで再現することができます。
生成された単体テストは、テストとソース コードを直接関連付けます。そのため、エラーの特定と診断が向上し、開発者は運用環境にアクセスしたり複雑なステージング環境をセットアップしたりすることなく、JUnit テスト ケースを実行できます。これは、QA と開発の共同作業を容易にします。つまり、QA はトレースされたテスト セッションとコード レベルのテスト結果を開発者に提供することができ、これらのテストは問題のあるコードを開発者が特定し、理解し、解決するのに役立ちます。
前提条件
- Tracer ライセンスのある Parasoft Jtest が、チームがアクセスできるシステム上で利用可能でなければなりません。この製品間機能を使用するには、Jtest と SOAtest を p2 updatesite アーカイブを介してインストールする必要があります (詳細については「Eclipse p2 更新サイトからのインストール」を参照)。
- トレースするアプリケーションが実行中のマシンに適切なプラットフォームの Jtest Tracer ライブラリがなければなりません (Windows は *.dll、Linux は lib*.so、HP-UX は libpmt.sl)。トレースするアプリケーションが、Jtest がインストールされているマシンとは異なるプラットフォームで実行されている場合、そのプラットフォームの Jtest をダウンロードして、ライブラリ (*.dll、lib*.so、または libpmt.sl) を抽出し、そのマシンにコピーする必要があります。
Jtest Tracer Client の設定
アプリケーションをトレースしてテスト ケースを作成するには、一度だけ以下の設定を行う必要があります。
- トレースするアプリケーションが実行中のマシンで、Tracer ライブラリが利用可能であることを確認します。
- 詳細については Jtest のドキュメントを参照してください。
- Tracer ライブラリを参照するようにシステムのパスを設定します。
- 詳細については Jtest のドキュメントを参照してください。
- トレースのための適切な JVM 引数を使ってサーバーを起動します。
- 詳細については Jtest のドキュメントを参照してください。
- テスト スイートに Jtest Tracer Client ツールを追加して、どのテストをトレースするかを指定します。2 つの Jtest Tracer Client ツールを追加する必要があります。ひとつはセットアップ ツールとして、もうひとつはティアダウン ツールとしてです。
- 詳細については以下のセクションを参照してください。
トレースするテストを指定する
テスト スイートに 2 つの Jtest Tracer Client ツールを追加して、どのテストをトレースするかを指定します。
- Jtest Tracer Client - トレースする最初のテスト アクションの前に、セットアップ テストとして Trace ツールを開始します。
- Jtest Tracer Client - トレースする最後のテスト アクションの後に、ティアダウン テストとして Trace ツールを停止します。
この設定を行うには、次の操作を行います。
- テストケース エクスプローラーで、トレースを開始するテスト スイートまたはテストのノードを右クリックし、ショートカット メニューから [新規追加] > [テスト] を選択します。
- [テストの追加] ウィザードで、左側ペインから [セットアップ] を選択し、右側ペインから [Jtest Tracer Client] を選択して [終了] ボタンをクリックします。選択したテスト スイート内に Set-Up: Jtest Tracer Client ノードが表示されます。
- 以下のようにセットアップ テストを設定します。
- Jtest Tracer Client テスト コンフィギュレーション パネルに移動します (表示されていない場合、Jtest Tracer Client ノードをダブルクリックして開きます)。
- 接続するホストとポートを指定します。6543 がデフォルト ポートです。
- たとえば、サービス エンドポイントが http://www.foo.bar.com:1234 である場合、ホストには
www.foo.bar.com
を、ポートには1234
を入力します。 - http エンド ポイントがサポートされます。tcp エンド ポイントはサポートされません。
- たとえば、サービス エンドポイントが http://www.foo.bar.com:1234 である場合、ホストには
- [トレースの開始] ボタンが選択されていることを確認します。
- 結果ファイル (テスト ケースを生成するために Jtest が使用するファイル) を保存する場所を指定します。
- ローカル システム (SOAtest を実行しているマシン) に保存する場合、[ローカル ファイル] を選択してローカル ファイルのパスを指定します。
- リモート システム (たとえばトレースされるアプリケーションが実行中のシステム) に保存する場合、[リモート ファイル] を選択して保存先を指定します。
- [モニター対象クラス/パッケージ] エリアで、モニタリングするクラス/パッケージを指定します。
- JVM 引数で指定されたすべてのクラスとパッケージをモニタリングする場合、デフォルトの [すべて] を選択したままにします。
- JVM 引数で指定されたクラスまたはパッケージの一部だけをモニタリングする場合、[カスタム] を選択し、クラスとパッケージを指定します。あるクラスに関係する特定のユース ケースに着目したい場合、この方法が役立ちます。すべてのクラスとパッケージは完全に修飾される必要があり、パッケージは
".*"
文字シーケンスで終了する必要があります。
- [保存] をクリックします。
- テストケース エクスプローラーで、トレースを停止するテスト スイートまたはテストのノードを右クリックし、ショートカット メニューから [新規追加] > [テスト] を選択します。
- [テストの追加] ウィザードで、左側ペインから [ティアダウン] を選択し、右側ペインから [Jtest Tracer Client] を選択して [終了] ボタンをクリックします。選択したテスト スイート内に Tear-Down: Jtest Tracer Client ノードが表示されます。
- セットアップ テストと同様にティアダウン テストを設定します。ただし、[トレースの開始] ボタンではなく、[トレースの停止] ボタンを選択します。
テスト ケースの生成
テスト ケースを生成するには、以下の操作を行う必要があります。
- 上記で説明したようにセットアップ ツールおよびティアダウン ツールとして Jtest Tracer Client を含む、SOAtest テストスイートを実行します。Tracer 出力ファイルが生成されます。テストの実行が完了すると、Tracer 出力ファイルはローカルまたはリモートのいずれかのマシン上に保存されます (どちらに保存されるかは、結果ファイルの保存先の設定によります)。
- Parasoft Jtest を使って、Tracer 出力ファイルから JUnit テスト ケースを生成します。
- 詳細については Jtest のドキュメントを参照してください。
トラブルシューティング
開始リクエストの前にオブジェクトが作成された場合、Jtest のオブジェクト リポジトリ機能を使ってオブジェクトの状態が再現されます。メモリの問題のため、そのようなオブジェクトのサイズには制限があります。オブジェクトのサイズが制限を超える場合、復元されたオブジェクトには、メソッド呼び出しを正確に再現するのに必要な情報が含まれないことがあります。正しく作成されなかったオブジェクトを把握できる方法は 2 つあります。ひとつは、アプリケーション/サービスの標準出力を参照することです。もうひとつは、生成されたテスト ケースが不正に見えるかどうかを確認することです。ただし、メソッド呼び出しが、オブジェクトの記録されていない部分とやり取りする場合、テストケースは完全に再作成されます。大きなクラスをモニター引数から削除して、モニタリングしないようにすることを検討すると良いでしょう。大きなオブジェクトをキャプチャするのに十分なメモリがあると思う場合は、記録されるオブジェクトサイズ制限を増やす方法について Jtest サポートにお問い合わせください。また、アプリケーションまたは Web サービスが使用するメモリ量を増やすこともできます。常にできる限り多くのメモリをアプリケーションに割り当てることを推奨します。
Java のコンパイルにもサイズ制限があり、Jtest でテストを生成するときにサイズ制限の問題にぶつかるかもしれません。テストを再作成する際、呼び出しシーケンスが、実際に定められたものに忠実であることを我々は確認します。したがって、呼び出しシーケンスを完全に再作成するために、多数のメソッド呼び出しを追加する場合があります。そのような大量のメソッドはコンパイラが処理できない可能性があります。
データをミューテートしないメソッド呼び出しを解析するための対策はすでに用意されています。この問題が発生した場合、モニター引数を変更して、このクラスをモニタリングから外すか、または Jtest Tracer ツールの開始および停止アクション コマンドを使って呼び出しをさらに絞り込むことができます。