20:19:46)追加された行はこの色です。削除された行はこの色です。下階層用テンプレート#topicpath----//ここにコンテンツを記述します。Javaなストレスツールです。WEBアプリケーションに対して負荷をかけるためのツールですね。このツールはレポーティング機能も充実しているので、性能テストや負荷テストなどに利用すれば作業を効率よく行うことができそうです。Downloads>http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi]]よりダウンロード可能です。インストールも解凍するだけですね。[#sab3fc53]実際にやってみます。ログインアクション->ログイン中画面-http://localhost:8080/stressTest/logout.doでログアウトアクション->ログアウトしました画面->元のログイン画面-ログアウトアクションでは、トークンチェックしているなんてモノをやってみようと思います。password=fugaだったらOKとロジックがくんであります。=166176d36f24bb9a0c77df7f368d2fd4というリクエストごとに異なる値が載っているというモノです。このパラメタは毎回異なるので、JMeterの設定は注意が必要です。&color(red){絶対に他者のサイトにストレスをかけないでください。他者のサイトにストレスをかけた場合、最悪の場合損害賠償を請求されるかもしれないので、十分ご注意ください。};では実際にストレステストのシナリオを作っていこうと思います。スレッドグループで追加します。#ref(01.png)下記のスレッドグループ設定では、-スレッド数-何秒かけて起動するか((10秒と設定したら、上のスレッドを10秒かけて起動する))-ループ回数(上の設定を何回ループするか)などを設定します。1とした場合、10秒で5スレッドを起動するので、2秒に1回(初回の)クエリが発行されることになります。[#n9577943]次に接続先のサーバを指定します。HTTPリクエスト初期値設定で追加します。#ref(03Init.png)ここでは接続先のサーバ名やプロトコルなどを一括で指定することができます。すべてのクエリに載せたいパラメタなんかもかけそうです。[#h0b5d90d]次に各画面ごとのクエリを追加していきます。HTTPリクエストで追加します。#ref(05sampler.png)サンプラーの画面では-パス(URLのコンテキスト以下)-GETかPOSTか-クエリのパラメタなどを指定します。メソッドはGetです。#ref(06sampler.png)別のサンプラも作ってみます。ログイン画面表示後の次のアクションであるログイン処理のサンプラを作成します。下記のようにスレッドグループの下に[[ログインアクション>http://www.masatom.in/cgi-bin/viewvc.cgi/trunk/stressTest/source/nu/mine/kino/stresstest/LoginAction.java?root=Others&view=co]]を追加しました。取るので「リクエストで送るパラメータ」の欄にパラメタとして追加してあります。パラメタの値は可変である場合が多いですが、サンプルは固定で問題ないのでと、りあえず固定で値hoge,fugaを設定しています。#ref(07parameter.png)ここまでで一度実行してみます。開始でストレステストが開始されます。サーバのログなどを見ると負荷がかけられているのが分かると思います。[#v36eef60]先ほどサーバに負荷をかけしましたが、レスポンスタイムやスループットがどれくらいでているかはリスナーという機能で見ることができます。リスナーを追加します。#ref(08rep.png)これらのリスナーはいわゆるレポート機能で「結果を表で表示」はリクエストごとのレスポンスタイムを見ることができます。「統計レポート」はサンプラーごと(=画面ごと)の平均((平均や最小、最大ほか))レスポンスタイム、スループットなどを見ることができます。[#e429ae02]次は戻り電文のアサーションをしてみたいと思います。アサーションは、想定しているhtmlが返ってきているかどうかを確認するために用います((ホントにログインできてんのかな??とかをチェックできますね))。アサーションで追加します。#ref(11assertion.png)アサーションの画面ではどのようなアサーションを行うかを指定します。下の例では、ログイン後に返ってくるhtml内に「ログインできました!」という文字列が含まれているかどうかをチェックしています。#ref(12assertion.png)これでテスト実行しましょう。アサーションの結果は先のリスナ「結果を表で表示」で確認することができます。パスワードなどが間違ってて、戻りhtmlに「ログインできました!」という文字列が含まれていなかった場合は、ステータスが「!」などになるわけですね。#ref(13ok.png)アサーションOK。#ref(14ng.png)アサーションNG。[#gc45366b]続いてログアウトのサンプラを追加したいと思いますが、先の通りログアウトアクションはトークンチェックをしています。=7704e3e689f49ec91f539f083da60de2">ログアウト</a>の値を設定する必要があります。ようするに「直前のサンプラの戻り電文内のリンクタグから値を取り出す」必要があるわけですね。ログアウトアクションのサンプラを作成したあと、正しくログアウトができてることを確認するためアサーションも追加します。ログアウトできたら「ログイン画面へ」という文字が含まれたhtmlが返却されるので、それをアサーションすることにします。#ref(15assertion.png)もちろんこのままだとトークンがパラメタに載らないため、[[ログアウトアクション>http://www.masatom.in/cgi-bin/viewvc.cgi/trunk/stressTest/source/nu/mine/kino/stresstest/LogoutAction.java?root=Others&view=co]]ではエラーとなります。前画面の値をリクエストにセットするには「HTMLリンクパーサ」という機能を使用します。HTMLリンクパーサとします。#ref(16htmlLinkParser.png)ログアウトアクションにHTMLリンクパーサが追加されました。org.apache.struts.taglib.html.TOKEN=.*をパラメタに追加します。#ref(17parserParam.png)また、トークンはJ2EEセッションがつながっている必要があるため、Cookieを送出するよう設定を追加します((まあURLRewritingの場合もあり得るわけですが、、。クッキーマネージャでOKです。[#lf5719c5]先ほどは、前画面の戻りhtmlのなかの特定のリンクタグからパラメタを取得するというやり方を説明しましたが、次はもっと汎用的に(以下書き途中、、、、)。[#xb011c59]今まで手動でサンプラー(リクエスト)を作ってきましたが、実はJMeterをプロキシサーバにして、リクエスト・レスポンスを自動的にキャプチャすることができます。これをすれば上り電文のパラメタとかいちいち設定する必要がなくて、とても便利そうです。プロキシサーバでプロキシサーバを追加します。コメントありがとうございます。ものすごく前に書いた記事なので、やり方自体忘れてます。お役に立てなくてすいません。御世話になっております。Jmeterで負荷テストをおこなおうとしております。