- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>Apache Jmeter]]
* 目次 [#hdfc82ff]
#contents
*概要 [#a340a542]
Jmeterで使用される用語を拾ってまとめた。
*テンプレート [#m630befd]
-Visual Studio的に言うとプロジェクト・テンプレート的なもの。
-これを開いて、負荷テストを新規作成する。
**テンプレートの種類 [#g506f215]
以下のようなテンプレートが存在する。
***Web サーバ [#m116aa6a]
-build-web-test-plan.jmx~
比較的単純な負荷テスト
-build-adv-web-test-plan.jmx~
ログイン処理等を含む、やや複雑な負荷テスト
-build-webservice-test-plan.jmx~
SOAP を使った 負荷テスト
***FTP サーバ [#s9bd4dee]
-build-ftp-test-plan.jmx~
比較的単純な負荷テスト
***LDAP サーバ [#q3540b16]
-build-ldap-ext-test-plan.jmx~
比較的単純な負荷テスト
-build-ldap-test-plan.jmx~
ループコントローラ利用した負荷テスト
***ストレージ [#bd23c4da]
-jdbc.jmx~
PostgreSQL に対する JDBC 経由の負荷テスト
-mongodb.jmx~
JSR233を使った mongodb に対する負荷テスト
***その他 [#z9daa473]
-recording.jmx~
記録コントローラ(ユーザの操作を記録してテスト計画を自動作成する) 利用時テンプレート
-BeanShellSampler.jmx~
Jmeter用の軽量スクリプト言語(BeanShell)でテストを書いて直接実行。
**プロパティ [#q5d94758]
以下の設定が可能。
***グローバル定義画面 [#o3348332]
[[テスト計画>#d2cb6164]]のグローバル定義
***スレッドグループ定義画面 [#ib74057e]
[[テスト計画のスレッドグループ>#rd4bf7fa]]
*テスト計画 [#d2cb6164]
-負荷テストの実行計画を設定するもの。
-以下のプロパティ設定や、コンポーネント追加ができる。
**Threads(Users) [#rd4bf7fa]
スレッドグループ(仮想ユーザ群)
以下の3種類のThreads(Users)がある。
-スレッドグループ~
通常のスレッドグループ
-setUp Thread Group~
テスト前のアクションを実行するスレッドグループ。
--通常のスレッドグループとほぼ同じ。
--通常のスレッドグループの実行前に実行される。
-tearDown Thread Group~
テスト後のアクションを実行するスレッドグループ。
--通常のスレッドグループとほぼ同じ。
--通常のスレッドグループの実行後に実行される。
***プロパティ [#s4c36420]
以下のプロパティを設定。
-名前~
スレッドグループの名前(IDではない)。
-コメント~
スレッドグループの説明
-スレッド数~
起動するスレッド数 ≒ 仮想ユーザ数
-Delay Thread creation until needed~
スレッドが必要になったタイミングで生成するオプション。
-ループ回数
--テスト・シナリオの実行回数
--[無限ループ]にチェックを入れると無限にテスト
-Ramp-up期間(秒で指定)~
1秒辺りの同時アクセス仮想ユーザー数を決定するパラメタ。
1秒辺りの同時アクセス仮想ユーザー数 = (仮想ユーザ数 * ループ回数) / Ramp-up期間(秒)
-スケジューラ
--開始時刻~
スケジューラが有効の場合、この時刻が来るまでテストの実施を待つ。~
ただし後述の起動遅延の指定があれば、そちらが優先される。
--終了時刻~
スケジューラが有効の場合、この時刻までテストが行われる。
--持続時間~
テストをこの時間だけ実行する
--起動遅延~
この秒数だけテストの実行を遅延する
--終了条件~
Jmeterのスレッドが終了する契機が、~
以下の終了条件のうち、いずれか達成の早いものになる。~
条件チェックは各サンプル間でのみ行われる。
---指定のループ回数に達した時
---終了時刻に達した時
---持続時間に達した時
-[[サンプラー>#f6416b07]]エラー後のアクション~
サーバがエラーを返してきた場合など、~
リクエストが何らかの原因でエラーになった際どうするかを選択する。
--続行~
エラーを無視してテストを続行
--Start Next Loop~
エラーを無視して次のループの最初から続行
--スレッド停止~
現在のスレッドを終了
--テスト停止~
いずれかのサンプルの終了をもってテスト全体が停止
--Stop Test Now~
即座にテスト全体を停止。
***[[サンプラー>#q4e53b30]] [#f6416b07]
[[サンプラー>#q4e53b30]]を追加する場合、~
スレッドグループで右クリック > 追加 > サンプラー > XXXXリクエストを選択。
***[[ロジックコントローラ>#k1b91458]] [#d9d488a1]
**Test Fragment [#f77e57b5]
**設定エレメント [#z1e392de]
***共通 [#e34d4c29]
|#|設定エレメント名|説明|h
|1|TCP サンプラー設定|TCP サンプラーのデフォルト設定|
|2|ログイン設定エレメント|ユーザ名とパスワードの設定|
|3|DNS Cache Manager|DNSキャッシュ機能を追加|
***プロトコル [#r2ee8f16]
-HTTP
|#|設定エレメント名|説明|h
|1|HTTP 認証マネージャ|認証機能を追加|
|2|HTTP クッキーマネージャ|クッキーを扱う機能を追加|
|3|HTTP Cache Manager|キャッシュ機能を追加|
|3|HTTP Cache Manager|HTTPキャッシュ機能を追加|
|4|HTTP ヘッダマネージャ|ヘッダを追加または上書き|
|5|HTTP リクエスト初期値設定|HTTP 接続テスト時のデフォルト値を設定|
-その他、既定値
|#|設定エレメント名|説明|h
|1|FTP リクエスト初期値設定|FTP 接続テスト時のデフォルト値を設定|
|2|LDAP リクエスト初期値設定|LDAP 接続テスト時のデフォルト値を設定|
|3|LDAP Extended Request Defaults|LDAP拡張リクエストのデフォルト値を設定|
|4|Java リクエスト初期値設定|Java 接続テスト時のデフォルト値を設定|
|1|FTPリクエスト初期値設定|FTPリクエストのデフォルト値を設定|
|2|LDAPリクエスト初期値設定|LDAPリクエストのデフォルト値を設定|
|3|LDAP拡張リクエスト初期値設定|LDAP拡張リクエストのデフォルト値を設定|
|4|Javaリクエスト初期値設定|Javaリクエストのデフォルト値を設定|
-接続設定
|#|設定エレメント名|説明|h
|1|JDBC Connection Configuration|JDBC の接続設定|
|2|MongoDB Source Config|MongoDB Script サンプラーのための接続設定を行う|
|2|MongoDB Source Config (DEPRECATED)|MongoDB Script サンプラーのための接続設定を行う|
***データ [#z2b8eb4f]
スレッドグループのサンプラーの中から参照可能なデータ
|#|設定エレメント名|説明|h
|1|カウンタ|カウンタを生成(サンプラー単位)|
|1|Counter|カウンタを生成(サンプラー単位)|
|2|Random Variable|ランダム文字列を生成|
|3|ユーザ定義変数|任意の変数を定義|
|4|Keystore Configuration|キーストアを設定|
|5|CSV Data Set Config|変数値を CSV ファイルで与える|
|6|シンプル設定エレメント|任意の値を追加・上書き|
|3|User Defined Variables|任意の初期変数セットを定義|
|4|CSV Data Set Config|変数値を CSV ファイルで与える|
***その他 [#rd7163c5]
|#|設定エレメント名|説明|h
|1|Keystore Configuration|Java Key Store([[証明書]]ストア)を設定|
|2|Simple Config Element|任意の値を追加・上書き(開発者向け)|
**タイマ [#q9b692ef]
***スクリプト系 [#tb2f91d9]
|#|タイマ名|説明|h
|1|BeanShellタイマ|BeanShell(JSR-274)を使ったタイマ|
|2|BSFタイマ|BSFを使ったタイマ|
|3|JSR223タイマ|JSR-223を使ったタイマ|
|1|BeanShell Timer|BeanShell(JSR-274)を使ったタイマ|
|2|BSF Timer (DEPRECATED)|BSFを使ったタイマ|
|3|JSR223 Timer|JSR-223を使ったタイマ|
|4|Synchronizing Timer|逆セマフォ的な動きをするタイマ(瞬間的な高負荷を与える)。|
***定数系 [#n935b31a]
|#|タイマ名|説明|h
|1|定数タイマ|各スレッドリクエストのたびに指定した秒数分遅延する。|
|2|定数スループットタイマ|トータルのスループットが一定値に近づくように停止時間を調整する。|
|1|Constant Timer|各スレッドリクエストのたびに指定した秒数分遅延する。|
|2|Constant Throughput Timer|トータルのスループットが一定値に近づくように停止時間を調整する。|
***乱数・分布系 [#wbe1cf73]
***乱数系 [#wbe1cf73]
|#|タイマ名|説明|h
|1|一様乱数タイマ|各スレッドリクエストのたびにランダム時間停止し、遅延時間の総計は乱数値+オフセット値の合計|
|1|Uniform Random Timer|各スレッドリクエストのたびにランダム時間停止し、遅延時間の総計は乱数値+オフセット値の合計|
|2|Poisson Random Timer|各スレッドリクエストのたびにランダム時間停止し、停止時間能総計はポアソン分布の値になるタイマ|
|3|ガウス乱数タイマ|各スレッドリクエストのたびにランダム時間停止し、遅延時間の総計はガウス分布に従うタイマ。|
|3|Gaussian Random Timer|各スレッドリクエストのたびにランダム時間停止し、遅延時間の総計はガウス分布に従うタイマ。|
**前処理 [#fd17d0ce]
***スクリプト系 [#u819724e]
|#|プリプロセッサ名|説明|h
|1|BeanShell PreProcessor|BeanShellの前処理を実行|
|2|BSF PreProcessor|BSFの前処理を実行|
|2|BSF PreProcessor (DEPRECATED)|BSFの前処理を実行|
|3|JSR223 PreProcessor|JSR-223の前処理を実行|
|4|JDBC PreProcessor|SQLの前処理を実行|
***抽出系 [#z6bd4184]
|#|プリプロセッサ名|説明|h
|1|HTML リンクパーサ|応答を解析してリンクとフォームを抽出|
|1|HTML Link Parser|応答を解析してリンクとフォームを抽出|
|2|RegEx User Parameters|応答を正規表現を使って解析してパラメタを抽出|
***その他 [#w6d7e84c]
|#|プリプロセッサ名|説明|h
|1|ユーザーパラメータ|個別のスレッドに対してユーザ変数を設定|
|2|HTTP URL-Rewriting 修飾子|URL 書き換えを行うWeb サービスでセッションの引き回す|
|1|Sample Timeout|タイマータスクが完了するまでに時間がかかりすぎると、&br;サンプルを中断するようにタイマータスクをスケジュールする。|
|2|User Parameters|個別のスレッドに対してユーザ変数を設定|
|3|HTTP URL Re-writing Modifier|URL 書き換えを行うWeb サービスでセッションの引き回す|
**後処理 [#p2b49fc8]
***スクリプト系 [#zd50e41d]
|#|ポストプロセッサ名|説明|h
|1|BeanShell PostProcessor|BeanShellの後処理を実行|
|1|BSF PostProcessor|BSFの後処理を実行|
|1|JSR223 PostProcessor|JSR-223の後処理を実行|
|2|BSF PostProcessor (DEPRECATED)|BSFの後処理を実行|
|3|JSR223 PostProcessor|JSR-223の後処理を実行|
|4|JDBC PostProcessor|SQLの後処理を実行|
***抽出系 [#j6af55f2]
|#|ポストプロセッサ名|説明|h
|1|正規表現抽出|応答をPerl 互換正規表現を使って解析してパラメタを抽出|
|1|Regular Expression Extractor|応答をPerl 互換正規表現を使って解析してパラメタを抽出|
|2|CSS/JQuery Extractor|応答をCSS/JQuery ライクなセレクタの文法を使って解析してパラメタを抽出|
|3|XPath Extractor|応答をXPath クエリー言語を使って解析してパラメタを抽出|
|4|JSON Extractor|応答をJSONをJSON-PATH syntax使って解析してパラメタを抽出|
***その他 [#d9e3a42f]
|#|ポストプロセッサ名|説明|h
|1|Debug PostProcessor|各プロパティからサブサンプルを生成する。|
|2|アクションハンドラの終了状態|サンプラーが失敗したら、スレッドまたはテスト全体を終了する。|
|2|Result Status Action Handler|サンプラーが失敗したら、スレッドまたはテスト全体を終了する。|
**アサーション [#q21233c4]
成立条件チェック
***スクリプト系 [#xf496daa]
|#|アサーション名|説明|h
|1|BeanShell Assertion|BeanShellでアサーションチェックを実行|
|2|BSF Assertion|BSFでアサーションチェックを実行|
|2|BSF Assertion (DEPRECATED)|BSFでアサーションチェックを実行|
|3|JSR223 Assertion|JSR-223でアサーションチェックを実行|
***検証系 [#a902fd86]
|#|アサーション名|説明|h
|1|Response Assertion|Perl 互換の正規表現かプレインテキストで比較チェック|
|2|Compare Assertion|応答の比較チェック(大量のリソースを消費)|
|3|HTML Assertion|JTidyを使って応答のHTML文法をチェック|
|4|XML Assertion|応答のXML文法をチェック|
|5|XML Schema Assertion|応答のDTDなどのXML Schemaへの準拠をチェック|
|6|XPath Assertion|well-formed や DTDのオプションを持つかチェック、もしくは JTidy を通して XPathのチェック|
|7|MD5Hex Assertion|JTidyを使って応答のMD5 ハッシュをチェック|
|8|SMIME Assertion|Mail Readerサンプラーの応答の署名をチェック|
***その他 [#p90e6f63]
|#|アサーション名|説明|h
|1|Duration Assertion|応答を与えられた時間内に受け取ったかどうかをチェック|
|2|Size Assertion|応答のサイズ(バイト数)が正しいか(等しい、より大きい、より小さい、等しくない)をチェック|
**[[リスナー>#h6cb67cf]] [#aa2d0944]
**リスナー [#h6cb67cf]
結果のレポーティング
***スクリプト系 [#b0e4ad50]
|#|リスナー名|説明|h
|1|BeanShell Listener|サンプルの結果に対して BeanShellを適用する。|
|2|BSF Listener (DEPRECATED)|サンプルの結果に対して BSFを適用する。|
|3|JSR223 Listener|サンプルの結果に対して JSR-223 を適用する。|
***レポート・グラフ系 [#g2827edc]
-Sample Result Save Configuration
-Graph Results
-View Results Tree
-Aggregate Report
-View Results in Table
-Aggregate Graph
-Response Time Graph
-Summary Report
-Generate Summary Results
-Backend Listener
***アサーション結果系 [#r670aa4c]
|#|リスナー名|説明|h
|1|Assertion Results|Assertionエレメントの結果を表示(スクリプトのデバッグ時に利用)|
|2|Comparison Assertion Visualizer|Compare Assertionエレメントの結果を表示|
***その他 [#f5de9066]
|#|リスナー名|説明|h
|1|Simple Data Writer|結果をファイルに記録(GUIには表示されない)|
|2|Save Responses to a file|テストの作成のために結果をファイルに記録|
|3|Mailer Visualizer|失敗応答を受信するとメールを送る|
*サンプラー [#q4e53b30]
-サーバなどのテスト対象に対し、何らかの指示やリクエストを行うためのコンポーネント
-サンプラーにより負荷テスト結果が収集され、 この結果は[[リスナー>#h6cb67cf]]により参照できる。
**サンプラーの種類 [#e73200e4]
様々なサンプラーがある。
-Webサーバのテストであれば、「[[HTTPリクエスト>#j13fc70c]]」を選択する。
-Webサーバのテストであれば、「[[HTTPリクエスト>#v288a329]]」を選択する。
-XXXサーバのテストであれば、「XXXXリクエスト」を選択する。
**[[HTTPリクエスト>#j13fc70c]] [#v288a329]
[[HTTPリクエスト>#j13fc70c]]の場合
***スクリプト系 [#b9e8bc07]
|#|サンプラー名|説明|h
|1|BeanShell Sampler|BeanShellスクリプト言語を使ってサンプラーを書く|
|2|BSF Sampler (DEPRECATED)|BSFスクリプト言語を使ってサンプラーを書く|
|3|JSR223 Sampler|JSR-223スクリプト言語を使ってサンプラーを書く|
|4|Java Request|org.apache.jmeter.protocol.java.sampler.JavaSamplerClientを使用してリクエストを送りレスポンスを待つ。|
|5|JUnit Request|JUnitを使用してリクエストを送りレスポンスを待つ。|
***プロトコル系 [#h803adc2]
-セッション層
|#|サンプラー名|説明|h
|1|TCP サンプラー|サーバに対してTCP リクエストを送りレスポンスを待つ。|
-プレゼンテーション層
|#|サンプラー名|説明|h
|1|[[HTTPリクエスト>#v288a329]]|Webサーバに対してHTTP(s)リクエストを送りレスポンスを待つ。|
|2|FTPリクエスト|FTPサーバに対してファイルの取り出し/アップロードのリクエストを送る。|
|3|LDAPリクエスト|4種類のLDAPリクエストを送る。 |
|4|LDAP拡張リクエスト|8種類のLDAPリクエストを送る。&br;より実際のLDAPセッションに近いシミュレーションが行える。|
|5|JDBC Request|JDBCでデータベースに対してSQLを送りレスポンスを待つ。|
|6|MongoDB Script (DEPRECATED)|MongoDBに対してMongoDB Scriptを送りレスポンスを待つ。|
-メール
|#|サンプラー名|説明|h
|1|SMTP サンプラー|SMTP / SMTPSプロトコルを使用してメールメッセージを送信。|
|2|Mail Readerサンプラー|POP3(S)/IMAP(S)プロトコルを使用してメールメッセージを受信(オプションで削除)。|
-JMS(Java Message Service)
|#|サンプラー名|説明|h
|1|JMS Publisher|指定された宛先(トピック/キュー)にメッセージを送信|
|2|JMS Subscriber|指定された宛先(トピック/キュー)からメッセージを受信|
|3|JMS_Point-to-Point|ポイントツーポイント接続(キュー)でメッセージを送受信|
***その他 [#x11e1fb4]
|#|サンプラー名|説明|h
|1|OS Process Sampler|OSコマンドを実行する。|
|2|Access Log Sampler|Webサーバーのアクセスログを読んで HTTP リクエストを生成。|
|3|Test Action|・・・|
**HTTPリクエスト [#v288a329]
サンプラーがHTTPリクエストの場合
***プロパティ [#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~
-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
---[[自動リダイレクト>JmeterによるWebアプリの負荷テスト#b81b0604]]
---[[リダイレクトに対応>JmeterによるWebアプリの負荷テスト#qa3e7d60]]
-Proxy Server
--サーバ名またはIP
--ポート番号
--ユーザー名
--パスワード
-Embedded Resources from HTML Files(画像, JavaScript, CSS等)
--全てのイメージとアプレットを繰り返しダウンロードする(HTMLファイルのみ)~
HTML ファイルをパースし、埋め込みリソースをGET。
--Use concurrent pool.~
同時並行コネクションプールを使う。
--Size:~
同時並行コネクションプールのサイズ
--URLs must match~
GETする埋め込みリソースのURLとしてマッチさせたいものを正規表現で指定。
-Source address(HTTPClient 実装における HTTP リクエストのみ)
--ソースアドレスの型~
ソースアドレスの値を区別するために型を選択する。
--ソースアドレスの値~
・・・
-オプションタスク
--モニタとして使用~
モニタ結果リスナーで使用する。
--Save response as MD5 Hash?
---応答が結果に格納されなくなる。
---代わりに、32 文字の MD5 ハッシュが格納される。
***HTTPリクエスト初期値設定 [#w1b1fffd]
-[[設定できる項目はHTTPリクエストと同じ>#w88f5be9]]。
-この画面で[[HTTPリクエストの共通パラメタ>#w88f5be9]]を設定できる。
-スレッドグループで右クリック > 追加 > 設定エレメント > HTTPリクエスト初期値設定を選択。
*ロジックコントローラー [#k1b91458]
ループや条件分岐など、 複雑な制御を行うためのコンポーネント
-ループや条件分岐など、 複雑な制御を行うためのコンポーネント
-サンプラー(または子コントローラ)を コントローラに追加できる。
*リスナー [#h6cb67cf]
結果のレポーティング
**制御構文系 [#j070c42d]
**モニタ結果リスナー [#o486cd47]
***選択 [#m39d824c]
|#|ロジックコントローラー名|説明|h
|1|If Controller|指定した条件が "true"の場合、子コントローラーを実行する。条件は JavaScript または変数表現で指定。|
|2|Switch Controller|スイッチの値に従って子コントローラーを実行する。|
***ループ [#q06af9b7]
|#|ロジックコントローラー名|説明|h
|1|Loop Controller|特定回数分、子コントローラーを実行する。|
|2|While Controller|Whileで、指定した条件が "false"になるまでループしながら子コントローラーを実行する。|
|3|ForEach Controller|ForEachで、変数の値を変えながらループして、子コントローラーを実行する。|
**その他 [#x72a653e]
-Simple Controller
-Once Only Controller
-Interleave Controller
-Random Controller
-Random Order Controller
-Throughput Controller
-Runtime Controller
-Module Controller
-Include Controller
-Transaction Controller
-Recording Controller
-Critical Section Controller
*スクリプト [#zbc023e3]
よくわかない。
よくわかないが、以下の3つがあるもよう。
**BeanShell(JSR-274) [#m2ecc7ee]
**Bean スクリプト・フレームワーク (BSF) [#l9e993cf]
**JSR-223 [#yb24cf7e]
*参考 [#h196b41b]
-Apache Jmeter入門~
https://net-newbie.com/jmeter/
-Apache JMeter - User's Manual: Component Reference~
http://jmeter.apache.org/usermanual/component_reference.html
----
Tags: [[:テスト]], [[:ツール類]]