「[[マイクロソフト系技術情報 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]]

*ワークベンチ [#e79d0c85]
-ワークベンチとは、作業領域のこと。
--リクエスト記録領域
--測定結果データ領域

-特定のテストエレメントは、ワークベンチでのみ使用できる。

**HTTPプロキシサーバ [#e9c7b928]
-HTTP(S) Test Script Recorder (旧 HTTP Proxy Server)
-電文をキャプチャしてワークロードをスクリプトとして記録する機能。
-使用する場合、ワークベンチにこれを追加する。

**HTTP Mirror Server [#t65a636a]
-送信されたデータを単にミラーリングする非常に単純なHTTPサーバー。
-HTTP要求の内容をチェックするのに便利。

**Property Display [#i41015f2]
SystemプロパティまたはJMeterプロパティの値が表示される。

*テスト計画 [#d2cb6164]
-負荷テストの実行計画を設定するもの。
-以下のプロパティ設定や、コンポーネント追加ができる。

**Threads(Users) [#rd4bf7fa]
-スレッドグループ(仮想ユーザ群)
-追加する場合、テスト計画で右クリック > 追加 > Threads(Users) > XXXXを選択。

***Threads(Users)の種類 [#e1a2c37f]
以下の3種類のThreads(Users)がある。

-スレッドグループ~
通常のスレッドグループ

-setUp Thread Group~
テスト前のアクションを実行するスレッドグループ。
--通常のスレッドグループとほぼ同じ。
--通常のスレッドグループの実行前に実行される。

-tearDown Thread Group~
テスト後のアクションを実行するスレッドグループ。
--通常のスレッドグループとほぼ同じ。
--通常のスレッドグループの実行後に実行される。

***プロパティ [#s4c36420]
以下のプロパティを設定。

-名前~
スレッドグループの名前(IDではない)。

-コメント~
スレッドグループの説明

-スレッド数~
起動するスレッド数 ≒ 仮想ユーザ数

-Delay Thread creation until needed~
スレッドが必要になったタイミングで生成するオプション。

-ループ回数
--テスト・シナリオの実行回数
--[無限ループ]にチェックを入れると無限にテスト

-Ramp-up期間(秒で指定)~
1秒辺りの同時アクセス仮想ユーザー数を決定するパラメタ。
 1秒辺りの同時アクセス仮想ユーザー数 = (仮想ユーザ数 * ループ回数) / Ramp-up期間(秒)

-スケジューラ

--開始時刻~
スケジューラが有効の場合、この時刻が来るまでテストの実施を待つ。~
ただし後述の起動遅延の指定があれば、そちらが優先される。

--終了時刻~
スケジューラが有効の場合、この時刻までテストが行われる。

--持続時間~
テストをこの時間だけ実行する

--起動遅延~
この秒数だけテストの実行を遅延する

--終了条件~
Jmeterのスレッドが終了する契機が、~
以下の終了条件のうち、いずれか達成の早いものになる。~
条件チェックは各サンプル間でのみ行われる。
---指定のループ回数に達した時
---終了時刻に達した時
---持続時間に達した時

-サンプラーエラー後のアクション~
サーバがエラーを返してきた場合など、~
リクエストが何らかの原因でエラーになった際どうするかを選択する。

--続行~
エラーを無視してテストを続行

--Start Next Loop~
エラーを無視して次のループの最初から続行

--スレッド停止~
現在のスレッドを終了

--テスト停止~
いずれかのサンプルの終了をもってテスト全体が停止

--Stop Test Now~
即座にテスト全体を停止。

**サンプラー [#q4e53b30]
-サーバなどのテスト対象に対し、何らかの指示やリクエストを行うためのコンポーネント。
-サンプラーにより負荷テスト結果が収集され、 この結果は[[リスナー>#h6cb67cf]]により参照できる。
-追加する場合、スレッドグループかロジックコントローラで右クリック > 追加 > サンプラー > XXXXを選択。

-様々なサンプラーがある。
--Webサーバのテストであれば、「[[HTTPリクエスト>JmeterによるWebアプリの負荷テスト#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リクエスト>JmeterによるWebアプリの負荷テスト#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|・・・|
|3|[[Debug Sampler>#u542b2f5]]|・・・|

**ロジックコントローラー [#k1b91458]
-ループや条件分岐など、 複雑な制御を行うためのコンポーネント。
-追加する場合、スレッドグループかロジックコントローラで右クリック > 追加 > ロジックコントローラ > XXXXを選択。
-また、下位に[[サンプラー>#q4e53b30]](または子コントローラ)を追加できる。

***制御構文系 [#j070c42d]

-選択
|#|ロジックコントローラー名|説明|h
|1|If Controller|指定した条件が "true"の場合、子コントローラーを実行する。条件は JavaScript または変数表現で指定。|
|2|Switch Controller|スイッチの値に従って子コントローラーを実行する。|

-ループ
|#|ロジックコントローラー名|説明|h
|1|Loop Controller|特定回数分、子コントローラーを実行する。|
|2|While Controller|Whileで、指定した条件が "false"になるまでループしながら子コントローラーを実行する。|
|3|ForEach Controller|ForEachで、変数の値を変えながらループして、子コントローラーを実行する。|

***その他 [#x72a653e]

|#|ロジックコントローラー名|説明|h
|1|Simple Controller|[[サンプラー>#q4e53b30]]、子コントローラーの整理のため。|
|2|[[Module Controller>#naf69640]]|リンク先を参照。|
|3|[[Include Controller>#fc3d5c3c]]|リンク先を参照。|

以下は、ググって。

-Once Only Controller
-Interleave Controller
-Random Controller
-Random Order Controller
-Throughput Controller
-Runtime Controller
-Transaction Controller
-Recording Controller
-Critical Section Controller

**設定エレメント [#z1e392de]
-リクエストにかかわる様々な項目を設定する。
-追加する場合、テスト計画 - サンプラーを右クリック > 追加 > 設定エレメント > XXXXを選択。

***共通 [#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]
-待機のためのコンポーネント。
-追加する場合、テスト計画 - サンプラーで右クリック > 追加 > タイマ > XXXX を選択。

***スクリプト系 [#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|応答を正規表現を使って解析してパラメタを抽出|
|2|RegEx User Parameters|応答を[[正規表現>Jmeterの正規表現#t7251991]]を使って解析してパラメタを抽出|

***その他 [#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 互換正規表現を使って解析してパラメタを抽出|
|1|Regular Expression Extractor(正規表現抽出)|応答を[[正規表現>Jmeterの正規表現#t7251991]]を使って解析してパラメタを抽出|
|2|CSS/JQuery Extractor|応答をCSS/JQuery ライクなセレクタの文法を使って解析してパラメタを抽出|
|3|XPath Extractor|応答をXPath クエリー言語を使って解析してパラメタを抽出|
|4|JSON Extractor|応答をJSONをJSON-PATH syntax使って解析してパラメタを抽出|

***その他 [#d9e3a42f]

|#|ポストプロセッサ名|説明|h
|1|[[Debug PostProcessor>#acf01819]]|・・・|
|2|Result Status Action Handler|サンプラーが失敗したら、スレッドまたはテスト全体を終了する。|

**アサーション [#q21233c4]
-テストをしているサーバから受け取った応答を検査し、その応答が正しい応答かどうかをチェックするためのコンポーネント。
-追加する場合、テスト計画 - サンプラーで右クリック > 追加 > アサーション > XXXXを選択。

***スクリプト系 [#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]
-テスト中に収集した情報を表示したりファイルへ保存したりして、結果をレポーティングするためのコンポーネント。
-追加する場合、テスト計画 - サンプラーで右クリック > 追加 > リスナー > XXXXを選択。

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

|#|リスナー名|説明|h
|1|BeanShell Listener|サンプルの結果に対して BeanShellを適用する。|
|2|BSF Listener (DEPRECATED)|サンプルの結果に対して BSFを適用する。|
|3|JSR223 Listener|サンプルの結果に対して JSR-223 を適用する。|

***レポート・グラフ系 [#g2827edc]
-負荷テストのレポート用
|#|リスナー名|説明|h

-機能テスト、負荷テストのデバッグと検証用
|#|リスナー名|説明|h
|1|View Results Tree|サンプル応答のツリーを表示|

-Sample Result Save Configuration
-Graph Results
-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|失敗応答を受信するとメールを送る|

*その他 [#dec31566]
**Test Fragment [#f77e57b5]
-スレッドグループまたはWorkBenchに配置できる。
-Include ControllerおよびModule Controllerとともに使用される。

***Module Controller [#naf69640]
Test Fragmentで代替テスト計画に迅速かつ容易に切り替えて実行。

***Include Controller [#fc3d5c3c]
以下で作成した外部のJMXファイルをインクルードする。

-テスト計画の下にテストフラグメントを作成、
-その下に任意のサンプラー、[[ロジックコントローラー#k1b91458]]などを追加。
-次に、テスト計画を外部のJMXファイルに保存。

**Debug [#ge12214d]
***Debug Sampler [#u542b2f5]
-すべてのJMeter変数および/またはプロパティの値を含むサンプルを生成。
-サンプルの値は、「結果ツリー・リスナー応答データの表示」ペインに表示される。

***Debug PostProcessor [#acf01819]
-以前のサンプラプロパティ、JMeter変数、プロパティおよび/またはシステムプロパティの詳細を含むサンプルを生成。
-サンプルの値は、「結果ツリー・リスナー応答データの表示」ペインに表示される。

**スクリプト [#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