...
Table of Contents | ||
---|---|---|
|
カスタム負荷テストコンポーネントについて
カスタム負荷テストコンポーネントを作成して Parasoft Load Test の機能を拡張できます。Parasoft Load Test は、負荷テスト コンポーネントのコンテナーまたは負荷テスト bean として動作します。負荷テスト コンポーネントは、負荷テスト中の仮想ユーザーの動作を定義する機能的な中核です。負荷テスト コンテナーは、コンポーネントに以下のサービスを提供します。
...
負荷テスト コンポーネントを作成するには、com.parasoft.simulator.api パッケージに含まれる Load Test コンポーネント Java API の SimRunnable クラスを拡張します。SimRunnable は、Simulator runnable の略です。Simulator とは、Load Test コンテナーの名称であり、複数の仮想ユーザーのアクティビティをシミュレートします。
コンポーネント サンプルのビルド
コンポーネントのサンプルは、SOAtest/Load Test インストールディレクトリの examples\dev\components
フォルダーにあります。simple-runnable-source.jar および socket-runnable-source.jarLoad Test のコンポーネント プロジェクト ディレクトリを手動で作成し、これらの jar ファイルを展開する必要があります。
Load Test コンポーネント プロジェクト ディレクトリ
Load Test インストール ディレクトリの外にコンポーネント プロジェクト ディレクトリを作成するには、次の操作を行います。
- コンポーネント プロジェクト ディレクトリに
simple-runnable-source.jar
をコピーし、jar ファイルを展開します。 SocketRunnable
ディレクトリを手動で作成し、そこにsocket-runnable-source.jar
を展開します。それぞれのソース ディレクトリにcomponent-build.xml
ANT ビルド スクリプトがあります。- このファイルを開き、
load.test.install.root
プロパティが SOAtest/Load Test インストール ディレクトリを正しく指していることを確認します。 - <INSTALL>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root にある loadtest.jar ファイルを指すように、load.test.jar.path プロパティを変更します。
SimpleRunnable Load Test コンポーネント プロジェクトの作成
Eclipse で SimpleRunnable 負荷テスト コンポーネント プロジェクトを作成するには、次の操作を行います。
...
Note | ||
---|---|---|
| ||
コンポーネントは Java1.5 JRE (できれば JRE 1.5.0_18) でビルドする必要があります。 各サンプル プロジェクトに用意されたComponent-build.xml ANT スクリプトのデフォルト ターゲットは、コンポーネントの jar アーカイブをビルドします。その jar をカスタム コンポーネントまたはビルド コンポーネントとして Load Test にデプロイします。ここで説明しているとおり、Eclipse を使用してコンポーネント プロジェクトをコンパイルする場合、component-build.xml スクリプトの jar ターゲットから、コンパイル ターゲットの依存関係を削除します。 |
SocketRunnable Load Test コンポーネント プロジェクトの作成
SocketRunnable コンポーネントは、SimpleRunnable コンポーネントを拡張します。先に SimpleRunnable
をコンパイルし、SimpleRunnable プロジェクトのルート ディレクトリにある main.jar
を SocketRunnable プロジェクトの lib
ディレクトリに置きます。
...
- [新規プロジェクト] ウィザードで [Java Project] を選択し、[次へ] をクリックします。
- [Create project from existing source] をオンにし、[SimpleRunnable] ディレクトリを選択して [次へ] をクリックします。
- [ソース] タブで、デフォルトの出力フォルダーとして [
SimpleRunnable/target/classes
] が設定されていることを確認します。 - [Libraries] タブを開き、[Add External Jar] をクリックします。
- <INSTALL>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root ディレクトリにある parasoft.jar および com.parasoft.api.jar ファイルを追加します。
- [Libraries] タブで、
lib/jtidy-r820.jar
およびlib/main.jar
がプロジェクトのクラス パスに含まれていることを確認します。 - Eclipse で component-build.xml を右クリックし、[Run As] > [Ant Build] をクリックしてコンポーネントの .jar ファイルを作成します。
Load Test へのサンプル コンポーネントのロード/デプロイ
コンポーネントは、Load Test に外部アーカイブとしてロードするか、ビルトイン コンポーネントとしてデプロイできます。
外部アーカイブからのコンポーネントのロード
外部アーカイブからコンポーネントをロードするには、次の操作を行います。
...
コンポーネント検証が失敗した場合、デプロイメント ビューの下部にエラー メッセージが表示されます。
コンポーネント アーカイブをビルトイン コンポーネントとしてデプロイ
コンポーネント アーカイブをビルトイン コンポーネントとして Load Test にデプロイするには、次の操作を行います。
<INSTALL>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root /lt-components/built-in フォルダーにコンポーネントの jar アーカイブを配置します。
- Load Test を再起動します。
- [ファイル] メニューの [設定のカスタマイズ] をクリックします。次の図のように、ビルトイン コンポーネント デプロイメント ビューにコンポーネント デプロイメントの詳細が表示されます。
ビルトイン コンポーネントが正常にデプロイされていれば、次の図のように、[コンポーネント アーカイブの選択] ダイアログの [ビルトイン] ドロップダウン リストに表示されます。
Load Test コンポーネント API
Load Test コンポーネント API の Javadoc ドキュメントを参照するには、Load Test メニュー バーの [ヘルプ] メニューから [API] > [コンポーネント API] サブメニューをクリックします。
SimpleRunnable コンポーネント サンプルの詳細
このセクションでは、SimpleRunnable Load Test コンポーネントについて詳しく説明します。
...
デプロイメント プロセスが完了すると、onDeploy メソッドが呼び出されます。onDeploy メソッドは、コンポーネント アーカイブに含まれている .cfg ファイルを読み取ってコンポーネントを初期化します。コンポーネント アーカイブは、リモート マシンに存在しないか、マスター マシンとリモート マシンでチェックサムが異なっている場合にだけ、シリアライズされてリモート マシンに送信されます。これにより、必要なときにだけリモート マシンへのコンポーネント アーカイブの転送が行われます。
コンポーネント アーカイブの記述子
lt-jar.xml コンポーネント アーカイブ記述子が、コンポーネント アーカイブのルート ディレクトリになければなりません。記述子には、SimRunnable から派生されたメイン コンポーネント クラスの名前、および SimRunnableOutput から派生されたコンポーネント出力クラスの名前が記述されていなければなりません。コンポーネント アーカイブ記述子ファイルの書き方の例については、サンプル コンポーネントの lt-jar.xml ファイルを参照してください。
SimpleRunnable コンポーネントを使用した負荷テストの実行
SimpleRunnable を Load Test にデプロイし、SimpleRunnable のソース コードやコンポーネント アーカイブの構造を理解したら、コンポーネント アーカイブの構成を変更し、負荷テストを実行して、構成の変更によって結果がどのように変化するかを確認できます。たとえば、コンポーネントがエミュレートするテストの実行時間を変更するには、次の操作を行います。
- .cfg ファイルに execTimeMs パラメーターを追加します。
- コンポーネント アーカイブの ANT ビルド スクリプトを実行します。
- Load Test のコンポーネント ビューで、[リロード] ボタンをクリックします。
- 負荷テストを再実行します。負荷テストレポートの統計セクションに表示されるテスト実行時間が、設定された実行時間に沿っていることを確認します。
実行統計は、コンポーネント構成ファイルで execTimeMs パラメーターの値が 1200 に変更されたことを反映しています。
SocketRunnable コンポーネント サンプルの詳細
このセクションでは、SocketRunnable コンポーネントについて詳しく説明します。SocketRunnable クラスは SimpleRunnable クラスを拡張し、以下を行います。
...
SocketRunnable コンポーネントは、SocketTest クラスのインスタンスを使用して特定のホストおよびポートへの通信を確立し、カスタマイズされたリクエストを送信し、Java ソケットを使用してレスポンスを受信します。このコンポーネントに所属する SocketTest インスタンスは、SocketRunnable コンポーネント ビューで設定をカスタマイズできます。
アプリケーション ログに内部エラーを記録
ログはすぐに必要になる可能性があるため、SocketRunnable のコンストラクターで Engine から取得します。Engine engine = (Engine)context.get(PrivateContext.ENGINE);
ComponentLog log = engine.getComponentLog();
コンポーネント設定 GUI パネルの作成
SimRunnableConfigViewProvider インターフェイスを実装すると、コンテナーにコンポーネントのカスタム設定ビューを表示できます。コンテナーは、上の図のとおり、Load Test Runnable コンポーネント パネルの設定タブに、このビューを表示します。コンテナーは、SimRunnableConfigViewProvider インターフェイスの getConfigView() メソッドを呼び出し、コンポーネントの設定ビューを取得します。このサンプルでは、SocketRunnableView クラスは、コンポーネント設定ビューを実装しています。SocketRunnableView クラスはcom.parasoft.loadtest.component.example.socket.test.view パッケージにある SocketTest*View クラスを使用して、個々の SocketTest インスタンス設定に対応します。
負荷テスト プロファイル GUI パネルの作成 - プロファイル固有のコンポーネントの設定
負荷テスト コンポーネントは、負荷テスト プロファイル固有の動作を実装できます。ProfileRunnable または SubProfileRunnable インターフェイスを実行するクラスは、負荷テスト コンポーネントに対する、プロファイル固有のサブコンポーネントとして動作します。それらのクラスは、コンポーネントのプロファイル固有の動作を実装します。
...
SocketRunnable は、API の ProfileRunnableTreeView を使用します。
コンポーネント設定を Load Test プロジェクトに保存
SaveablePropertiesProvider インターフェイスを実装すると、負荷テスト コンポーネントの設定を Load Test プロジェクトに保存できます。コンポーネントの設定は、SimRunnableProperties クラスによって表されます。SimRunnableProperties クラスは、コンポーネントのプロパティ名/値のペアを格納します。
...
コンポーネント設定を保存する際に、名前/値のプロパティ ペアよりも複雑なデータ構造が必要な場合、名前/値ペアの代わりに XML を使用できます。コンポーネント設定を XML 表現にシリアライズし、XML 文字列を SimRunnableProperties インスタンスの単一の名前/値ペアに保存します。XML を使用してコンポーネント設定を保存する方法の例については、SocketRunnableXMLSerializer を参照してください。
コンポーネント設定のリモート マシンへの転送
負荷テスト コンポーネント設定は、負荷テスト プロジェクトから読み取られたり、チーム メンバーによって変更される場合があり、リモート 負荷テスト マシンに転送する必要があります。コンポーネント クラスによって実装される ParasoftExternalizable インターフェイスの readExternal/writeExternal メソッドで、コンポーネントの状態の転送処理を実装する必要があります。SocketRunnable コンポーネントの設定可能な部分は、SocketProfileRunnable 型の rootProfileRunnable メンバー変数で表されるため、この変数をリモート マシンに転送します。SocketProfileRunnable クラスをシリアライズしてリモート マシンに送信する処理は、このクラスの readFrom/writeOn および readExternal/writeExternal メソッドの実装に記述されています。負荷テスト プロジェクトにコンポーネント設定を保存するコードを再利用して、リモート マシンへのシリアライズを行うこともできます。SocketRunnable サンプルの場合、SocketRunnableXMLSerializer クラスの機能を再利用して、コンポーネント設定をリモート マシンにシリアライズ/デシリアライズできます。
Jar ライブラリを使用したコンポーネントの機能の拡張
コンポーネントのコードで、任意の Java ライブラリを使用できます。SocketRunnable サンプルのコードは、Web ページのリクエストに対するレスポンスとして受信した HTML コードを解析するために JTidy ライブラリを使用しています (SocketTest クラスの checkTidy メソッドを参照)。コンポーネントの依存先 jar ファイルは、コンポーネントの jar アーカイブの lib フォルダーになければなりません (component-build.xml ANT スクリプトでビルドされた socket.jar コンポーネント アーカイブを参照)。
コンポーネント リソースのローカライズ
LocalizationUtil API クラスを使用して、コンポーネントの文字列をローカライズできます。SocketRunnable サンプルの Localization クラスは、適切なリソース バンドルをロードし、LocalizationUtil メソッドをラップしてアクセスを容易にします。