- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>Apache Jmeter]]
* 目次 [#o95035a9]
#contents
*概要 [#ecd5edb4]
-各種の[[設定>#u143e4d3]]方法と負荷テストの実施[[手順>#af7a6971]]についてまとめる。
-必要に応じて、
--[[スクリプトのデバッグ・検証>#d6fa2a67]]
--[[スクリプトの修正>#a0d80ce1]]
>を行う。
*設定 [#u143e4d3]
**HTTPリクエスト [#v288a329]
HTTPリクエストの[[サンプラーを追加>Jmeter用語#q4e53b30]]して使用する。
***プロパティ [#w88f5be9]
以下のプロパティを設定。
-名前~
HTTPリクエストの名前(ID?)。
-コメント~
HTTPリクエストのコメント。
-Webサーバ
--サーバ名またはIP~
テストするサーバ名またはIPアドレス(http:// は書くとエラーになるので注意)
--ポート~
http なら 80、https なら 443など。
-プロトコル~
HTTP(既定値)/HTTPS/FILEのいずれか。
-メソッド~
GET(既定値), POST, HEAD, TRACE, OPTIONS, PUT, DELETE, PATCH
-パス
--/ から始まる(サーバ名またはIPアドレスを除いた)パス
--パスはURLエンコードされないので注意(URLエンコードされたものを指定)。
--クエリ・ストリングを付加したい場合は 後述の「リクエストで送るパラメータ」に記載。
--フルパスの場合、サーバ名またはIP、ポート、プロトコル、クエリ・ストリングは無視される。
-Timeouts(millisecond)
--Connect~
接続タイマー
--Response~
応答タイマー。
-HTTPリクエスト
--Implementation
---Java, HttpClient3.1, HttpClient4(既定値).
---既定値は Jmeter の jmeter.httpsampler プロパティの値にも依存。
--Content encoding
---(POST, PUT, PATCH, FILE に対して)使われるContent encoding。
---HTTP の Content-Encoding ヘッダには影響しない。
--KeepAliveを有効にする
---Jmeter に Connection: keep-alive ヘッダをセットさせる。
---Apache HttpComponents の HttpClient 実装であれば正しく動作する。
--multipart/form-data
---Use multipart/form-data for POST~
multipart/form-data もしくは application/x-www-form-urlencoded を使った POST リクエストを使用。
---Browser-compatible headers~
multipart/form-data を使う際、Content-Type および Content-Transfer-Encoding ヘッダを使わず、Content-Disposition ヘッダだけを送る。
--リクエストで送るパラメータ~
クエリ・ストリングとして送るパラメータを指定する。
--リクエストと一緒に送信されるファイル~
アップロードするファイルを指定する。
--Redirect
---[[自動リダイレクト>#b81b0604]]
---[[リダイレクトに対応>#qa3e7d60]]
-Proxy Server
--サーバ名またはIP
--ポート番号
--ユーザー名
--パスワード
-Embedded Resources from HTML Files(画像, JavaScript, CSS等)
--全てのイメージとアプレットを繰り返しダウンロードする(HTMLファイルのみ)~
HTML ファイルをパースし、埋め込みリソースをGET。
--Use concurrent pool.~
同時並行コネクションプールを使う。
--Size:~
同時並行コネクションプールのサイズ
--URLs must match~
GETする埋め込みリソースのURLとしてマッチさせたいものを正規表現で指定。
GETする埋め込みリソースのURLとしてマッチさせたいものを[[正規表現]]で指定。
-Source address(HTTPClient 実装における HTTP リクエストのみ)
--ソースアドレスの型~
ソースアドレスの値を区別するために型を選択する。
--ソースアドレスの値~
・・・
-オプションタスク
--モニタとして使用~
モニタ結果リスナーで使用する。
--Save response as MD5 Hash?
---応答が結果に格納されなくなる。
---代わりに、32 文字の MD5 ハッシュが格納される。
***HTTPリクエスト初期値設定 [#w1b1fffd]
-[[設定できる項目はHTTPリクエストと同じ>#w88f5be9]]。
-この画面で[[HTTPリクエストの共通パラメタ>#w88f5be9]]を設定できる。
-テスト環境でスクリプトを作成して、本番環境に負荷をかける場合などに有用。
-[[「設定エレメント」の「HTTPリクエスト初期値設定」>Jmeter用語#z1e392de]]を追加する。
**認証設定 [#x82cfa0e]
-以下の認証がある場合、
-以下の認証([[参考>認証基盤#o815c7c4]])がある場合、
--Basic
--Digest
--NTLM
--Kerberos
-[[「設定エレメント」の「HTTP認証マネージャ」>Jmeter用語#z1e392de]]を追加する。
***設定項目 [#qc9397c8]
-基底URL
-ユーザー名
-パスワード
-Mechanism
***Mechanism=KERBEROSの場合 [#n63cf6ac]
追加で、以下の設定が必要。
-system.properties
--java.security.krb5.conf
--java.security.auth.login.config
-*.conf
--krb5.conf(Kerberos 構成ファイル)
--jaas.conf(JAASログイン構成ファイル)
-参考
--IBM Knowledge Center - 構成ファイルとポリシー・ファイル~
https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_72/rzaha/rzahajgssconfigs.htm
**HTTP関連の設定 [#hcd8c939]
***Cookieの有効化 [#y2dda4a3]
[[「設定エレメント」の「HTTP クッキーマネージャ」>Jmeter用語#z1e392de]]を追加する。
***Cacheの有効化 [#i8414f68]
[[「設定エレメント」の「HTTP Cache Manager」>Jmeter用語#z1e392de]]を追加する。
**起動設定 [#h21f2f5d]
***プロキシ設定 [#edd4e9fd]
自身がプロキシとして動作するが、~
更に、プロキシを経由させる場合、起動オプションでプロキシ設定を行う。
-Apache JMeter - User's Manual: Getting Started~
> 1. Getting Started > 1.4 Running JMeter~
http://jmeter.apache.org/usermanual/get-started.html#proxy_server
jmeter -H my.proxy.server -P 8000 -u username -a password
jmeterWithProxy.bat的なbatファイルを準備しておくと吉。~
なお、この時、jmeter.batへのパスを、フルパスで記述しておくこと。
***CUI(non-GUIモード) [#r4107134]
-負荷テストの実行時は、CUI(non-GUIモード)で起動する。
***CUI(non-GUI)モード [#r4107134]
-負荷テストの実行時は、CUI(non-GUI)モードで起動する。
-「テスト計画-nnnnnn.jmx」に定義されたテストを実施してlog.jtlに結果を出力。
jmeter -n -t テスト計画-nnnnnn.jmx -l log.jtl
-オプション
|項番|オプション|説明|h
|1|-n|non-GUIで起動|
|1|-n|CUI(non-GUI)モードモードで起動|
|2|-t [ファイル名]|テスト計画を格納するJMXファイル名|
|3|-l [ファイル名]|テスト結果を保存するJTLファイル名|
|4|-j [ファイル名]|実行ログを保存するログファイル名|
|5|-g [CSVファイル名]|(テストは実行せずCSVファイルを読み込んで)レポートを出力|
|6|-e|負荷テスト後にレポートを出力|
|7|-o [フォルダ名]|レポートを出力するフォルダを指定。&br;存在しないフォルダ名か空のフォルダを指定。|
-参考
--【JMeter】負荷テスト実行はGUIから行ってはならない - Qiita~
https://qiita.com/tatesuke/items/827e6190753964e46814
**負荷設定 [#i7a16b4f]
***多重度 [#k62bc337]
***多重度(仮想ユーザ数) [#k62bc337]
多重度(仮想ユーザ数)は、[[スレッド数>Jmeter用語#s4c36420]]で設定する。
***スループットの調整 [#w630dfb3]
-スループットは、
--[[Ramp-up期間(秒で指定)>Jmeter用語#s4c36420]]か、
--[[Ramp-up期間(秒)>Jmeter用語#s4c36420]]
1秒中の同時アクセス仮想ユーザー数 = (仮想ユーザ数 * ループ回数) / Ramp-up期間(秒)
--[[タイマ>Jmeter用語#q9b692ef]]
---入力時間、思考時間を考慮して[[タイマ>Jmeter用語#q9b692ef]]を設定する。
---定数タイマ
---定数スループット・タイマ
>で調整する。
>の何れかで調整する。
-ただし、諸事情有り、[[タイマ>#j7e0d4ee]]を使用した方法が推奨される。
-[[Ramp-up期間(秒)>Jmeter用語#s4c36420]]を使用した方法~
本来、「[[Ramp-up期間(秒)>Jmeter用語#s4c36420]]」は、~
多重度(仮想ユーザ数)を徐々に増加させるための用途で使用すため、~
スループットの調整には、「[[タイマ>Jmeter用語#q9b692ef]]」を使用した方法が推奨される。
***[[Ramp-up期間(秒)>Jmeter用語#s4c36420]]で設定 [#he9434c4]
1秒中の同時アクセス仮想ユーザー数 = (仮想ユーザ数 * ループ回数) / Ramp-up期間(秒)
-[[タイマ>Jmeter用語#q9b692ef]]を使用した方法~
入力時間、思考時間を考慮して[[タイマ>Jmeter用語#q9b692ef]]を設定する。
***[[タイマ>Jmeter用語#q9b692ef]]で設定 [#j7e0d4ee]
--[[HTTPリクエストのサンプラー>#v288a329]]以下に、下記[[タイマ>Jmeter用語#q9b692ef]]を追加する。
-[[HTTPリクエストのサンプラー>#v288a329]]以下に[[「定数タイマ」/「定数スループット・タイマ」のタイマ>Jmeter用語#q9b692ef]]を追加する。
--[[定数タイマ>Jmeter用語#q9b692ef]]
---スレッドグループやコントローラーなどのシナリオ以下に[[定数タイマ>Jmeter用語#q9b692ef]]を追加する。
---以下の計算式を参考にして、スレッド遅延時間を設定する。
3,600秒
──────────────────── (秒/ページ) - 目標レスポンスタイム(秒/ページ) = スレッド遅延時間(秒/ページ)
x(シナリオ実行回数/時) * yページ/シナリオ
---例えば、10ページのシナリオを10回実行する場合の目標レスポンスが3秒の場合
3,600秒
──────────── (秒/ページ) - 3(秒/ページ)
10 * 10 (ページ/時)
= 3,600/100(秒/ページ) - 3(秒/ページ)
= 36(秒/ページ) - 3(秒/ページ)= 33(秒/ページ)
---[[定数タイマ>Jmeter用語#q9b692ef]] : 33(秒/ページ)
--[[定数スループット・タイマ>Jmeter用語#q9b692ef]]
---スレッドグループやコントローラーなどのシナリオ以下に[[定数スループット・タイマ>Jmeter用語#q9b692ef]]を追加する。
---以下の計算式を参考にして、1仮想ユーザ中のターゲットスループット(サンプル数/分)を設定する。
サンプル数/シナリオ (シナリオ実行回数/時)
──────────── * ──────────── = 1仮想ユーザ中のターゲットスループット(サンプル数/分)
1仮想ユーザ 60分
---例えば、10サンプルのシナリオを10回実行する場合の目標レスポンスが3秒の場合
10サンプル/シナリオ 10シナリオ/時
──────────── * ────────
1仮想ユーザ 60分
100(サンプル/時)
= ───────── = 100/60(サンプル/分) = 1.666(サンプル/分)
1仮想 * 60分
---[[定数スループット・タイマ>Jmeter用語#q9b692ef]] : 1.666(サンプル/分)
*手順 [#af7a6971]
**[[Jmeterのインストール]] [#ode3cef9]
**Jmeterの起動 [#ga2d7236]
以下に注意して、jmeter.batを起動する。
***Java関係のパラメタ設定 [#l52838b5]
必要に応じて、jmeter.batに、[[Java関係のパラメタ設定>Jmeterのインストール#c980883f]]を行う。
***管理者実行 [#pe450ead]
jmeter.batを右クリックして、「管理者として実行」を選択する。
***プロキシ設定 [#na76e4a3]
必要に応じて、jmeter.batに、[[プロキシ設定>#edd4e9fd]]のコマンドライン引数を指定する。
***言語の選択 [#v0b85061]
必要に応じて「オプション → 言語の選択 → 日本」を設定。
**初期設定 [#h4c1274c]
***スレッドグループの追加 [#d666189d]
[[テスト計画に、スレッドグループを追加>Jmeter用語#rd4bf7fa]]。
***[[HTTPリクエスト初期値設定>#w1b1fffd]] [#qf6c402e]
-ここでは、スレッドグループ以下に当該「設定エレメント」を追加する。
-最低限、Webサーバ(サーバ名またはIP、ポート)項目の設定を行っておく。
***[[HTTP認証の有効化>#x82cfa0e]] [#a169b960]
-HTTP認証がある場合があるので、有効化しておく。
-なお、ここでは、スレッドグループ以下に当該「設定エレメント」を追加する。
***[[Cookieの有効化>#y2dda4a3]] [#y3851871]
-大概のWebアプリには、以下が使用されているので有効化しておく。
--Session Cookie
--Cookie認証Ticket
-なお、ここでは、スレッドグループ以下に当該「設定エレメント」を追加する。
***[[Cacheの有効化>#i8414f68]] [#w5dbee82]
-大概のWebサイトは静的コンテンツをキャシュ可能にしているので有効化しておく。
-なお、ここでは、スレッドグループ以下に当該「設定エレメント」を追加する。
**ワークベンチ設定 [#bf5c39d9]
v4から表示されないので「テスト計画」側に追加する。
***保存の設定 [#j66d5736]
ワークベンチのSave Workbench チェック・ボックスをチェックにする。
***[[HTTPプロキシサーバ(Test Script Recorder)>Jmeter用語#e9c7b928]] [#w59b7fe9]
負荷テストのワークロード(電文)のキャプチャを行う。
-追加~
ワークベンチに、Jmeterの「[[HTTPプロキシサーバ(Test Script Recorder)>Jmeter用語#e9c7b928]]」機能を追加する。
-設定
--ポート番号は既定で「8888」になっているので、必要に応じて変更する。
--Request Filteringタブ~
「挿入するパターン」に[[記録対象となるURLを正規表現で追加>Jmeterの正規表現#m0538af2]]する。
--Test Plan Creationタブ > Test plan contents
---記録先を指定するため、~
[対象となるコントローラー]ドロップダウンリストから「テスト計画 > スレッドグループ名」を選択する。
---また、ページ単位でリクエストをまとめて記録するようにするため、~
(Simple Controller以下に、[[HTTPリクエストのサンプラー>#v288a329]]が並ぶようになる)~
[グループにする]ドロップダウンリストから「新規コントローラーへ各グループを置く」を選択する。
--リスナーの追加
---プロキシサーバー機能が記録したワークロードを確認するためにリスナーを追加する。
---HTTPプロキシサーバ(Test Script Recorder)に、[[「結果をツリーで表示」リスナー>Jmeter用語#h6cb67cf]]を追加する。
---HTTPプロキシサーバ(Test Script Recorder)に、[[「結果をツリーで表示」リスナー>Jmeter用語#ke3512f6]]を追加する。
-開始
--設定画面中にある開始ボタン ( [▶] ) を押下する。
--HTTPプロキシサーバ(Test Script Recorder)が開始したかどうかは「netstat -a」で確認できる。
**Webアプリの電文を記録 [#fb53f302]
-ココまで来たら、一度、テスト計画(テスト計画-nnnnnn.jmx)を保存しておく。
-なお、この*.jmxファイルは、backupフォルダに10世代文自動的に保持される。
-なお、この*.jmxファイルは、backupフォルダに10世代分、自動的に保持される。
***ブラウザの設定 [#h21bcbcd]
-プロキシ設定で[[Jmeterプロキシ>#w59b7fe9]]を設定する。
-閲覧履歴(キャッシュ)を削除しておく。
-その他、必要に応じて、各種ブラウザ設定を~
サイトユーザのメジャー設定に合わせて変更しておく。
***[[HTTPプロキシサーバ(Test Script Recorder)>#w59b7fe9]]の開始 [#q4e8e3d3]
[[HTTPプロキシサーバ(Test Script Recorder)>#w59b7fe9]]を開始しておく。
***ブラウザを操作してワークロードを記録 [#obe10219]
-ブラウザを操作してワークロードを記録する。
-記録の度に、Simple Controller以下に、[[HTTPリクエストのサンプラー>#v288a329]]が追加されていく。
-このため、[[「結果をツリーで表示」リスナー>Jmeter用語#h6cb67cf]]で都度 電文を確認しつつ、以下を行う。
-このため、[[「結果をツリーで表示」リスナー>Jmeter用語#ke3512f6]]で都度 電文を確認しつつ、以下を行う。
--不要な[[HTTPリクエストのサンプラー>#v288a329]]を削除。
--必要な[[HTTPリクエストのサンプラー>#v288a329]]の階層構造の整理。
--Simple Controller、[[HTTPリクエストのサンプラー>#v288a329]]のリネーム。
-以下は、当該PukiWikiのページの新規作成と編集(削除)の操作をスクリプト化した例である。
--PukiWikiの仕組みを知らなかったため、ソレを理解しつつ、スクリプトの整理を行った。
--このページは基本認証で守られているため、部外者は、新規作成と編集(削除)できません。
--また、実際に、このページに負荷テスト・ツールを使用して負荷をかけないで下さい。
#ref(script.png,left,nowrap,採取したワークロードを再現するスクリプト)
***[[HTTPプロキシサーバ(Test Script Recorder)>#w59b7fe9]]の停止 [#b047a744]
-[[HTTPプロキシサーバ(Test Script Recorder)>#w59b7fe9]]を停止、
-再び、テスト計画を保存しておく(テスト計画-nnnnnn.jmx)。
***ブラウザの設定を元に戻す [#s0f96990]
[[先程のブラウザ設定>#h21bcbcd]]を元に戻しておく。
**スクリプトのデバッグ・検証と修正 [#y811a01c]
-必要に応じて「スクリプトのデバッグ・検証と修正」を実施する。
--[[スクリプトのデバッグ・検証>#d6fa2a67]]
--[[スクリプトの修正>#a0d80ce1]]
---[[可変値の追跡>#ue27be32]]
---[[入力値にテストデータを組込む>#a78bc4a1]]
---[[クライアントのCookie操作の再現>#k1b5278d]]
-完了したら、[[機能テスト>#k6dd259e]]・[[負荷テスト>#pef9e793]]を実施できる。
***機能テスト [#k6dd259e]
1多重で、機能テストを行う。
***負荷テスト [#pef9e793]
-[[n多重で、負荷テストを行う。その際の各種設定を行う。>#i7a16b4f]]。
-GUIの利用
--GUIは電文の記録時やスクリプト修正時に使用し、負荷テスト実行時には使用しない。
--負荷テストの際はGUIで起動をしない。[[CUI(non-GUIモード)で起動>#r4107134]]する。
-レポーティング
--スレッドグループ以下に[[「結果を表示で表示」リスナー>Jmeter用語#h6cb67cf]]を追加する。
-大規模なテストを行う場合、必要に応じて、~
複数のクライアントを準備して、コントローラーから複数のエージェントを制御できる。
*スクリプトのデバッグ・検証 [#d6fa2a67]
スクリプト修正には、HTTPとアプリケーションの知識が必要になる。
スクリプトのデバッグ・検証と修正には、~
HTTPとアプリケーションの知識が必要になる。
**デバッグ実行 [#hf262d7b]
再生ボタンを押して、デバッグ実行してみる。
#ref(debug1.png,left,nowrap,スクリプトのデバッグ実行1)
**デバッグ [#p9714be2]
正常に動作しない場合、以下の方法でデバッグする。
***[[「結果をツリーで表示」リスナー>Jmeter用語#h6cb67cf]]の追加 [#d4738f87]
[[「結果をツリーで表示」リスナー>Jmeter用語#h6cb67cf]]を使用してデバッグする。
-スレッドグループ以下に[[「結果をツリーで表示」リスナー>Jmeter用語#h6cb67cf]]を追加する。
-再度デバッグ実行し、[[「結果をツリーで表示」リスナー>Jmeter用語#h6cb67cf]]で、電文を確認する。
***[[「結果を表で表示」リスナー>Jmeter用語#ke3512f6]]の追加 [#hccc76e9]
[[「結果を表で表示」リスナー>Jmeter用語#ke3512f6]]を使用してデバッグする。
-スレッドグループ以下に[[「結果を表で表示」リスナー>Jmeter用語#ke3512f6]]を追加する。
-再度デバッグ実行し、[[「結果を表で表示」リスナー>Jmeter用語#ke3512f6]]で、デバッグ実行を確認する。
***[[「結果をツリーで表示」リスナー>Jmeter用語#ke3512f6]]の追加 [#d4738f87]
[[「結果をツリーで表示」リスナー>Jmeter用語#ke3512f6]]を使用してデバッグする。
-スレッドグループ以下に[[「結果をツリーで表示」リスナー>Jmeter用語#ke3512f6]]を追加する。
-再度デバッグ実行し、[[「結果をツリーで表示」リスナー>Jmeter用語#ke3512f6]]で、デバッグ実行を確認する。
***[[「アサーション(Response Assertion)」アサーション>Jmeter用語#q21233c4]]の追加 [#w74ed842]
[[「アサーション(Response Assertion)」アサーション>Jmeter用語#q21233c4]]を使用してデバッグする。
-スレッドグループ以下に[[「アサーション(Response Assertion)」アサーション>Jmeter用語#q21233c4]]を追加する。
--「400 Bad Request」~
--400 Bad Requestを検出する。~
応答コード、一致する、400
--「500 Internal Server Error」~
--500 Internal Server Errorを検出する。~
応答コード、一致する、500
--カスタムのエラー画面の場合~
--カスタムのエラー画面を検出する。~
テキストのレスポンス、含む、「開発用エラー画面」(等、任意の文字列)
--必要であれば、
---スレッドグループ以下に[[「アサーション結果」リスナー>Jmeter用語#h6cb67cf]]を追加する。
---[[「アサーション結果」リスナー>Jmeter用語#h6cb67cf]]で、「Successes」を選択する。
-スレッドグループ以下に[[「アサーション結果」リスナー>Jmeter用語#ke3512f6]]を追加する。
-[[「アサーション結果」リスナー>Jmeter用語#ke3512f6]]で、「Successes」を選択する。
-再度デバッグ実行し、[[「結果をツリーで表示」リスナー>Jmeter用語#ke3512f6]]でデバッグ実行を確認する。
--再度デバッグ実行し、下記リスナーで電文を確認する。
---[[「結果をツリーで表示」リスナー>Jmeter用語#h6cb67cf]]
---[[「アサーション結果」リスナー>Jmeter用語#h6cb67cf]]
***問題を発見した場合 [#r74d177c]
上記のデバッグで問題を発見した場合、下記の[[スクリプト修正>#a0d80ce1]]を行う。
*スクリプトの修正 [#a0d80ce1]
スクリプトのデバッグ・検証と修正には、~
HTTPとアプリケーションの知識が必要になる。
**可変値の追跡 [#ue27be32]
リクエスト → レスポンス → リクエストと持ち回る値を追跡し変数化する。
***抽出系の後処理を使用して可変値を追跡 [#re7c2573]
はじめに、
-[[「結果をツリーで表示」リスナー>Jmeter用語#h6cb67cf]]をチェックして、
-可変値でありそうな、[[digest値を追跡>Jmeterによる可変値の追跡]]する(正規表現でレスポンスから抽出)。
-[[「結果をツリーで表示」リスナー>Jmeter用語#ke3512f6]]をチェックして、
-可変値でありそうな、[[digest値を追跡>Jmeterによる可変値の追跡]]する([[正規表現]]でレスポンスから抽出)。
***追跡した可変値をリクエストに組込 [#paaabbc8]
次に、リクエストに「[[抽出系の後処理>Jmeterによる可変値の追跡]]」に準拠した「参照名」を使用する。
***「可変値の追跡」後のスクリプト動作確認 [#bd79821c]
CSVの前に、入力値を編集してみて、スクリプトが正常に動作するか確認する。
-ここでは、入力値の page と msg のパラメタを以下のように変更した。
--page="aaa" ---> page="bbb"
--msg="bbb" ---> msg="ccc"
-下記のように、
--digest値の追跡前は編集(削除)に失敗するが、
--digest値の追跡後は編集(削除)が成功することを確認できた。
#ref(debug2.png,left,nowrap,スクリプトのデバッグ実行2)
**入力値にテストデータを組込む [#a78bc4a1]
-入力値に、CSVファイルなどを使用してテストデータを組み込む。
-これにより、現実に近いシミュレーションやデータ競合の回避が可能になる。
***追加の可変値の追跡 [#wc42f912]
[[同様にして>#ue27be32]]、
-入力値(page と msg)に関連するパラメタを、
--可変値として追跡し(正規表現でリクエストから抽出)、
--可変値として追跡し([[正規表現]]でリクエストから抽出)、
--追跡した可変値をリクエストに組込に組み込む。
-「可変値の追跡」後のスクリプトの動作確認を行う。
#ref(debug3.png,left,nowrap,スクリプトのデバッグ実行3)
***入力値にCSVファイルからの入力を適用 [#n90e7aca]
-スレッドグループ以下に、[[「設定エレメント」の「CSV Data Set Config」>Jmeter用語#z1e392de]]を追加する。
-「CSV Data Set Config」には以下の設定を行い利用する。
--Filename~
CSVファイルのファイルパス
--File Encoding~
CSVファイルのエンコーディング(既定値はJavaVMの既定値)
--Variable Names~
カンマ区切りの変数名(CSVのヘッダ行と同じ)
--Ignore first line~
CSVファイルにヘッダ行がある場合、trueに設定しておく。
--Delimiter~
CSVファイルの区切り文字
--Allow quoted data?~
改行を含むデータ等は、""で囲んだりする。
--Recycle on EOF?~
CSVファイルの終わりに到達した場合、先頭から再利用する。
--Stop thread on EOF?~
CSVファイルの終わりに到達した場合、仮想ユーザーを停止する。
--Sharing mode~
CSVファイルの共有モード
---All threads~
全てのスレッドで共有
---Current thread group~
スレッドグループで共有
---Current thread~
個々のスレッドで利用(共有しない)
---Identifier~
同じ識別子を共有するスレッドで共有
-「CSV Data Set Config」の設定例
--設定例
#ref(CsvFile.png,left,nowrap,CSV Data Set Config)
--CSVファイル(csv.csv)
csv_page,csv_msg
aaa,bbb
bbb,ccc
ccc,ddd
ddd,eee
eee,fff
fff,ggg
***CSVの変数をリクエストに組込 [#k0a6ba8e]
-Variable Namesに指定した変数は、~
${変数名}としてリクエストに組み込み、使用できる。
-上記の例では、
--pageのユーザ入力:${csv_page}
--msgのユーザ入力:${csv_msg}
>と設定して、ユーザ入力をCSV入力に切り替える。
***処理をループさせる [#a230d40a]
-全体をループさせる場合、~
スレッドグループの設定でループさせることができる。
-部分的にループさせる場合、
--[[ループコントローラー>Jmeter用語#k1b91458]]にループ回数を指定して部分的にループさせることができる。
--ログイン/ログアウト処理を一度だけ行い、内部をループさせる場合などに使用する。
***CSV変数の組込後のスクリプト動作確認 [#m20b723a]
CSVの変数をリクエストに組み込んだ後のスクリプトの動作確認を行う。
#ref(result.png,left,nowrap,結果)
**クライアントのCookie操作の再現 [#k1b5278d]
[[前処理を行うBeanShell PreProcessor>Jmeter用語#u819724e]]にCookie操作の処理を記述する。
*機能テスト、負荷テスト [#z74a0ab7]
**機能テスト [#k6dd259e]
1多重で、機能テストを行う。
**負荷テスト [#pef9e793]
n多重で、負荷テストを行う。
***[[各種設定>#i7a16b4f]] [#acd84593]
各種設定を行う。
-[[多重度(仮想ユーザ数)>#k62bc337]]
-[[スループットの調整>#w630dfb3]]
***GUIの利用 [#gf985b4f]
--GUIは電文の記録時やスクリプト修正時に使用し、負荷テスト実行時には使用しない。
--負荷テストの際はGUIで起動をしない。[[CUI(non-GUI)モードで起動>#r4107134]]する。
***大規模なテストを行う場合 [#w5415ee2]
必要に応じて、複数のクライアントを準備して、~
コントローラーから複数のエージェントを制御できる。
***[[結果のレポーティング>Jmeterの結果のレポーティング]] [#y7838643]
負荷テストの結果のレポーティング用のリスナーを設定する
*注意事項 [#gc15e292]
**HTTPS対応 [#kf3ada0f]
キャプチャの際、ブラウザに[[Jmeterプロキシ>#w59b7fe9]]の[[証明書]]をインストールする。
-HTTSを使用する場合、[[Jmeterプロキシ>#w59b7fe9]]の[[証明書]]を、~
クライアント端末の「信頼されたルート証明機関」にインストールする。
-[[Jmeterプロキシ>#w59b7fe9]]の[[証明書]]は、~
「HTTPプロキシサーバ(Test Script Recorder)」の開始後に、~
「Jmeterを解凍したフォルダ\bin\」以下に生成される。
**リダイレクト [#i51d7622]
***自動リダイレクト [#b81b0604]
-利用中の http プロトコルハンドラがリダイレクトに自動追従するようにする。
-自動リダイレクトの応答は、Jmeterのサンプルとして追加されない。
※ 自動追従したリクエストにはクッキーが送信されないので注意。
***リダイレクトに対応 [#qa3e7d60]
-「[[自動リダイレクト>#b81b0604]]」が無効の場合、~
応答がリダイレクトかどうかを チェックし、そうであればそれに従う。
-この場合のリダイレクトの応答は、Jmeterのサンプルとして追加される。
*参考 [#c667a15a]
-JMeterメモ - かまたま日記3~
http://kamatama41.hatenablog.com/entry/20140117/1389968656
**株式会社ケイズ・ソフトウェア [#l5224e5b]
JMeter の利用方法
-(1) Ramp-up、スレッド数、ループ回数の誤用~
https://keis-software.com/2013/09/02/jmeter-%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%951-ramp%EF%BC%8Dup%E3%80%81%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E6%95%B0%E3%80%81%E3%83%AB%E3%83%BC%E3%83%97%E5%9B%9E%E6%95%B0%E3%81%AE%E8%AA%A4/
-(2) テスト結果の確認方法~
https://keis-software.com/2013/09/12/jmeter-%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%952-%E3%83%86%E3%82%B9%E3%83%88%E7%B5%90%E6%9E%9C%E3%81%AE%E7%A2%BA%E8%AA%8D%E6%96%B9%E6%B3%95/
-(3) 負荷テスト中に何を監視するのか?~
https://keis-software.com/2013/09/27/%E2%96%A0-jmeter-%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%953-%E8%B2%A0%E8%8D%B7%E3%83%86%E3%82%B9%E3%83%88%E4%B8%AD%E3%81%AB%E4%BD%95%E3%82%92%E7%9B%A3%E8%A6%96%E3%81%99%E3%82%8B%E3%81%AE/
-(4) タイマによるスループットの制限方法~
https://keis-software.com/2013/11/11/jmeter-%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%954-%E3%82%BF%E3%82%A4%E3%83%9E%E3%81%AB%E3%82%88%E3%82%8B%E3%82%B9%E3%83%AB%E3%83%BC%E3%83%97%E3%83%83%E3%83%88%E3%81%AE%E5%88%B6/
----
Tags: [[:テスト]], [[:ツール類]]