「[[マイクロソフト系技術情報 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|HTTPキャッシュ機能を追加|
|4|HTTP ヘッダマネージャ|ヘッダを追加または上書き|
|5|HTTP リクエスト初期値設定|HTTP 接続テスト時のデフォルト値を設定|

-その他、既定値
|#|設定エレメント名|説明|h
|1|FTPリクエスト初期値設定|FTPリクエストのデフォルト値を設定|
|2|LDAPリクエスト初期値設定|LDAPリクエストのデフォルト値を設定|
|3|LDAP拡張リクエスト初期値設定|LDAP拡張リクエストのデフォルト値を設定|
|4|Javaリクエスト初期値設定|Javaリクエストのデフォルト値を設定|

-接続設定
|#|設定エレメント名|説明|h
|1|JDBC Connection Configuration|JDBC の接続設定|
|2|MongoDB Source Config (DEPRECATED)|MongoDB Script サンプラーのための接続設定を行う|

***データ [#z2b8eb4f]
スレッドグループのサンプラーの中から参照可能なデータ

|#|設定エレメント名|説明|h
|1|Counter|カウンタを生成(サンプラー単位)|
|2|Random Variable|ランダム文字列を生成|
|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 Timer|BeanShell(JSR-274)を使ったタイマ|
|2|BSF Timer (DEPRECATED)|BSFを使ったタイマ|
|3|JSR223 Timer|JSR-223を使ったタイマ|
|4|Synchronizing Timer|逆セマフォ的な動きをするタイマ(瞬間的な高負荷を与える)。|

***定数系 [#n935b31a]
|#|タイマ名|説明|h
|1|Constant Timer|各スレッドリクエストのたびに指定した秒数分遅延する。|
|2|Constant Throughput Timer|トータルのスループットが一定値に近づくように停止時間を調整する。|

***乱数系 [#wbe1cf73]

|#|タイマ名|説明|h
|1|Uniform Random Timer|各スレッドリクエストのたびにランダム時間停止し、遅延時間の総計は乱数値+オフセット値の合計|
|2|Poisson Random Timer|各スレッドリクエストのたびにランダム時間停止し、停止時間能総計はポアソン分布の値になるタイマ|
|3|Gaussian Random Timer|各スレッドリクエストのたびにランダム時間停止し、遅延時間の総計はガウス分布に従うタイマ。|

**前処理 [#fd17d0ce]

***スクリプト系 [#u819724e]

|#|プリプロセッサ名|説明|h
|1|BeanShell PreProcessor|BeanShellの前処理を実行|
|2|BSF PreProcessor (DEPRECATED)|BSFの前処理を実行|
|3|JSR223 PreProcessor|JSR-223の前処理を実行|
|4|JDBC PreProcessor|SQLの前処理を実行|

***抽出系 [#z6bd4184]

|#|プリプロセッサ名|説明|h
|1|HTML Link Parser|応答を解析してリンクとフォームを抽出|
|2|RegEx User Parameters|応答を正規表現を使って解析してパラメタを抽出|

***その他 [#w6d7e84c]

|#|プリプロセッサ名|説明|h
|1|Sample Timeout|タイマータスクが完了するまでに時間がかかりすぎると、&br;サンプルを中断するようにタイマータスクをスケジュールする。|
|2|User Parameters|個別のスレッドに対してユーザ変数を設定|
|3|HTTP URL Re-writing Modifier|URL 書き換えを行うWeb サービスでセッションの引き回す|

**後処理 [#p2b49fc8]

***スクリプト系 [#zd50e41d]

|#|ポストプロセッサ名|説明|h
|1|BeanShell PostProcessor|BeanShellの後処理を実行|
|2|BSF PostProcessor (DEPRECATED)|BSFの後処理を実行|
|3|JSR223 PostProcessor|JSR-223の後処理を実行|
|4|JDBC PostProcessor|SQLの後処理を実行|

***抽出系 [#j6af55f2]

|#|ポストプロセッサ名|説明|h
|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|Result Status Action Handler|サンプラーが失敗したら、スレッドまたはテスト全体を終了する。|

**アサーション [#q21233c4]
成立条件チェック

***スクリプト系 [#xf496daa]

|#|アサーション名|説明|h
|1|BeanShell Assertion|BeanShellでアサーションチェックを実行|
|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]
結果のレポーティング

***スクリプト系 [#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リクエスト>#v288a329]]」を選択する。
-XXXサーバのテストであれば、「XXXXリクエスト」を選択する。

***スクリプト系 [#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~
接続タイマー
--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]
-ループや条件分岐など、 複雑な制御を行うためのコンポーネント
-サンプラー(または子コントローラ)を コントローラに追加できる。

**制御構文系 [#j070c42d]

***選択 [#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: [[:テスト]], [[:ツール類]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS