読者です 読者をやめる 読者になる 読者になる

Code for final

ふぁいなる向けのコード置き場です。すでにコードじゃないこともいっぱい。

Apache JMeterを使って簡単にWEBの表示時間を測定するポイント。

JMeter

ひさびさにJMeterを使ったので、忘れかけていたポイントをまとめときます。

WEBシステムでよくあるログインからログイン後のトップページの表示、さらに別画面表示までの表示時間を測定する手順です。

1. JMeterを起動する。
性能測定にはJMeterを使います。なければ以下からダウンロード。Java必須。
Apache JMeter - Apache JMeter™
ダウンロードして解凍したらbinフォルダのjmeter.batをたたく。

2. テスト計画にスレッドグループを追加する。
1スレッドで処理したいことをここに追加。
多重で確認する場合はスレッド数を設定する。
複数回実行する場合はループ回数を設定する。

3. スレッドグループにユーザパラメータを追加する。(任意)
多重テストを行う場合でログインIDとパスワードを動的に変更したい場合に使用する。
外部ファイルから読み込むこともできる。 JMeterのbinのフォルダにuserid.txtとpassword.txt(中身は値を箇条書き)を配置して以下の設定を追加する。

名前 ユーザー_1
userid ${_StringFromFile(userid.txt)}
password ${_StringFromFile(password.txt)}

4. スレッドグループにHTTPクッキーマネージャを追加する。(任意)
クッキーを使用している場合は追加する。わからない場合は追加しておけば大丈夫かも。特に設定不要。

5. スレッドグループに記録コントローラを追加する。
この中にあとで記録したリクエストが登録される。

6. スレッドグループにリスナー(統計レポート、結果をツリーで表示等)を追加する。
統計レポート、結果をツリーで表示があれば大丈夫な気がする。あとは必要に応じて追加。

7. ワークベンチにHTTPプロキシサーバを追加してプロキシサーバを開始する。
ブラウザの動きを記録するためにプロキシサーバを追加する。IEのプロキシサーバ設定を行う。localhost:8080に。
設定後、HTTPプロキシサーバを選択して開始ボタンをたたく。

8. IEを起動してログイン画面を開いて測定したい範囲で動かす。終わったらプロキシサーバを停止する。
記録されたリクエストが記録コントローラに追加される。変なものが混じらないようにバックグラウンド動いている自動更新サービス(AdobeJava)は止めといたほうがいい。
終わったらIEのプロキシ設定を戻して、プロキシサーバを停止する。
※静的コンテンツ(js,css等)の取得も計測時間に含める場合はIEのキャッシュを削除しておくか開発者ツールのネットワークのところで常にサーバから更新するをONにする必要がある。こうしないとキャッシュ済みのコンテンツは測定に含まれない。

9. 記録されたリクエストのユーザID、パスワードを変数に置き換える。(任意)
ユーザパラメータを追加している場合は、記録コントローラにあるログイン処理のリスエストを選択して、リクエストパラメタのところを固定値から変数に置き換える。
ユーザパラメータで指定した名前で指定する。ユーザIDであれば${userid}とか。

10. 記録されたリクエストに後処理(正規表現抽出)を追加する。(任意)
トークンなどリクエストのたびに変わるものがある場合は正規表現抽出したものを変数にいれる。
レスポンスから取得するので、取得したいレスポンスが含まれるリクエストに正規表現抽出を追加。 たとえば画面上の<input type="hidden" name="token" value="xxxxx">にあるのであれば以下のように設定して抽出できる。

項目名
参照名 token
正規表現 <input type="hidden" name="token" value="(.*?)">
テンプレート $1$
一致番号(0から乱数) 0
初期値

抽出した値が変数に格納されているかはスレッドグループにDebug Samplerを抽出よりあとの位置に追加すれば結果をツリーで表示で確認できる。
また、レスポンスからキーワードを探すときは結果をツリーで表示でリクエストを選択して応答データの中から探すが、デフォルトでは表示上限があり、長過ぎると省略される。表示を無制限にするにはjmeter.propertiesに以下の設定を追加する。ちなみに正規表現抽出は表示上限で省略されていても対象となる。

#レスポンスの表示を無制限にする
view.results.tree.max_size=0

11. 抽出した変数を記録されたリクエストに設定する。(任意)
トークンを使用している場合はリクエストパラメタに設定してリクエストしているはずなので、記録コントローラにある該当のリクエストを選択して、正規表現で抽出した変数を使用するように設定する。設定は${token}というような感じで。

12. 実行する。
実行メニューから開始を選択する。
結果は実行のたびに蓄積されるのでクリアした場合は、実行メニューから全て消去を選ぶ。
すべて緑の成功にならない場合は、ツリー表示でエラーになったリクエストの応答データを確認して対処する。

13.結果を確認する。
実行後に統計レポート、結果をツリーで表示を表示すれば所要した時間が確認できる。

以上が簡単な手順。 上記の手順をすべてやると画面はだいたいこんな感じになる。

f:id:finalstream:20160112221930p:plain

JMeterについてはもっといろいろできるのであとはググればなんとかなる。はず。