[Jmeter]_03_シナリオ作成-01_HTTPリクエスト編 [Jmeter]
まずは前回のおさらい+αから。
キャプチャが終わった段階で、Jmeterは以下のような構成となっている。
スレッドグループ_01
┣トランザクションコントローラ_01_PV01
┃ ┣HTTPリクエスト_01_PV01_001
┃ ┃ ┗HTTPヘッダマネージャ_01_PV01_001
┃ ┗HTTPリクエスト_01_PV01_002
┃ ┗HTTPヘッダマネージャ_01_PV01_002
┣トランザクションコントローラ_01_PV02
:
① スレッドグループ
1つのシナリオ ≒ オペレーション群。
Top => 商品詳細 => カート投入 => カート画面 などの一連の画面遷移を指す。
② トランザクションコントローラ
ユーザの1オペレーション ≒ 1ページビュー(PV)。
上述の例では「商品詳細」の表示、「カート投入」ボタンの押下などが該当する。
③ HTTPリクエスト
ユーザオペレーションに伴うHTTP通信。
通常(※1)、1PVに1つ以上存在。
「.php」「.do」等の動的コンテンツの実行、
「.js」「.css」「.jpg」等の静的コンテンツの取得(※2)などが該当。
※1 タブ切替などのHTTP通信を伴わないオペレーションも存在する。
Jmeterではこれは再現せず、そのオペレーションに要した時間を
定数タイマで再現するに留める
※2 ※1でも記載の通り、クライアントサイドの処理はJmeterで再現しない。
ただし、次のリクエストに必要なパラメータをjs等で生成している場合、
Jmeterでも同様にパラメータの作りこみが必要となる可能性がある。
④ HTTPヘッダマネージャ
HTTPリクエストに付与するヘッダ情報。
今回は、③の設定について記載する。
キャプチャにて取得した場合、以下の通りパラメータがある程度記入されている。
赤枠で示した部分が主な設定すべき項目であるが、それらの詳細は以下の通り。
■Encode?の使用例
日本語や全角文字を送信する時、通常は下図「デコード前」のように
人間にわかりにくい文字にエンコードされた状態で送信されます。
ですが、パラメータを色々変更する時にこのエンコード後の状態だとわかりにくいです。
※読める人もいるでしょうが、私はデコーダ必須でゴザイマス…
このチェック項目は、この不便さを解消してくれる項目なのです。
■等号含む?の使用例
下表のようなパラメータをGETメソッドでリクエストする場合を考えます。
このとき、リクエストは以下のようになります。
http://localhost:9999/sample.php?user=id01&pass=
次は、memberPassのCheckedをはずしてみます。
このとき、リクエストは以下のようになります。
http://localhost:9999/sample.php?user=id01&pass
アプリケーションによっては値が存在しない時に「=」を含めない方がよいことがあるため、
必要に応じて本項目のチェックをはずしてください。
次回はHTTPヘッダ編。
キャプチャが終わった段階で、Jmeterは以下のような構成となっている。
スレッドグループ_01
┣トランザクションコントローラ_01_PV01
┃ ┣HTTPリクエスト_01_PV01_001
┃ ┃ ┗HTTPヘッダマネージャ_01_PV01_001
┃ ┗HTTPリクエスト_01_PV01_002
┃ ┗HTTPヘッダマネージャ_01_PV01_002
┣トランザクションコントローラ_01_PV02
:
① スレッドグループ
1つのシナリオ ≒ オペレーション群。
Top => 商品詳細 => カート投入 => カート画面 などの一連の画面遷移を指す。
② トランザクションコントローラ
ユーザの1オペレーション ≒ 1ページビュー(PV)。
上述の例では「商品詳細」の表示、「カート投入」ボタンの押下などが該当する。
③ HTTPリクエスト
ユーザオペレーションに伴うHTTP通信。
通常(※1)、1PVに1つ以上存在。
「.php」「.do」等の動的コンテンツの実行、
「.js」「.css」「.jpg」等の静的コンテンツの取得(※2)などが該当。
※1 タブ切替などのHTTP通信を伴わないオペレーションも存在する。
Jmeterではこれは再現せず、そのオペレーションに要した時間を
定数タイマで再現するに留める
※2 ※1でも記載の通り、クライアントサイドの処理はJmeterで再現しない。
ただし、次のリクエストに必要なパラメータをjs等で生成している場合、
Jmeterでも同様にパラメータの作りこみが必要となる可能性がある。
④ HTTPヘッダマネージャ
HTTPリクエストに付与するヘッダ情報。
今回は、③の設定について記載する。
キャプチャにて取得した場合、以下の通りパラメータがある程度記入されている。
赤枠で示した部分が主な設定すべき項目であるが、それらの詳細は以下の通り。
名称エリア | ||
---|---|---|
設定項目 | 内容 | Note |
名前 | Jmeter上で表示する名前。 (左フレームの管理パネル、各リスナーなど) 実際のアクセス先URLと一致させる必要はない。 命名規則の観点から "PVXXX_YYY_ZZZ" などとした方が無難かと。 |
XXX … PV番号 YYY … PV内HTTPリクエスト通番 ZZZ … アクセス先URL |
コメント | コメント欄。 オペレーション内容など記載するのがよいか。 「Top画面から1つ目の商品ページを開く」など。 |
ご自由にどうぞ。 |
Webサーバエリア | ||
---|---|---|
設定項目 | 内容 | Note |
サーバ名 またはIP |
アクセス先サーバのホスト名またはIPを入力する。 上図では同一マシン内へのアクセスのため、 「localhost」を記載。 |
「http://」は必要アリマセンヨ。 |
ポート番号 | アクセス先サーバのポート番号を記載する。 | httpsだと443ダヨネ。 |
HTTPリクエストエリア | ||
---|---|---|
設定項目 | 内容 | Note |
Implementation | Jmeterプロセス⇔サーバ間の通信方法。 HttpClient4、HttpClient3.1、Javaから指定。 HttpClient4推奨。 |
理由は前項の通り。 |
プロトコル | 通信プロトコルを指定する。 | 大抵はhttpかhttps。 |
メソッド | 通信メソッドを指定する。 | 大抵はGETかPOST。 |
Content encoding |
エンコードの文字コードを指定。 | parametersエリアの 各パラメータに適用。 |
パス | アクセス先URLを記載。 | ホスト名(IP)以降のURL。 |
自動 リダイレクト |
チェック時、リダイレクトに対応。 サーバからHTTPレスポンスコード3XX が返却された場合、 自動で次のリクエストを送付する。 |
ただし、各リスナーには レスポンスコード3XXの リダイレクションレスポンス (と対応するHTTPリクエスト) は記録されません。 |
リダイレクト に対応 |
チェック時、リダイレクトに対応。 サーバからHTTPレスポンスコード3XX が返却された場合、 自動で次のリクエストを送付する。 |
自動リダイレクトと違い、 リスナーに途中のリクエスト /レスポンスも記載される。 |
KeepAliveを 有効にする |
チェック時、HTTPヘッダに含める 「Connection」の値を「Keep-Alive」とする。 |
チェックしない場合は 「Close」となる。 |
Use multipart /form-data for POST |
Parameters部分を multipart/form-dataで送信。 |
ファイルアップロードなど 実行するときにチェック。 |
Browser -compartible headers |
multipart/form-data 使用時、 HTTPヘッダ 「Content-Disposition」のみを送信。 |
HTTPヘッダ 「Content-Type」、 「Content-Transfer-Encoding」 は不使用に。 |
Parametersエリア | ||
---|---|---|
設定項目 | 内容 | Note |
名前 | パラメータ名。 基本的にキャプチャ後は変えない。 |
追加することはあるかも。 |
値 | パラメータの値。 この部分を正規表現抽出したり、 CSV読込したりすることが多い。 |
固定値なのか、 システム変動値なのか、 ユーザ変動値なのか 見極めるのがキモ。 |
Encode? | チェック時、「値」をエンコードして送信。 | 以下に使用例を書いたよ。 |
等号含む? | チェック時、リクエストに「=」を含む。 | これも以下に例を。 |
■Encode?の使用例
日本語や全角文字を送信する時、通常は下図「デコード前」のように
人間にわかりにくい文字にエンコードされた状態で送信されます。
ですが、パラメータを色々変更する時にこのエンコード後の状態だとわかりにくいです。
※読める人もいるでしょうが、私はデコーダ必須でゴザイマス…
このチェック項目は、この不便さを解消してくれる項目なのです。
■等号含む?の使用例
下表のようなパラメータをGETメソッドでリクエストする場合を考えます。
名前 | 値 | 等号含む? |
---|---|---|
memberId | 0001 | Checked |
memberPass | Checked |
このとき、リクエストは以下のようになります。
http://localhost:9999/sample.php?user=id01&pass=
次は、memberPassのCheckedをはずしてみます。
名前 | 値 | 等号含む? |
---|---|---|
memberId | 0001 | Checked |
memberPass |
このとき、リクエストは以下のようになります。
http://localhost:9999/sample.php?user=id01&pass
アプリケーションによっては値が存在しない時に「=」を含めない方がよいことがあるため、
必要に応じて本項目のチェックをはずしてください。
次回はHTTPヘッダ編。
2015-10-11 12:15
nice!(0)
コメント(0)
トラックバック(0)
コメント 0