Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space FUNCTDEV and version SVC2020.2

...

Table of Contents
maxLevel1

カスタム負荷テストコンポーネントについて

カスタム負荷テストコンポーネントを作成して 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 インストール ディレクトリの外にコンポーネント プロジェクト ディレクトリを作成するには、次の操作を行います。

  1. コンポーネント プロジェクト ディレクトリに simple-runnable-source.jar をコピーし、jar ファイルを展開します。
  2. SocketRunnable ディレクトリを手動で作成し、そこに socket-runnable-source.jar を展開します。それぞれのソース ディレクトリに component-build.xml ANT ビルド スクリプトがあります。
  3. このファイルを開き、load.test.install.root プロパティが SOAtest/Load Test インストール ディレクトリを正しく指していることを確認します。
  4. <INSTALL>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root にある loadtest.jar ファイルを指すように、load.test.jar.path プロパティを変更します。

SimpleRunnable Load Test コンポーネント プロジェクトの作成

Eclipse で SimpleRunnable 負荷テスト コンポーネント プロジェクトを作成するには、次の操作を行います。

...

Note
title注意

コンポーネントは 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 ディレクトリに置きます。

...

  1. [新規プロジェクト] ウィザードで [Java Project] を選択し、[次へ] をクリックします。
  2. [Create project from existing source] をオンにし、[SimpleRunnable] ディレクトリを選択して [次へ] をクリックします。
  3. [ソース] タブで、デフォルトの出力フォルダーとして [SimpleRunnable/target/classes] が設定されていることを確認します。
  4. [Libraries] タブを開き、[Add External Jar] をクリックします。
  5. <INSTALL>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root  ディレクトリにある parasoft.jar および com.parasoft.api.jar ファイルを追加します。 
  6. [Libraries] タブで、lib/jtidy-r820.jar および lib/main.jar がプロジェクトのクラス パスに含まれていることを確認します。
  7. Eclipse で component-build.xml を右クリックし、[Run As] > [Ant Build] をクリックしてコンポーネントの .jar ファイルを作成します。

Load Test へのサンプル コンポーネントのロード/デプロイ

コンポーネントは、Load Test に外部アーカイブとしてロードするか、ビルトイン コンポーネントとしてデプロイできます。

外部アーカイブからのコンポーネントのロード

外部アーカイブからコンポーネントをロードするには、次の操作を行います。

...

コンポーネント検証が失敗した場合、デプロイメント ビューの下部にエラー メッセージが表示されます。 

コンポーネント アーカイブをビルトイン コンポーネントとしてデプロイ

コンポーネント アーカイブをビルトイン コンポーネントとして Load Test にデプロイするには、次の操作を行います。

  1. <INSTALL>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root /lt-components/built-in フォルダーにコンポーネントの jar アーカイブを配置します。

  2. Load Test を再起動します。
  3. [ファイル] メニューの [設定のカスタマイズ] をクリックします。次の図のように、ビルトイン コンポーネント デプロイメント ビューにコンポーネント デプロイメントの詳細が表示されます。



    ビルトイン コンポーネントが正常にデプロイされていれば、次の図のように、[コンポーネント アーカイブの選択] ダイアログの [ビルトイン] ドロップダウン リストに表示されます。

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 のソース コードやコンポーネント アーカイブの構造を理解したら、コンポーネント アーカイブの構成を変更し、負荷テストを実行して、構成の変更によって結果がどのように変化するかを確認できます。たとえば、コンポーネントがエミュレートするテストの実行時間を変更するには、次の操作を行います。

  1. .cfg ファイルに execTimeMs パラメーターを追加します。
  2. コンポーネント アーカイブの ANT ビルド スクリプトを実行します。
  3. Load Test のコンポーネント ビューで、[リロード] ボタンをクリックします。



  4. 負荷テストを再実行します。負荷テストレポートの統計セクションに表示されるテスト実行時間が、設定された実行時間に沿っていることを確認します。



    実行統計は、コンポーネント構成ファイルで 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 メソッドをラップしてアクセスを容易にします。