JMeter - Apache JMeterはWEB向けのPure Javaなストレスツールです。WEBアプリケーションに対して負荷をかけるためのツールですね。このツールはレポーティング機能も充実しているので、性能テストや負荷テストなどに利用すれば作業を効率よく行うことができそうです。
The Jakarta Site - JMeter Downloadsよりダウンロード可能です。インストールも解凍するだけですね。
実際にやってみます。
シナリオとしては
なんてモノをやってみようと思います。ログインアクションはパラメタとしてuserid,password を取ります。んで、それぞれ
userid=hoge password=fuga
だったらOKとロジックがくんであります。またトークンチェックとはいわゆる[[Strutsの同期トークンの機能>]]で、ログアウトのリンクの後ろに
/stressTest/logout.do?org.apache.struts.taglib.html.TOKEN =166176d36f24bb9a0c77df7f368d2fd4
というリクエストするごとに異なる値が載っているというモノです。このパラメタは毎回異なるので設定には注意が必要です。
絶対に他者のサイトにストレスをかけないでください。他者のサイトにストレスをかけた場合、最悪の場合損害賠償を請求されるかもしれないので、十分ご注意ください。
テスト計画で右クリックして
追加 > スレッドグループ
で追加します。
下記のスレッドグループ設定では、
などを設定します。たとえば
とした場合、10秒で5スレッドを起動するので、2秒に1回(初回の)クエリが発行されることになります。
次に接続先のサーバを指定します。テスト計画で右クリックして
追加 > 設定エレメント > HTTPリクエスト初期値設定
で追加します。
ここでは接続先のサーバ名やプロトコルなどを一括で指定することができます。すべてのクエリに載せたいパラメタなんかもかけそうです。
次に各画面ごとのクエリを追加していきます。クエリは スレッドグループを右クリックして
追加 > サンプラー > HTTPリクエスト
で追加します。
サンプラーの画面では
などを指定します。たとえば下の例だとリクエストパスを /stressTest/index.do と指定しています。メソッドはGetです。
次にログイン処理を行います。スレッドグループの下にログインアクションを追加しました。このログインアクションはクエリとして userid,password を取るので「リクエストで送るパラメータ」の欄にパラメタとして追加してあります。パラメタの値は可変である場合が多いですが、サンプルは固定で問題ないのでと、りあえず固定で値hoge,fugaを設定しています。
ここまでで一度実行してみます。JMeterのメニューから
実行 > 開始
でストレステストが開始されます。サーバのログなどを見ると負荷がかけられているのが分かると思います。
先ほどサーバに負荷をかけしましたが、レスポンスタイムやスループットがどれくらいでているかはリスナーという機能で見ることができます。スレッドグループを右クリックし
追加 > リスナー > 結果を表で表示 or 統計レポート
でリスナーを追加します。
これらのリスナーはいわゆるレポート機能で「結果を表で表示」はリクエストごとのレスポンスタイムを見ることができます。「統計レポート」はサンプラーごと(=画面ごと)の平均*2レスポンスタイム、スループットなどを見ることができます。
次は戻り電文のアサーションをしてみたいと思います。アサーションは、確かに想定しているhtmlが返ってきていることを確認するために用います。
使い方ですが、アサーションしたいアクション(サンプラ)で右クリックし、
追加 > アサーション > アサーション
で追加します。
アサーションの画面ではどのようなアサーションを行うかを指定します。下の例では、ログイン後に返ってくるhtml内に「ログインできました!」という文字列が含まれているかどうかをチェックしています。
これでテスト実行しましょう。アサーションが正しかったかどうかは、先のリスナ「結果を表で表示」で確認することができます。わざとパスワードなどを間違えて「ログインできました!」が戻りhtmlに含まれていなかった場合は、ステータスが「!」などになるわけですね。
アサーションOK。の場合。
アサーションNG。の場合。
先ほどは、前画面の戻りhtmlのなかの特定のリンクタグからパラメタを取得するというやり方を説明しましたが、次はもっと汎用的に(以下書き途中、、、、)。
今まで手動でサンプラー(リクエスト)を作ってきましたが、実はJMeterをプロキシサーバにして、リクエスト・レスポンスを自動的にキャプチャすることができます。これをすれば上り電文のパラメタとかいちいち設定する必要がなくて、とても便利そうです。
ワークベンチで右クリックして、
追加 > Non Test エレメント > HTTP プロキシサーバ
でプロキシサーバを追加します。
この記事は
現在のアクセス:161907