Biz∫のWEBアプリケーションの負荷テストをしたい(1)

先週のエントリでは、シナリオテストをSeleniumを使用して検証してみましたが、今回は負荷テストです。
いつものように【無料で簡単に】という観点からApache JMeterを検証することにしました。

ダウンロードは、Apache JMeter(http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi)から行いました。
バージョンを2.4使用しています。
ダウンロードしたZIPファイルを解凍すると以下のようなフォルダ構成になっています。

binの中に、jmeter.batがありますので、これをダブルクリックすると、JMeterが起動します。

さて、負荷テストでもシナリオを作成します。手動でシナリオを作成することも可能ですが、大抵はプロキシー機能を使用し、
Webアプリケーションの操作をレコーディングすることでシナリオの元を作成すると思いますが、JMeterでもそうします。

まず、HTTPリクエスト初期値設定を追加します。これはリクエストを受け付けるWebサーバの共通情報を設定するために用意します。

設定する項目は、IPアドレスとポートでOKです。
次にスレッドグループを追加します。スレッド数やRamp-Up期間、ループ回数など設定する箇所がありますが、この段階では、すべて1で大丈夫です。
最初はシナリオが想定通りに動作するかテストし、シナリオが出来上がってからこの部分を弄り始めます。

作成したスレッドグループに記録コントローラを追加します。この記録コントローラがレコーディングの受け口となります。

ワークグループにHTTPプロキシサーバを追加します。
Webアプリケーションの操作を記録するのに必要となります。


ここまでで、レコーディングはできるようになりましたが、このままレコーディングするとウエイトタイム0でレコーディングされます。
人がWebアプリケーションを操作する際には、ナビゲーションとナビゲーションの間に何秒かのウェイトが発生すると思います。
人によるWebアプリケーションの操作を出来る限り再現させるために、タイマーを設定しておくと、Webアプリケーションの操作をレコーディングした際に
自動的にウェイトを挿入してくれます。タイマーはいくつか種類があるので、要件に近いものを選びましょう。
下の図では、ガウス乱数タイマを追加しているところです。

ここまできたら、レコーディングを行うブラウザのプロキシー設定を変更します。
ロキシーのアドレスは、ローカルのPC(127.0.0.1)を指定し、ポートはHTTPプロキシーサーバで指定したものを設定します。

この状態で、HTTPプロキシーサーバの下の方にある「開始」ボタンを押下するとローカルPCのプロキシーサーバ機能が有効になります。
ブラウザのプロキシーのアドレスをローカルPCにしていますので、JMeterを介してWebアプリケーションサーバにアクセスすることになります。
「開始」ボタンを押下した時から、JMeterではレコーディング開始しています。
ブラウザでWebアプリケーションのアドレスを打ち込み、ログイン処理〜アプリケーション実行〜ログオフという一連のシナリオを実行すれば、
下の図のように、記録コントローラの配下にどんどんと記録されてゆきます。

明日は、スレッドグループの設定値について掘り下げます。