目次へ

8. 負荷テスト計画の立て方

8.1. 負荷テスト計画

これまで、JMeterの様々な機能を紹介してきました。この章では、それらの機能を使い、実際にどのようにテスト計画を作成・実施していくのかを説明します。なお、以下の説明では、対象とするアプリケーションはWebアプリケーションを想定しています。

8.2. 事前に集めておく情報

まず、テスト計画を作成するために、テスト対象となるアプリケーションについて、いくつかの情報を集めておかなければなりません。

一番大切なのは、ピーク時に想定される同時アクセス数です。この数が想定できている場合は、一度の負荷テストでアプリケーションのパフォーマンスについての信頼ある数値を取得することができます。ピーク時の同時アクセス数がほとんど予想できないか、あるいは、どの程度までの同時アクセス数までアプリケーションが耐えられるか知りたい場合は、想定する同時アクセス数を小さい値から順に増やしていく形で何度も負荷テストを行う必要があります。

その他に、アプリケーションのセッションの管理方法を知る必要があります。クッキーを使用したセッション管理をしている場合は『HTTPクッキーマネージャ』を使用した方が良いでしょう。また、アプリケーションの標準的な使用のされ方を知っておくことも、テスト計画を作成する上で重要なことです。

これら、テスト対象のアプリケーションに対する情報を集めた上で、テスト計画を作成します。

8.3. テスト計画の作成と実施

必要な情報が集まったら、テスト計画を作成します。まず、JMeterを起動し、『テスト計画』に『スレッドグループ』を追加します。この『スレッドグループ』に、テスト対象のアプリケーションに対する同時アクセス数を基にした設定をします。通常は、想定される同時アクセス数を「スレッド数」に設定し、「Ramp-Up期間(秒)」を1、「無限ループ」にチェックを入れておけばよいでしょう。JMeterのバージョン1.9より、『スレッドグループ』に「スケジューラ」というチェックボックスが追加されました。ここにチェックを入れると、下に「スケジューラ設定」という設定エリアが表示され、テストの「開始時刻」と「終了時刻」が設定できるようになります。実際にテストを行う際は、これを利用すると便利です。下の図は、ピーク時の想定同時アクセス数が100である場合の設定例です。

スレッドグループ

次に、『設定エレメント』である『HTTPリクエスト初期設定』を『スレッドグループ』に追加します。通常の負荷テストでは、同一のサーバに対して複数のHTTPリクエストを送信することになりますので、サーバに関する共通設定を『HTTPリクエスト初期設定』の設定項目に入力しておきましょう。主要な入力項目は「プロトコル」「サーバ名またはIP」「ポート番号」だと考えられます。

もし、テスト対象のWebアプリケーションが、クッキーを使用してセッション管理を行っている場合は、『スレッドグループ』に『HTTPクッキーマネージャ』を追加しておきましょう。これで、各テストのスレッドごとにクッキーを受け付けることができるようになり、セッションを維持したアクセスをシミュレートすることができるようになります。

そして、テスト対象のWebアプリケーションの通常の使用方法を再現できるように、『ロジックコントローラ』を組み合わせて『HTTPリクエスト』を『スレッドグループ』に追加します。この『ロジックコントローラ』と『HTTPリクエスト』を追加の仕方は、負荷テストの妥当性を左右しますので、よく考えて行ってください。以下の図は、トップページから3種類ある各検索ページへ移動し、そこから他の各検索ページへ移動する際は再びトップページへ移動してから目的とする検索ページへ移動するような使用方法をシミュレートした『テスト計画』です。

シミュレートした『テスト計画』

『HTTPリクエスト』では、リクエストにパラメータも含めることができます。『HTTPリクエスト』の設定画面の「リクエストで送るパラメータ」の項目の下の「追加」ボタンを押し、追加するパラメータの「名前」と「値」を入力します。このとき、「Encode?」にチェックをしておけば、パラメータの値をURLエンコードして送信します。また、パラメータの「値」に何も入力していない場合には「等号含む?」のチェックをはずすことができます。この「等号含む?」のチェックをはずした場合は、そのパラメータを送信する際に「=」が付かなくなります。例えば、ログインページ用に以下のような『HTTPリクエスト』を作成したとします。

HTTPリクエスト

この場合、送信されるリクエストは /index.do?id=testuser&password=testpassword となります。ここで、以下のように password パラメータの値を削除したとします。

HTTPリクエスト2

このとき送信されるリクエストは /index.do?id=testuser&password= となります。さらに、「等号含む?」のチェックをはずし、以下のような状態にしたとします。

HTTPリクエスト3

このとき送信されるリクエストは /index.do?id=testuser&password となります。(一部のアプリケーションでは値が空のときは「=」をつけない方が良いので、JMeter1.9よりこの「等号含む?」のカラムが追加されました。)

『HTTPリクエスト』を追加・設定したら、負荷テストの結果を表示するための『リスナー』を追加します。各リクエストごとの詳細を見たい場合は『結果を表で表示』リスナーを追加しますが、通常は『統計レポート』リスナーを追加して、リクエストごとの統計情報を取得すれば良いでしょう。また、負荷テストによってパフォーマンスが時間的にどう変化しているかを見たい場合は、『グラフ表示』リスナーを追加すれば良いでしょう。負荷テストを行った結果、『グラフ表示』リスナーに表示されたグラフが完全に右肩上がりになっている場合は、テスト対象のWebアプリケーションが、負荷テストで設定した負荷に耐えられないことを表しています。

ここまでで、負荷テストを行う準備は整いました。作成した『テスト計画』を次回以降も使用できるように保存しておきましょう。『テスト計画』を保存するには、メニューの ファイル → テスト計画の保存 を選択し、適当な場所をとファイル名を選んで保存します(下図参照)。保存した『テスト計画』は、JMeterを立ち上げた後、メニューの ファイル → 開く で保存したファイルを選択することで読み込むことができます。

テスト計画の保存

では、実際に負荷テストを行ってみましょう。メニューの 実行 → 開始 を選択すると、負荷テストが開始されます。テスト結果は、『スレッドグループ』に追加した各リスナーを見て確認できます。

実習課題

以下のようなWebアプリケーションに対して、負荷テストの『テスト計画』を作成しなさい。また、その際、どのような根拠・想定で『テスト計画』を作成したかも述べること。

対象とするWebアプリケーション:[会員向け物販サイト]

  • 会員数は50000人
  • 表示されるページはログインページ(/login.do)、トップページ(/top.do)、商品検索ページ(/search.do)、お勧め商品表示ページ(/special.do)、購入ページ(/buy.do)の5ページ
  • 各ページの画面遷移は、以下の通りとする。
  • なお、詳細は自分で想定してよい。
表示されるページの図

解答例はこちら

 

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp