JMeterのTips
最近、WEBアプリケーションの負荷テストでJMeterをいじったので、ちょっと悩んだところまとめ。
「jakarta-jmeter-2.3RC4」と「jdk1.5.0_11」での話。
SSLを使うときの設定
1.「オプション」→「SSLマネージャ」で「${JAVA_HOME}\jre\lib\security\cacerts」を選択。
2.HTTPリクエストのサンプラーを選択して表示される「プロトコル」を「HTTPS」に設定。
3.テスト実行の際にパスワードの入力を促されたら「changeit」と入力。(デフォルトのKeyStoreパスワードはchangeitだから)
前の画面遷移のレスポンスで帰ってきたパラメータを次の画面遷移で渡したいとき
(例えばTOKENていう名前のhiddenパラメータを渡すとき)
1.前画面遷移のHTTPリクエストのサンプラーを「右クリック」→「追加」→「後処理」→「正規表現抽出」で表示される画面で以下を設定。
項目名 | 設定値 |
---|---|
Response Field to check | Body |
参照名 | hidden_TOKEN |
正規表現 | <input type="hidden" name="TOKEN" value="(.*?)"/> |
テンプレート | $1$ |
一致番号(0から乱数) | 0 |
2.次画面遷移のHTTPリクエストのサンプラーを選択して表示される「リクエストで送るパラメータ」を以下のように設定。
名前 | 値 |
---|---|
TOKEN | ${hidden_TOKEN} |
ブラウザで操作した画面遷移リクエストをJMeterに自動記録させる。
1.ワークベンチを「右クリック」→「追加」→「Non-Testエレメント」→「HTTPプロキシサーバ」
2.IEの「ツール」→「インターネットオプション」→「接続」→「LANの設定」→「プロキシサーバー」にチェックし以下のように設定。
アドレス | localhost |
---|---|
ポート | JMeterのHTTPプロキシサーバ設定のポートと同一 |
3.JMeterのHTTPプロキシサーバ設定画面の「開始」ボタンをクリックする。
4.IEでテストシナリオに従った操作をする。
5.JMeterのHTTPプロキシサーバ設定画面の「停止」ボタンをクリックすると記録完了。
※ただし、SSL通信の画面は記録できない。けど、例えば、ログイン認証だけSSL通信をやっているなら、ブラウザでログイン後の画面まで遷移してから、上記の操作を開始すればOK。
複数のユーザーの同一画面遷移をテストする(ユーザーID:00000〜00010、パスワード:x0000〜x0010の10人のユーザーの場合)
1.ユーザーID、パスワードの末尾だけが連番で異なるユーザーデータを準備する。
2.スレッドグループを「右クリック」→「追加」→「設定エレメント」→「ユーザー定義変数」で表示される画面でユーザーID、パスワードの前方同一部分文字列を以下のように設定。
名前 | 値 |
---|---|
USER_ID_PREFIX | 000 |
PASSWORD_PREFIX | x00 |
3.HTTPリクエストのサンプラーを「右クリック」→「追加」→「前処理」→「カウンタ」で表示される画面で以下のように設定。
項目名 | 設定値 |
---|---|
開始 | 0 |
増分 | 1 |
最大値 | 10 |
Number format | 00 |
参照名 | USER_ID_SUFFIX |
4.ログインするHTTPリクエストのサンプラーを選択して表示される「リクエストで送るパラメータ」を以下のように設定。
名前 | 値 |
---|---|
username | ${USER_ID_PREFIX}${USER_ID_SUFFIX} |
password | ${PASSWORD_PREFIX}${USER_ID_SUFFIX} |
このように複数のユーザー単位に複数スレッドグループを作成せずに、1つのスレッドグループにカウンタを設定したほうがいいです。
なぜなら、スレッドグループをクリックして表示される「スレッド数」を変えるだけでユーザー数を変えられるから。
スレッド数 | アクセスするユーザ |
---|---|
1 | 00000のユーザ |
10 | 00000〜00010のユーザ |
99 | 00000〜00099のユーザ |