このチュートリアルは、Load Test を使用してサービスおよび Web インターフェイスの機能テストを行う方法を説明します。このセクションの内容
チュートリアルの概要
まず SOAtest で機能テストを作成し、それから Parasoft Load Test で負荷テストを行います。負荷テストを行うと、負荷の高い使用状況をエミュレートし、そのような状況でしか発生しない可能性のあるバグを明らかにできます。Web、SOA、および 2 つを組み合わせたエンドツーエンド テスト (メッセージ レイヤーを越え、Web サービス、JMS、Web インターフェイス、データベースなどの全体をテストするシナリオ) の負荷テストを実施できます。
また、Parasoft Load Test には、Parasoft 負荷テストコンポーネント API を実装する任意のコンポーネントの負荷テストを実行するフレームワークが付属しています。たとえば JUnit を使用したパフォーマンスや同時実行性のテストや、Parasoft コンポーネント API を実装する軽量のソケットベースのコンポーネントを使用した負荷テストを行うことができます。これにより、パフォーマンスの検証を行う際に直面するユーザー独自の複雑な問題に合わせて負荷テストをカスタマイズできます。
以前のバージョンの SOAtest および WebKing で作成された負荷テスト コンフィギュレーションは完全にサポートされており、インポートできます。
Parasoft Load Test を使用すると、以下を含む負荷テスト プロセスのあらゆる側面を完全に制御できます。
- 複数マシンのスレーブ化 (クラスタリング): (Load Test を実行する) 複数のマシンをネットワーク上でスレーブ化し、1 台のマシンで生成できるより高い負荷を生成できます。負荷テスト ウィンドウで [Machines] フォルダーをクリックし、表示される GUI を使用します。マシンごとに、高スループット モード オプションを指定できます。高スループット モードでは、特定のレスポンス処理を無効にする代わりに、同じハードウェアでより高い負荷を生成できます。詳細についてはリモート マシンでの負荷テストの実行を参照してください。
- ユーザー プロファイル: ユーザー プロファイルを作成すると、負荷テストと機能テストを直接関連付けることができます。つまり、機能テストを作成したら、追加の作業なしに負荷状態でのテスト実行を開始できます。負荷テスト ウィンドウで [Profiles] フォルダーをダブルクリックし、作成されたプロファイルを参照します。
- カスタム シナリオ: Load Test には、あらかじめ用意されたシナリオが 4 つあります (Bell、Buffer Test、 Linear Increase、Steady Load)。また、独自のカスタム シナリオを作成することもできます。カスタム シナリオを作成すると、実際の使用で発生する可能性がある現実的なシナリオをエミュレートできます。[Scenarios] フォルダーをクリックし、サンプルのために用意されたシナリオを参照します。
- モニター: Load Test にモニターを追加し、負荷テスト実行中にさまざまなシステム リソースを監視できます。追加できるモニターを参照するには、[Monitors] フォルダーを右クリックします。Load Test は、SNMP、Windows Perfmon、JMX モニターをサポートしています。詳細についてはモニターの使用を参照してください。
動画チュートリアル既存の SOAtest シナリオを使用した負荷テストの設定と実行
Web 機能テストを含むテスト シナリオの標準的なワークフロー
Web 機能テストを含む SOAtest の機能テストを負荷テストする場合の典型的なワークフローは次のとおりです。
- ブラウザーを使用して Web シナリオを記録します。
- 任意の検証および抽出機能を使用してテスト シナリオをカスタマイズします。
- SOAtest で Load Test パースペクティブに切り替えます。
- Load Test エクスプローラーでテスト スイートを選択し、[負荷テスト用に検証] ツールバー ボタンをクリックします。
- 検証が成功した場合、その他のシナリオ設定/調整は必要がない可能性が高く、シナリオは Parasoft Load Test で負荷テストできる状態です。
- 検証が失敗した場合、SOAtest を使用して、負荷テスト用にテスト スイートを構成します。たとえば、特定のブラウザー シナリオ内にある複数のユーザー アクションで受け渡される URL パラメーター値を構成するなどの処理が必要になる場合があります。詳細については、『SOAtest ユーザーズ ガイド』の負荷テストのセクションを参照してください。
- Parasoft Load Test を起動し、SOAtest で作成した .tst ファイルに対応する新規負荷テスト シナリオを作成します。
このワークフローは、SOAtest のエンドツーエンド テスト シナリオ (メッセージ レイヤーを越え、Web サービス、JMS、Web インターフェイス、データベースなどの全体をテストするシナリオ) にもあてはまります。Parasoft Load Test は、SOAtest の機能テスト スイートに含まれる任意のテストを同時実行できます。
その他のすべての SOAtest テスト シナリオの標準的なワークフロー
Web 機能テストを含まない SOAtest の機能テストを負荷テストする場合の典型的なワークフローは次のとおりです。
- SOAtest でシナリオを定義し、カスタマイズします。
- Parasoft Load Test を起動し、SOAtest で作成した .tst ファイルに対応する新規負荷テスト シナリオを作成します。
Web アプリケーションの機能テストの作成
このチュートリアルでは、ParaBank デモ Web アプリケーションを使用します。ParaBank のローカル インスタンスをデプロイする方法については、「ParaBank のセットアップ」を参照してください。
このレッスンを開始する前に、SOAtest のチュートリアルにある「Web 機能テスト」セクションを参照し、Load Test で使用するブラウザー テスト スイートの記録方法を確認することを推奨します。
新規 Web シナリオの記録
負荷テストで使用する Web 機能テストを記録するには、次の操作を行います。
- SOAtest の [ファイル] メニューで [新規] > [テスト (.tst) ファイル] をクリックします。
- [ファイル名] フィールドに
ParaBank
と入力し、[次へ] をクリックします。 - [Web] > [Web シナリオの記録] を選択し、[次へ] をクリックします。
- [新規機能テストの記録] を選択し、[次へ] をクリックします。
- [開始ロケーションから記録] ウィザードで以下のように入力し、[終了] をクリックします。
- [テスト スイート名] フィールドに「
ParaBank Functional Test
」と入力します。 - [
次から記録を開始
] フィールドに「http://localhost.parasoft.com/index.html
」と入力します。
- [テスト スイート名] フィールドに「
- テストが開始し、ブラウザーが開きます。ParaBank アプリケーションで次のアクションを実行します。
- ユーザー名として
john
を、パスワードとしてdemo
を使用し、ParaBank にログインします。
- 表示されている最初のアカウントのリンクをクリックします。
- アプリケーションからログアウトし、ブラウザーを閉じて記録セッションを終了します。
- ユーザー名として
シナリオを負荷テスト用に検証
シナリオを負荷テストで使用できるかを検証するには、次の操作を行います。
- SOAtest の [ウィンドウ] メニューの [パースペクティブを開く] > [その他] > [Parasoft Load Test] をクリックして Load Test パースペクティブに切り替えます。左側に Load Test エクスプローラーが開きます。Load Test エクスプローラーはテスト ケース エクスプローラーと似ていますが、ブラウザーのテスト ケースをダブルクリックすると、テスト ケース ステップを負荷テスト用に準備するための特別なエディターが開きます。このエディターには、ページをロードするために行われたリクエストの URL が表示されるほか、リクエストで使われたパラメータライズ値があれば、それも表示されます。
- [ParaBank] テスト スイートのルート ノードを選択し、ツール バーの [負荷テスト用に検証] ボタンをクリックします。このサンプルの場合、検証は成功し、機能 Web シナリオが負荷テストに使用できることが示されるはずです。
この後は、Creating and Performing a Load Test (for Web and/or Service Functional Tests)の説明に従って負荷テストの実行を構成できます。
サービス機能テストの作成
チュートリアルを始める前に、『SOAtest ユーザーズ ガイド』の「機能テスト」および「シナリオ テスト」チュートリアルを行うことを推奨します。
SOAtest のチュートリアルで作成したテスト スイートを使用して負荷テストを行います。SOAtest のワークスペースでまだチュートリアル レッスンが行われていない場合、次の操作を行って、テスト スイートを作成します。
- SOAtest の [ファイル] メニューで [新規] > [その他] をクリックし、[既存の SOAtest または WebKing テスト スイートからプロジェクト] を選択して [次へ] をクリックします。
- [プロジェクト名] フィールドに「
Examples
」と入力します。 - [ディレクトリ] で [参照] をクリックし、
[SOAtest/Load_Test_installation_directory]/examples/tests
を参照してプロジェクトのテスト スイートの場所を指定します。 - [終了] をクリックします。テスト ケース エクスプローラーに Examples プロジェクトが追加されます。プロジェクトには複数のテスト (.tst) ファイルが含まれています。
この後は、Creating and Performing a Load Test (for Web and/or Service Functional Tests)の説明に従って負荷テストの実行を構成できます。
負荷テストの作成と実行 (Web/サービス機能テストの場合)
前のレッスンで使用した Web またはサービス テストの負荷テストを定義し、実行するには、次の操作を行います。
- Parasoft Load Test を開きます。
- Windows: [スタート] メニューの [プログラム] > [Parasoft] > [SOAtest] > [Load Test] をクリックします。
- Linux/Mac: loadtest ディレクトリに移動し、プロンプトに次のコマンドを入力します。
./loadtest
- ウェルカム ウィザードが起動します。[新規プロジェクト] を選択して [次へ] をクリックします。
- [SOAtest] を選択して [次へ] をクリックします。
- 次のどちらかの操作を行います。
- SOAtest ワークスペースにある
ParaBank Functional Test.tst
を参照し、[次へ] をクリックします。 - このチュートリアルを完了するために SOAtestTutorial.tst ファイルを使用している場合は、
SOAtestTutorial.tst
をクリックし、[次へ] をクリックします。ファイルを手動で作成した場合は、ワークスペースにファイルがあります。その他の場合は、[Parasoft SOAtest/Load Test Install Dir]/examples/tests/SOAtestTutorial.tst
にあるサンプル ファイルを開きます。Load Test で既存のコンフィギュレーションが検出された場合は、[新規コンフィギュレーション] を選択します。
- SOAtest ワークスペースにある
- ツリーでテスト シナリオを選択し、[次へ] をクリックします。
- サービス: "Scenario: Test Suite: Scenario Test – Search, Add to Cart, and Remove from Cart", "Test Suite: Plain XML Services"
Web: Scenario: ParaBank Functional Test
- サービス: "Scenario: Test Suite: Scenario Test – Search, Add to Cart, and Remove from Cart", "Test Suite: Plain XML Services"
- [スケジュール & 割付け] 画面で次の構成を指定し、[その他のオプション] 画面が表示されるまで [次へ] をクリックします。
- [期間]フィールドに
2
分を指定します。 - [割付け] フィールドで Linear Increase オプションを有効にします。Linear Increase オプションを選択するには、適切な負荷テスト ライセンスが必要です。ライセンスで Virtual Users が有効でない場合、Steady Load シナリオしか生成できません。
- [期間]フィールドに
- [その他のオプション] 画面で [すぐに負荷テストを開始] および [個々のヒットを記録] オプションを有効にし、[終了] をクリックします。
指定された負荷テストが開始されます。GUI 左側のパネルに [新規負荷テスト] タブが表示され、[負荷テストの進捗] パネルに [グラフ] タブが表示されます。
[グラフ] タブで右クリックし、レイアウト オプションを選択すると、表示されるグラフの数とレイアウトを変更できます。
負荷テストはいつでも中止できますが、今回は 2 分間の期間を最後まで実行し、テスト実行中の詳細をモニターしたり操作します。
[負荷テストの進捗] タグを見ると、[グラフ] タブに次の情報が表示されています。
- このレッスンのステップ 7 で選択した [Linear Increase] シナリオに従って、仮想ユーザーのカーブが一定の割合で増加しています。
- [Tests Completed] と [Tests Started] のカーブが接近している場合、テストがすばやく完了している (つまりレスポンスがすばやく受信されている) ことを表します。これらのカーブにギャップがある場合、テストは長く実行されています。
[スナップショット] タブに現在のアクティブ仮想ユーザーおよび呼び出されている操作も表示されていることに注目してください。テスト実行中は、このタブに表示されている情報が 3 秒おきに更新されます。
負荷テストが完了すると、結果パネルにテスト情報概要が表示され、プロジェクト名、テスト開始および終了日時、選択されたシナリオ、マシンおよびプロファイルが表示されます。
その他の負荷テスト統計レポートを参照することもできます。負荷テストの詳細な統計を参照するには、次の操作を行います。
- 結果パネルで [ビュー] メニューの [統計] を選択します。
統計レポートを表示すると、[出力タイプ] メニューが利用可能になります。[出力タイプ] メニューは、表示する出力レポートのタイプを指定します。このメニューから、それぞれ異なる情報列がある 2 種類のレポートを参照できます。レポートのタイプによる違いは次のとおりです。- 一般レポート: テスト スイート名、テスト インデックス、テスト名、最小/最大/平均時間 (ミリ秒)、実行回数、失敗数が表示されます。
- ネットワーク クライアント レポート: 一般レポートのすべての情報に加えて、最小/最大/平均 Ping (ミリ秒)、最小/最大/平均リクエスト サイズ (バイト)、最小/最大/平均レスポンス サイズ (バイト)、最小/最大/平均合計サイズ (バイト) が表示されます。
- 特定のテストの失敗に関する詳細を参照するには、レポートの該当する行をダブルクリックします。特定のテストが失敗したかどうかは、そのテストを表す行を探し、[テスト失敗] 列の値を参照することでわかります。
負荷テスト プロファイルおよびシナリオのカスタマイズ
使用するプロファイルおよびシナリオをカスタマイズすると、負荷テストの実行方法をカスタマイズできます。負荷テストを継続する時間、仮想ユーザーの割付け、時間およびマシンごとのヒット率、および時間ごとのユーザー プロファイルの割付けを指定できます。
- [負荷テスト] タブで [Profiles] フォルダーをダブルクリックし、いずれかのテスト スイート ノードを選択します。右側に設定パネルが表示されます。
- パネル下部で遅延の [値] を 3 秒に変更します。これにより、ユーザーが書籍を注文する前にためらうのをシミュレートします。
- [Scenarios] ノードの下で [Linear Increase] を選択します。結果パネルに Linear Increase シナリオ コントロールが表示され、ユーザー グラフに localhost カーブが表示されます。
- Localhost カーブのエンドポイントを 2 分で 10 ユーザーの座標位置にドラッグ&ドロップします。
- [縦軸] ドロップダウン メニューから [ 20] を選択します。
- [ポイントを増やす] ボタンをクリックします。Localhost の線の中央に新たなポイントが現れます。
- 新しいポイントを 1 分で 10 ユーザーの座標位置にドラッグします。
- [Linear Increase] ノードを展開して [QoS] ノードを選択します。[概要] タブおよび [詳細] タブが表示されます。
- [詳細] タブを選択し、[新規] ボタンをクリックして [メトリクスの追加] ウィザードを開きます。
- [統計メトリクス] を選択し、[終了] をクリックします。
- メトリクス設定パネルで、[名前] フィールドに「
Execution Time Requirement
」と入力します。 - GUI 右側の [統計] ドロップダウンメニューで Avg.Exe.Time (ms) および「未満」を表す不等号記号 (<) を選択し、テキストフィールドに 200 を入力します。すると、実行時間が 200 ミリ秒を超えた場合に負荷テストが「失敗」とみなされるようになります。メトリクスの詳細については、「シナリオの QoS メトリクスのカスタマイズ」を参照してください。
- [Scenarios] ブランチの下にある [Linear Increase] ノードを選択し、[Load Test] ツールバー ボタンをクリックします。カスタマイズされた負荷テストが開始され、GUI パネルの右側に [グラフ] タブが表示されます。
- 負荷テストが終了するまで (2 分間) 待ちます。負荷テストが実行されている間、[グラフ] タブ で適切なチェックボックスをオンにすると、さまざまなパラメーターを参照できます。
負荷テストが完了すると、右側の GUI パネルにテスト情報概要が表示され、プロジェクト名、テスト開始および終了日時、選択されたシナリオ、マシンおよびプロファイルが表示されます。
動画チュートリアル負荷テスト設定およびシナリオの微調整
レポートの参照
負荷テストが完了したら、収集されたデータを分析し、アプリケーション/サービスが負荷状態でどのように動作したかを確認する必要があります。Load Test には、負荷テスト レポートの生成を設定する機能があります。
このセクションでは、詳細レポートの表示方法と HTML レポートの生成方法を学習します。
詳細レポートを参照するには、次の操作を行います。
- 結果パネルの [ビュー] メニューで [詳細レポート] をクリックします。さまざまなパラメーターとともに [グラフ] グラフが表示されます。
- グラフでは以下の操作を行うことができます。
- 異なるパラメーターをグラフ化して参照するには、結果パネル下部にある対象パラメーターのチェックボックスをオンにします。
- 複数のパラメーターを対数スケールで表示するには、[ログの拡大縮小] チェックボックスをオンにします。対数スケールを使用すると、複数の曲線を 1 つのグラフに収めることができます (たとえ表示される値の大きさが大幅に異なっていても)。
- グラフ全体の記録された詳細を参照するには、グラフの任意の場所を右クリックし、ショートカット メニューの [記録された詳細を表示] をクリックします。デフォルトでは、エラーの詳細が記録されています。成功の詳細を記録することもできます。詳しい設定方法については「データ記録パラメーターのカスタマイズ」を参照してください。
これまでにわかったとおり、詳細レポートの [グラフ] タブから、負荷テストのさまざまな詳細情報を集めることができます。[棒グラフ] および [テーブル] タブでも、その他の情報を参照できます。これらのタブおよび Load Test の詳細レポートについては、負荷テスト結果の参照とカスタマイズを参照してください。
.lt ファイルとしてプロジェクトを保存
- ツールバーの [プロジェクトの保存] ボタンをクリックして、負荷テスト プロジェクトを保存します。
- ダイアログ ボックスが開いたら、[ファイル名] フィールドにプロジェクト名を入力して [保存] ボタンをクリックします。ファイル名に拡張子
.lt
が付加され、プロジェクトが保存されます。