18 はじめに ¶

いくつかのテスト要素は、JMeter プロパティを使用して動作を制御します。これらのプロパティは通常、クラスがロードされるときに解決されます。これは通常、テスト計画の開始前に発生するため、__setProperty()関数を使用して設定を変更することはできません。

18.1 サンプラー

サンプラーは、JMeter の実際の作業を実行します。各サンプラー ( Flow Control Actionを除く) は、1 つ以上のサンプル結果を生成します。サンプル結果にはさまざまな属性 (成功/失敗、経過時間、データ サイズなど) があり、さまざまなリスナーで表示できます。

FTP リクエスト

このコントローラーを使用すると、FTP の「ファイルの取得」または「ファイルのアップロード」要求を FTP サーバーに送信できます。複数の要求を同じ FTP サーバーに送信する場合は、FTP 要求生成コントローラーごとに同じ情報を入力する必要がないように、 FTP 要求の既定の構成要素を使用することを検討してください。ファイルをダウンロードするときは、ディスク (ローカル ファイル) または応答データ、あるいはその両方に保存できます。

レイテンシーは、ログインにかかる時間に設定されます。

FTP リクエストのコントロール パネルのスクリーンショット
FTP リクエストのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
サーバー名または IP
FTP サーバーのドメイン名または IP アドレス。
はい
ポート
使用するポート。これが>0の場合、この特定のポートが使用されます。それ以外の場合、JMeter はデフォルトの FTP ポートを使用します。
いいえ
リモートファイル:
取得するファイルまたはアップロードする宛先ファイルの名前。
はい
ローカル ファイル:
アップロードするファイル、またはダウンロード先 (デフォルトはリモート ファイル名)。
はい、アップロードする場合 (*)
ローカル ファイルの内容:
アップロードのコンテンツを提供し、ローカル ファイル プロパティをオーバーライドします。
はい、アップロードする場合 (*)
get(RETR) / put(STOR)
ファイルを取得するかアップロードするか。
はい
バイナリモードを使用しますか?
バイナリ モードを使用するには、これをオンにします (デフォルトは ASCII)。
はい
応答でファイルを保存しますか?
取得したファイルの内容を応答データに格納するかどうか。モードが ASCII の場合、コンテンツはView Results Treeに表示されます。
はい、ダウンロードする場合
ユーザー名
FTP アカウントのユーザー名。
いつもの
パスワード
FTP アカウントのパスワード。注: これはテスト計画に表示されます。
いつもの
^

HTTP リクエスト

このサンプラーを使用すると、HTTP/HTTPS 要求を Web サーバーに送信できます。また、JMeter が画像やその他の埋め込みリソースの HTML ファイルを解析し、それらを取得するために HTTP 要求を送信するかどうかを制御することもできます。次の種類の埋め込みリソースが取得されます。

  • 画像
  • アプレット
  • スタイルシート (CSS) およびそれらのファイルから参照されるリソース
  • 外部スクリプト
  • フレーム、iframe
  • 背景画像(本体、表、TD、TR)
  • 背景音

デフォルトのパーサーはorg.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser ですこれは、プロパティ「 htmlparser.className」を使用して変更できます。詳細については、 jmeter.propertiesを参照してください。

複数の要求を同じ Web サーバーに送信する場合は、HTTP 要求の既定の 構成要素を使用することを検討してください。これにより、HTTP 要求ごとに同じ情報を入力する必要がなくなります。

または、HTTP リクエストを手動で追加する代わりに、JMeter のHTTP(S) テスト スクリプト レコーダーを使用して作成することもできます。これにより、多数の HTTP リクエストまたは多数のパラメーターを含むリクエストがある場合に、時間を節約できます。

サンプラーを定義するために使用される 3 つの異なるテスト要素があります。

AJP/1.3 サンプラー
Tomcat mod_jk プロトコルを使用します (Apache httpd を必要とせずに AJP モードで Tomcat をテストできます)。AJP Sampler は複数ファイルのアップロードをサポートしていません。最初のファイルのみが使用されます。
HTTP リクエスト
これには、使用する HTTP プロトコルの実装を選択する実装ドロップダウン ボックスがあります。
ジャワ
JVM が提供する HTTP 実装を使用します。これには、HttpClient 実装と比較していくつかの制限があります。以下を参照してください。
HTTPClient4
Apache HttpComponents HttpClient 4.x を使用します。
ブランク値
HTTP サンプラーの実装を設定しないため、存在する場合は HTTP 要求のデフォルトに依存するか、jmeter.propertiesで定義されたjmeter.httpsamplerプロパティに依存します
GraphQL HTTP リクエスト
これはHTTP リクエストの GUI バリエーションであり、GraphQL QueryVariables、およびOperation Nameを表示または編集するためのより便利な UI 要素を提供し、同じサンプラーを使用して内部でそれらを HTTP Arguments に自動的に変換します。以下の UI 要素は、HTTP/HTTPS リクエストを介した GraphQL にとってあまり便利ではないか、無関係であるため、非表示にするかカスタマイズします。
  • メソッド: GraphQL over HTTP 仕様に準拠した POST メソッドと GET メソッドのみが使用可能です。デフォルトでは POST メソッドが選択されています。
  • [パラメーター] タブと[投稿本文] タブ: 代わりに、クエリ、変数、および操作名の UI 要素を使用して、パラメーターの内容を表示または編集できます。
  • [ファイルのアップロード] タブ: GraphQL クエリとは関係ありません。
  • [Advanced] タブの [ Embedded Resources from HTML Files ] セクション: GraphQL JSON 応答には関係ありません。

Java HTTP 実装にはいくつかの制限があります。

  • 接続の再利用方法を制御することはできません。接続が JMeter によって解放されると、同じスレッドによって再利用される場合とされない場合があります。
  • API はシングル スレッドでの使用に最適です。さまざまな設定がシステム プロパティによって定義されるため、すべての接続に適用されます。
  • Kerberos 認証のサポートなし
  • Keystore Config を使用したクライアント ベースの証明書のテストはサポートされていません。
  • 再試行メカニズムの制御の向上
  • 仮想ホストはサポートしていません。
  • 次のメソッドのみをサポートします: GETPOSTHEADOPTIONSPUTDELETEおよびTRACE
  • DNS Cache Managerによる DNS キャッシングの制御の向上
注: FILEプロトコルは、テストのみを目的としています。どの HTTP Sampler を使用するかに関係なく、同じコードで処理されます。

要求がサーバーまたはプロキシのログイン認証を必要とする場合 (つまり、ブラウザーがポップアップ ダイアログ ボックスを作成する場合)、HTTP Authorization Manager構成要素も追加する必要があります。通常のログイン (つまり、ユーザーがフォームにログイン情報を入力する場所) の場合、フォーム送信ボタンが何をするかを理解し、適切なメソッド (通常はPOST ) とフォーム定義から適切なパラメーターを使用して HTTP リクエストを作成する必要があります。 . ページが HTTP を使用している場合は、JMeter プロキシを使用してログイン シーケンスを取得できます。

スレッドごとに個別の SSL コンテキストが使用されます。単一の SSL コンテキスト (ブラウザの標準的な動作ではない) を使用する場合は、JMeter プロパティを設定します。

https.sessioncontext.shared=true
デフォルトでは、バージョン 5.0 以降、SSL コンテキストはスレッド グループの反復中に保持され、テストの反復ごとにリセットされます。テスト計画で同じユーザーが複数回反復する場合は、これを false に設定する必要があります。
httpclient.reset_state_on_thread_group_iteration=true
注: これは、Java HTTP 実装には適用されません。
JMeter のデフォルトは、SSL プロトコル レベルの TLS です。サーバーがSSLv3などの別のレベルを必要とする場合は、JMeter プロパティを次のように変更します。
https.default.protocol=SSLv3

JMeter では、プロパティhttps.socket.protocolsを変更することで、追加のプロトコルを有効にすることもできます。

リクエストで Cookie を使用する場合は、 HTTP Cookie Managerも必要になります 。これらの要素のいずれかをスレッド グループまたは HTTP 要求に追加できます。認証または Cookie が必要な HTTP リクエストが複数ある場合は、要素をスレッド グループに追加します。これにより、すべての HTTP 要求コントローラーが同じ承認マネージャーと Cookie マネージャーの要素を共有します。

リクエストが「URL 書き換え」と呼ばれる手法を使用してセッションを維持する場合は、 追加の構成手順についてセクション6.1 URL 書き換えによるユーザー セッションの処理を参照してください。

HTTP リクエストのコントロール パネルのスクリーンショット
HTTP リクエストのコントロール パネルのスクリーンショット
HTTP リクエストの詳細設定フィールド
HTTP リクエストの詳細設定フィールド
GraphQL HTTP リクエストのコントロール パネルのスクリーンショット
GraphQL HTTP リクエストのコントロール パネルのスクリーンショット
GraphQL HTTP リクエストの変数フィールド
GraphQL HTTP リクエストの変数フィールド

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
サーバ
www.example.com など、Web サーバーのドメイン名または IP アドレス。[ http://プレフィックスを含めないでください。] 注: " Host " ヘッダーがヘッダー マネージャーで定義されている場合、これが仮想ホスト名として使用されます。
次の場合を除き、サーバーが必要です。
  • HTTP Request Defaultsによって提供されます。
  • または、スキーム、ホスト、ポートを含む完全な URL ( scheme://host:port ) が[パス]フィールドに設定されます。
いいえ
ポート
Web サーバーがリッスンしているポート。デフォルト: 80
いいえ
接続タイムアウト
接続タイムアウト。接続が開くまで待機するミリ秒数。
いいえ
応答タイムアウト
応答タイムアウト。応答を待機するミリ秒数。これは、応答を待つたびに適用されることに注意してください。サーバーの応答が複数のチャンクで送信される場合、全体の経過時間がタイムアウトよりも長くなる可能性があります。

Duration アサーションを使用して、完了するまでに時間がかかりすぎる応答を検出できます。

いいえ
サーバー(プロキシ)
リクエストを実行するプロキシ サーバーのホスト名または IP アドレス。[ http://プレフィックスを含めないでください。]
いいえ
ポート
プロキシ サーバーがリッスンしているポート。
いいえ、プロキシのホスト名が指定されていない限り
ユーザー名
(オプション) プロキシ サーバーのユーザー名。
いいえ
パスワード
(オプション) プロキシ サーバーのパスワード。(NB これはテスト計画に暗号化されずに保存されます)
いいえ
実装
JavaHttpClient4。指定されていない場合 (および HTTP 要求のデフォルトで定義されていない場合)、デフォルトは JMeter プロパティ jmeter.httpsamplerの値に依存し、それが失敗すると、HttpClient4 実装が使用されます。
いいえ
プロトコル
HTTPHTTPSまたはFILE。デフォルト: HTTP
いいえ
方法
GETPOSTHEADTRACEOPTIONSPUTDELETEPATCH ( JAVA実装ではサポートされていません )。HttpClient4では、 WebDavに関連する次のメソッドも許可されます: COPYLOCKMKCOLMOVEPROPFINDPROPPATCHUNLOCKREPORTMKCALENDARSEARCH

JMeter プロパティhttpsampler.user_defined_methodsを使用して、HttpClient4 用にさらに多くのメソッドを事前定義できます 。

はい
コンテンツのエンコーディング
使用するコンテンツ エンコーディング ( POSTPUTPATCH、およびFILE )。これは使用される文字エンコーディングであり、Content-Encoding HTTP ヘッダーとは関係ありません。
いいえ
自動リダイレクト
基になる http プロトコル ハンドラーが自動的にリダイレクトに従うように設定します。これにより、リダイレクトは JMeter によって認識されず、サンプルとして表示されなくなります。GETおよびHEADリクエストにのみ使用してください。HttpClient サンプラーは、それをPOSTまたはPUTに使用しようとする試みを拒否します。
警告: Cookie とヘッダーの処理については、以下を参照してください。
いいえ
リダイレクトに従う
これは、「自動的にリダイレクトする」が有効になっていない場合にのみ効果があります。設定されている場合、JMeter サンプラーは応答がリダイレクトかどうかを確認し、そうであればそれに従います。最初のリダイレクトとその後の応答は、追加のサンプルとして表示されます。親サンプルの URL とデータ フィールドは、最終的な (リダイレクトされていない) サンプルから取得されますが、親のバイト カウントと経過時間にはすべてのサンプルが含まれます。レイテンシーは初期応答から取得されます。HttpClient サンプラーは、次のメッセージをログに記録する場合があることに注意してください。
「リダイレクトがリクエストされましたが、followRedirects が無効になっています」
これは無視できます。
JMeter は、絶対リダイレクト URL と相対リダイレクト URL の両方で、 「 /../segment 」の形式のパスを折りたたみます。たとえば、http://host/one/../twoはhttp://host/twoに折りたたまれます。必要に応じて、JMeter プロパティhttpsampler.redirect.removeslashdotdot=falseを設定することで、この動作を抑制することができます。
いいえ
キープアライブを使用する
JMeter は Connection: keep-aliveヘッダーを設定します。接続の再利用はユーザー制御下にないため、これはデフォルトの HTTP 実装では適切に機能しません。Apache HttpComponents HttpClient 実装で動作します。
いいえ
HTTP POST に multipart/form-data を使用する
multipart/form-dataまたはapplication/x-www-form-urlencoded投稿リクエスト を使用する
いいえ
ブラウザ互換ヘッダー
multipart/form-data を使用する場合、これによりContent-Typeおよび Content-Transfer-Encodingヘッダーが抑制されます。Content-Dispositionヘッダー のみが送信されます。
いいえ
リソースへのパス (例: /servlets/myServlet )。リソースにクエリ文字列パラメーターが必要な場合は、以下の「要求と共にパラメーターを送信する」セクションにそれらを追加します。
特殊なケースとして、パスが「http://」または「https://」で始まる場合、これが完全な URL として使用されます。
この場合、サーバー、ポート、およびプロトコル フィールドは無視されます。パラメータは、 GETおよびDELETEメソッドでも無視されます。また、パスはエンコードされていないことに注意してください (スペースを%20に置き換える以外は)。そのため、 URISyntaxExceptionなどのエラーを回避するために、安全でない文字をエンコードする必要がある場合があります。
いいえ
リクエストでパラメータを送信
クエリ文字列は、指定したパラメーターのリストから生成されます。各パラメーターには、名前、パラメーターをエンコードするオプション、等号を含めるか除外するオプションがあります (一部のアプリケーションでは、値が空の文字列である場合に等号を予期しません)。クエリ文字列は、選択した「メソッド」に応じて正しい方法で生成されます (つまり、GETまたはDELETEを選択した場合、 POSTまたはPUTの場合、クエリ文字列は URL に追加されます)。その場合は別送となります。)また、マルチパート フォームを使用してファイルを送信する場合、クエリ文字列はマルチパート フォームの仕様を使用して作成されます。 パラメータ処理の詳細については、以下を参照してください。

さらに、各パラメータを URL エンコードするかどうかを指定できます。これが何を意味するのかわからない場合は、おそらくそれを選択することをお勧めします。値に次のような文字が含まれている場合、通常はエンコードが必要です。

  • ASCII 制御文字
  • 非 ASCII 文字
  • 予約文字: URL では、構文を定義する際に特別な用途に使用される文字がいくつかあります。これらの文字が URL 内の特別な役割で使用されていない場合は、エンコードする必要があります。例: 「$」、「&」、「+」、「」、「/」、「:」、「」', ' = ', ' ? '、' @ '
  • 安全でない文字: 一部の文字は、さまざまな理由で URL 内で誤解される可能性があります。これらの文字も常にエンコードする必要があります。例: ' '、' < '、' > '、' # '、' % '、…
いいえ
ファイルパス:
送信するファイルの名前。空白のままにすると、JMeter はファイルを送信しません。入力すると、JMeter はリクエストをマルチパート フォーム リクエストとして自動的に送信します。

POSTPUT 、またはPATCHリクエストで、「パラメータ名」属性 (下記) が省略されたファイルが 1 つある場合、そのファイルはリクエストの本文全体として送信されます。つまり、ラッパーは追加されません。これにより、任意の本文を送信できます。この機能は、POSTリクエストだけでなく、PUTリクエストにもあります。 パラメータ処理の詳細については、以下を参照してください。

いいえ
パラメータ名:
name」 Web リクエスト パラメータの値。
いいえ
MIME タイプ
MIME タイプ (例: text/plain )。POSTPUT、またはPATCHリクエストであり、' name '属性 (下記) が省略されているか、リクエスト本文がパラメータ値のみから構築されている場合、このフィールドの値は content-typeリクエストの値として使用されます。ヘッダ。
いいえ
HTML ファイルからすべての埋め込みリソースを取得する
HTML ファイルを解析し、ファイルで参照されているすべての画像、Java アプレット、JavaScript ファイル、CSS などの HTTP/HTTPS 要求を送信するよう JMeter に指示します。詳細については、以下を参照してください。
いいえ
応答を MD5 ハッシュとして保存しますか?
これを選択すると、応答はサンプル結果に保存されません。代わりに、データの 32 文字の MD5 ハッシュが計算され、代わりに保存されます。これは、大量のデータをテストするためのものです。
いいえ
URL は一致する必要があります:
存在する場合、これは見つかった埋め込み URL と照合するために使用される正規表現である必要があります。したがって、埋め込みリソースをhttp://example.invalid/からのみダウンロードする場合は、次の式を使用します: http://example\.invalid/.*
いいえ
URL は一致してはなりません:
存在する場合、これは見つかった埋め込み URL を除外するために使用される正規表現である必要があります。そのため、どのソースからも PNG または SVG ファイルをダウンロードしたくない場合は、次の式を使用します: .*\.(?i:svg|png)
いいえ
同時プールを使用
同時接続のプールを使用して、埋め込みリソースを取得します。
いいえ
サイズ
組み込みリソースを取得するために使用される同時接続のプール サイズ。
いいえ
送信元アドレス タイプ
[HTTPClient 実装の HTTP リクエストのみ]
ソース アドレス値を区別するには、次のタイプを選択します。
  • IP/ホスト名を選択して、特定の IP アドレスまたは (ローカル) ホスト名を使用します
  • [デバイス]を選択して、そのインターフェイスで使用可能な最初のアドレスを選択します。これは IPv4 または IPv6 のいずれかです。
  • デバイス IPv4を選択して、デバイス名の IPv4 アドレスを選択します ( eth0loem0など)。
  • [ Device IPv6 ] を選択して、デバイス名の IPv6 アドレス ( eth0loem0など)を選択します。
いいえ
送信元アドレス フィールド
[HTTPClient 実装の HTTP リクエストのみ]
このプロパティは、IP スプーフィングを有効にするために使用されます。このサンプルのデフォルトのローカル IP アドレスをオーバーライドします。JMeter ホストには、複数の IP アドレス (つまり、IP エイリアス、ネットワーク インターフェイス、デバイス) が必要です。値には、ホスト名、IP アドレス、または「eth0」、「lo」、「wlan0」などのネットワーク インターフェイス デバイスを指定できます。
プロパティhttpclient.localaddressが定義されている場合、それがすべての HttpClient リクエストに使用されます。
いいえ

次のパラメーターは、 GraphQL HTTP Requestでのみ使用できます。

パラメータ

属性
説明
必須
クエリ
GraphQL クエリ (またはミューテーション) ステートメント。
はい
変数
有効な JSON 文字列内の GraphQL クエリ (またはミューテーション) 変数。 : 入力文字列が有効な JSON 文字列でない場合、これは無視され、エラー ログが記録されます。
いいえ
操作名
マルチオペレーション ドキュメントをリクエストするときのオプションの GraphQL オペレーション名。
いいえ
自動リダイレクトを使用する場合、Cookie は初期 URL に対してのみ送信されます。これにより、ローカル サーバーにリダイレクトする Web サイトで予期しない動作が発生する可能性があります。たとえば、www.example.comがwww.example.co.ukにリダイレクトされる場合。この場合、サーバーはおそらく両方の URL の Cookie を返しますが、JMeter は最後のホスト、つまりwww.example.co.ukの Cookie しか表示しません。テスト計画の次のリクエストでwww.example.co.ukではなくwww.example.comを使用する場合、正しい Cookie を取得しません。同様に、ヘッダーは最初のリクエストで送信され、リダイレクトでは送信されません。レコーダを使用して作成されたテスト計画はリダイレクトされた URL から続行されるため、これは通常、手動で作成されたテスト計画のみの問題です。

パラメーターの処理: POSTおよびPUT
メソッドの場合 、送信するファイルがなく、パラメーターの名前が省略されている場合、パラメーターのすべての値を連結して本文が作成されます。行末文字を追加せずに値が連結されることに注意してください。これらは、値フィールドで__char()関数を使用して追加できます。これにより、任意の本文を送信できます。encoding フラグが設定されている場合、値はエンコードされます。送信されるcontent-typeリクエスト ヘッダーを 制御する方法については、上記の MIME タイプも参照してください。 他のメソッドでは、パラメーターの名前が欠落している場合、パラメーターは無視されます。これにより、変数で定義されたオプションのパラメーターを使用できます。


リクエストに名前のないパラメーターしかない場合 (またはパラメーターがまったくない場合) に、[本文データ] タブに切り替えるオプションがあります。このオプションは、次の場合に役立ちます (特に)。

  • GWT RPC HTTP リクエスト
  • JSON REST HTTP リクエスト
  • XML REST HTTP リクエスト
  • SOAP HTTP リクエスト
Tree ノードを離れると、 Body Dataタブのデータ を消去しない限り、パラメータ タブに戻ることはできません。

Body Dataモードでは、最後の行を除いて、各行に CRLF が追加されて送信さ れますデータの最後の行の後にCRLFを送信するには、その後に空の行があることを確認してください。(これは、カーソルを次の行に置くことができるかどうかに注目しない限り、見ることができません。)

図 1 - 名前のないパラメータが 1 つある HTTP リクエスト
図 1 - 名前のないパラメータが 1 つある HTTP リクエスト
図 2 - 切り替えを確認するダイアログ
図 2 - 切り替えを確認するダイアログ
図 3 - 本文データを使用した HTTP リクエスト
図 3 - 本文データを使用した HTTP リクエスト

メソッド処理:
GET DELETE POST PUT およびPATCHリクエスト メソッドは同様に機能しますが、3.1 の時点ではPOSTメソッドのみがマルチパート リクエストまたはファイル アップロードをサポートする点が異なります。PUTおよびPATCHメソッド本体は、次のいずれかとして提供する必要があります。

  • 空のパラメータ名フィールドを持つファイルとして本文を定義します。この場合、MIME タイプが Content-Type として使用されます
  • 名前のないパラメーター値として本体を定義します
  • 本文データタブを使用する

GETDELETE、およびPOSTメソッドには、[パラメーター] タブを使用してパラメーターを渡す追加 の方法があります。 GETDELETEPUT、およびPATCHには Content-Type が必要です。ファイルを使用しない場合は、ヘッダー マネージャーをサンプラーにアタッチし、そこで Content-Type を定義します。

JMeter は、埋め込みリソースからの応答をスキャンします。htmlParsercssParserwmlParserなどのパーサー ID のリストであるHTTPResponse.parsersプロパティを使用します。見つかった ID ごとに、JMeter はさらに 2 つのプロパティをチェックします。

  • id.types - コンテンツ タイプのリスト
  • id.className - 埋め込まれたリソースを抽出するために使用されるパーサー

設定の詳細については、 jmeter.propertiesファイルを参照してください。HTTPResponse.parserプロパティが設定されていない場合、JMeter は以前の動作に戻ります。つまり、text/html応答のみがスキャンされます。

低速接続のエミュレート:

HttpClient4Java Sampler は低速接続のエミュレーションをサポートしています。jmeter.propertiesの次のエントリを参照してください。

# 低速接続をエミュレートするには、1 秒あたりの文字数 > 0 を定義します
#httpclient.socket.http.cps=0
#httpclient.socket.https.cps=0
ただし、Javaサンプラーは低速の HTTPS 接続のみをサポートします。

応答サイズの計算

Java実装では、応答本文のサイズにチャンク ヘッダーなどのトランスポート オーバーヘッドは含まれません 。HttpClient4
の実装では、応答本文のサイズにオーバーヘッドが含まれるため、値が応答コンテンツのバイト数よりも大きくなる場合があります。

再試行の処理
デフォルトでは、HttpClient4 と Java の両方の実装で再試行は 0 に設定されています。つまり、再試行は試行されません。
HttpClient4 の場合、関連する JMeter プロパティを設定することで再試行回数をオーバーライドできます。次に例を示します。

httpclient4.retrycount=3
HC4 実装では、デフォルトでべき等 Http メソッドで再試行が行われます。すべてのメソッドを再試行する場合は、プロパティを設定します
httpclient4.request_sent_retry_enabled=true
Java 実装は、デフォルトではどちらも再試行しないことに注意してください。これは、設定によって変更できます。
http.java.sampler.retries=3

注: 証明書はアルゴリズムの制約に準拠していません
次のエラーが発生する場合があります: java.security.cert.CertificateException: SSL 証明書 (それ自体またはMD2 を使用する署名アルゴリズム ( md2WithRSAEncryption など) または 1024 ビット未満のサイズの SSL 証明書を使用する信頼チェーン内の SSL 証明書。

このエラーは、Java 8 でのセキュリティの強化に関連しています。

HTTPS 要求を実行できるようにするには、Java jdk.certpath.disabledAlgorithmsプロパティを編集して、Java インストールのセキュリティをダウングレードします。ケースに応じて、MD2 値またはサイズの制約を削除します。

このプロパティは次のファイルにあります。

JAVA_HOME/jre/lib/security/java.security

詳細については 、 バグ 56357を参照してください。

^

JDBC リクエスト

このサンプラーを使用すると、JDBC リクエスト (SQL クエリ) をデータベースに送信できます。

これを使用する前に、 JDBC 接続構成構成要素 をセットアップする必要があり ます

変数名リストが指定されている場合、Select ステートメントによって返される行ごとに、対応する列の値を使用して変数が設定され (変数名が指定されている場合)、行数も設定されます。たとえば、Select ステートメントが 2 行 3 列を返し、変数リストがA,,Cの場合、次の変数が設定されます。

A_#=2 (行数)
A_1=列 1、行 1
A_2=列 1、行 2
C_#=2 (行数)
C_1=列 3、行 1
C_2=列 3、行 2

Select ステートメントがゼロ行を返す場合、A_#およびC_#変数は0に設定され、他の変数は設定されません。

古い変数は必要に応じてクリアされます。たとえば、最初の選択で 6 行が取得され、2 番目の選択で 3 行しか返されない場合、4、5、6 行の追加の変数が削除されます。

レイテンシー時間は、接続を取得するのにかかった時間から設定されます。
JDBC リクエストのコントロール パネルのスクリーンショット
JDBC リクエストのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
JDBC 接続構成で宣言されたプールの変数名
接続プールがバインドされる JMeter 変数の名前。これは、 JDBC 接続構成の「変数名」フィールドと一致する必要があります。
はい
クエリの種類
ステートメントのタイプに応じてこれを設定します。
  • ステートメントを選択
  • 更新ステートメント - 挿入と削除にもこれを使用します
  • 呼び出し可能なステートメント
  • プリペアード Select ステートメント
  • 準備された更新ステートメント - これを挿入と削除にも使用します
  • 専念
  • ロールバック
  • 自動コミット (false)
  • 自動コミット(true)
  • 編集 - これは、上記のいずれかに評価される変数参照である必要があります
CommitRollbackAutocommit(false)、およびAutocommit(true) は、指定された SQL ステートメントを無視し、接続の状態のみを変更しているため、特別です。
はい
SQL クエリ
SQL クエリ。
末尾のセミコロンを入力しないでください。
通常、 Callable ステートメントを囲むために{} を使用する必要はありません。ただし、データベースが非標準の構文を使用している場合は使用できます。
JDBC ドライバーは、ステートメントが{}で囲まれている場合、必要に応じてステートメントを自動的に変換します。
例えば:
  • select * from t_customers where id=23
  • CALL SYSCS_UTIL.SYSCS_EXPORT_TABLE (ヌル、?、?、ヌル、ヌル、ヌル)
    • パラメータ値: tablenamefilename
    • パラメータの型: VARCHARVARCHAR
2 番目の例では、Apache Derby を使用していると想定しています。
はい
パラメータ値
パラメータ値のカンマ区切りリスト。]NULL[を使用して、 NULLパラメータを示します。(必要に応じて、プロパティー「 jdbcsampler.nullmarker 」を定義することにより、ヌル文字列を変更できます。)
値のいずれかにコンマまたは二重引用符が含まれている場合、リストは二重引用符で囲む必要があり、埋め込まれた二重引用符はすべて二重引用符で囲む必要があります。たとえば、次のようにします。
"Dbl-Quote: "" and Comma: ,"
パラメーターがOUTであっても、ステートメント内のプレースホルダーと同じ数の値が必要です。値が使用されない場合でも (CallableStatement などで) 必ず値を設定してください。
はい (準備済みステートメントまたは呼び出し可能ステートメントにパラメーターがある場合)
パラメータの種類
SQL パラメータ タイプ (例: INTEGERDATEVARCHARDOUBLE ) または定数の整数値のコンマ区切りリスト。これらの整数値は、ドライバによって提案されたカスタム データベース タイプを使用する場合に使用できます (たとえば、OracleTypes.CURSORは整数値-10で表すことができます)。
これらはクラスjava.sql.Typesのフィールドとして定義されています。たとえば、
Javadoc for java.sql.Typesを参照してください。
注: JMeter はランタイム JVM で定義されているタイプを使用するため、別の JVM で実行している場合は、適切なドキュメントを確認してください。
呼び出し可能なステートメントにINOUTまたはOUTパラメータがある場合、これらは適切なパラメータ タイプを前に付けて示す必要があります。たとえば、「 INTEGER 」の代わりに「 INOUT INTEGER を使用します。
指定されていない場合、" IN " と見なされます。つまり、" DATE " は " IN DATE "と同じです。 タイプがjava.sql.Types
にあるフィールドのいずれでもない場合、JMeter は対応する整数も受け入れます。たとえば、OracleTypes.CURSOR == -10であるため、「 INOUT -10 」を使用できます。
ステートメント内のプレースホルダーと同じ数の型が必要です。
はい (準備済みステートメントまたは呼び出し可能ステートメントにパラメーターがある場合)
変数名
Select ステートメント、Prepared Select ステートメント、または CallableStatement によって返される値を保持する変数名のカンマ区切りリスト。CallableStatement とともに使用する場合、変数のリストは、呼び出しによって返されるOUTパラメータと同じ順序である必要があることに注意してください。OUTパラメータより変数名が少ない場合、変数名が提供されたのと同じ数の結果のみがスレッドコンテキスト変数に格納されます。OUTパラメータより多くの変数名が存在する場合、追加の変数は無視されます
いいえ
結果変数名
指定すると、行マップのリストを含む Object 変数が作成されます。各マップには、列名がキーとして含まれ、列データが値として含まれます。使用法:
columnValue = vars.getObject("resultObject").get(0).get("列名");
いいえ
クエリのタイムアウト
クエリのタイムアウトを秒単位で設定します。空の値は 0 (無限) を意味します。-1は、ユースケースで必要になる可能性があるクエリ タイムアウトを設定しないことを意味します。デフォルトは 0 です。
いいえ
ResultSet の制限
ResultSet を反復処理する行数を制限します。空の値は-1を意味します。たとえば、制限はありません。これはデフォルトでもあります。これは、JDBC ドライバーを介してデータベースから取得するデータの量を減らすのに役立ちますが、ResultSet のハンドルのすべての可能なオプションにそれぞれ影響します (たとえば、不完全な ResultSet とレコード数 ≤ 制限)。
いいえ
ResultSet の処理
呼び出し可能なステートメントから返された ResultSet の処理方法を定義します。
  • 文字列として保存 (デフォルト) - 変数名リストのすべての変数は文字列として保存され、リストに存在する場合、ResultSetを反復処理しません。CLOBは文字列に変換されます。BLOBは、UTF-8 でエンコードされたバイト配列であるかのように文字列に変換されます。CLOBBLOBの両方がjdbcsampler.max_retain_result_sizeバイト後に切り取られます。
  • オブジェクトとして保存- 変数名リストのResultSetタイプの変数はオブジェクトとして保存され、後続のテスト/スクリプトでアクセスして反復できますが、 ResultSetを反復しません。CLOBは、 Store As Stringが選択されているかのように処理されます。BLOBはバイト配列として格納されます。CLOBBLOBの両方がjdbcsampler.max_retain_result_sizeバイト後に切り取られます。
  • Count Records - ResultSetタイプの変数は、結果としてレコードの数を表示することによって反復されます。変数は文字列として格納されます。BLOBの場合、オブジェクトのサイズが格納されます。
いいえ
JMeter の現在のバージョンでは、文字エンコーディングとして UTF-8 を使用しています。以前は、プラットフォームのデフォルトが使用されていました。
変数名がテスト計画全体で一意であることを確認してください。
^

Java リクエスト

このサンプラーを使用すると、 org.apache.jmeter.protocol.java.sampler.JavaSamplerClientインターフェイスを実装する Java クラスを制御できます 。このインターフェースの独自の実装を作成することにより、JMeter を使用して、複数のスレッド、入力パラメーター制御、およびデータ収集を利用できます。

プルダウン メニューには、クラスパスで JMeter によって検出されたすべての実装のリストが表示されます。パラメータは、実装で定義されているように、以下の表で指定できます。2 つの簡単な例 ( JavaTestSleepTest ) が提供されています。

JavaTestサンプル サンプラーは、ほぼすべてのフィールドに値を設定できるため、テスト計画を確認するのに役立ちます 。これらはアサーションなどで使用できます。フィールドでは変数を使用できるため、これらの値を簡単に確認できます。

Java Request のコントロール パネルのスクリーンショット
Java Request のコントロール パネルのスクリーンショット
メソッドteardownTestがAbstractJavaSamplerClientのサブクラスによってオーバーライドされない場合、そのTeadownTestメソッドは呼び出されません。これにより、JMeter のメモリ要件が軽減されます。これは、既存のテスト計画には影響しません。
追加/削除ボタンは、現時点では何の役にも立ちません。

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
クラス名
サンプリングされる JavaSamplerClient インターフェースの特定の実装。
はい
リクエストでパラメータを送信
サンプリングされたクラスに渡される引数のリスト。すべての引数は文字列として送信されます。具体的な設定については、以下を参照してください。
いいえ

次のパラメーターは、SleepTestおよびJavaTestの実装に適用されます。

パラメータ

属性
説明
必須
睡眠時間
スリープする時間 (ミリ秒)
はい
睡眠マスク
追加する「ランダム性」
の量: スリープ時間は次のように計算されます。
totalSleepTime = SleepTime + (System.currentTimeMillis() % SleepMask)
はい

次のパラメーターは、JavaTest実装に追加で適用されます。

パラメータ

属性
説明
必須
ラベル
使用するラベル。提供されている場合は、名前を上書きします
いいえ
レスポンスコード
提供されている場合は、SampleResult ResponseCode を設定します。
いいえ
応答メッセージ
提供されている場合は、SampleResult ResponseMessage を設定します。
いいえ
状態
提供されている場合は、SampleResult ステータスを設定します。これが " OK " (大文字と小文字を区別しない) の場合、ステータスは成功に設定されます。それ以外の場合、サンプルは失敗としてマークされます。
いいえ
サンプラーデータ
提供されている場合は、SampleResult SamplerData を設定します。
いいえ
結果データ
提供されている場合は、SampleResult ResultData を設定します。
いいえ
^

LDAP リクエスト

このサンプラーを使用すると、異なる LDAP 要求 ( AddModifyDelete、およびSearch ) を LDAP サーバーに送信できます。

複数の要求を同じ LDAP サーバーに送信する場合は 、各 LDAP 要求に同じ情報を入力する必要がないように、 LDAP 要求の既定の構成要素を使用することを検討してください。

ログイン構成要素がログインとパスワードにも使用する のと同じ方法。
LDAP 要求のコントロール パネルのスクリーンショット
LDAP 要求のコントロール パネルのスクリーンショット

LDAP サーバーをテストするためのテスト ケースを作成するには、2 つの方法があります。

  1. 組み込みのテスト ケース。
  2. ユーザー定義のテスト ケース。

LDAP をテストする 4 つのテスト シナリオがあります。テストは以下のとおりです。

  1. テストを追加
    1. 組み込みテスト:

      これにより、事前定義されたエントリが LDAP サーバーに追加され、実行時間が計算されます。テストの実行後、作成されたエントリは LDAP サーバーから削除されます。

    2. ユーザー定義のテスト:

      これにより、LDAP サーバーにエントリが追加されます。ユーザーはテーブルにすべての属性を入力する必要があります。エントリはテーブルから収集されて追加されます。実行時間が計算されます。作成したエントリは、テスト後に削除されません。

  2. テストの変更
    1. 組み込みテスト:

      これにより、最初に定義済みのエントリが作成され、次に LDAP サーバーで作成されたエントリが変更されます。そして、実行時間が計算されます。テストの実行後、作成されたエントリは LDAP サーバーから削除されます。

    2. ユーザー定義のテスト:

      これにより、LDAP サーバーのエントリが変更されます。ユーザーはテーブルにすべての属性を入力する必要があります。テーブルからエントリが収集され、変更されます。実行時間が計算されます。エントリは LDAP サーバーから削除されません。

  3. 検索テスト
    1. 組み込みテスト:

      これにより、最初にエントリが作成され、次に属性が使用可能かどうかが検索されます。検索クエリの実行時間を計算します。実行の最後に、作成されたエントリは LDAP サーバーから削除されます。

    2. ユーザー定義のテスト:

      これにより、検索ベース (ユーザーによって定義された) でユーザー定義のエントリ (検索フィルター) が検索されます。エントリは、LDAP サーバーで使用できる必要があります。実行時間が計算されます。

  4. テストの削除
    1. 組み込みテスト:

      これにより、最初に定義済みのエントリが作成され、次に LDAP サーバーから削除されます。実行時間が計算されます。

    2. ユーザー定義のテスト:

      これにより、LDAP サーバー内のユーザー定義のエントリが削除されます。エントリは、LDAP サーバーで使用できる必要があります。実行時間が計算されます。

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
サーバー名または IP
LDAP サーバーのドメイン名または IP アドレス。JMeter は、LDAP サーバーがデフォルト ポート ( 389 ) でリッスンしていると想定します。
はい
ポート
接続するポート (デフォルトは389 )。
はい
ルート DN
LDAP操作に使用するベースDN
はい
ユーザー名
LDAP サーバーのユーザー名。
いつもの
パスワード
LDAP サーバーのパスワード。(NB これはテスト計画に暗号化されずに保存されます)
いつもの
エントリ DN
作成または変更するコンテキストの名前。空でない場合があります。
オブジェクトの正しい属性を自分で設定する必要があります。したがって、cn=apache,ou=test を追加する場合は、テーブルcnapacheに追加する必要があります。
はい (ユーザー定義のテストとテストの追加またはテストの変更が選択されている場合)
消去
削除するコンテキストの名前。空ではないかもしれません
はい (ユーザー定義のテストとテストの削除が選択されている場合)
検索ベース
検索するコンテキストまたはオブジェクトの名前
はい、ユーザー定義テストと検索テストが選択されている場合
検索フィルター
検索に使用するフィルター式。null でない可能性があります
はい、ユーザー定義テストと検索テストが選択されている場合
テストを追加
これらの名前のペアを使用して、指定されたコンテキストで新しいオブジェクトを作成します
はい (ユーザー定義テストと追加テストが選択されている場合)
テストを変更する
これらの名前のペアを使用して、指定されたコンテキスト オブジェクトを変更します
はい (ユーザー定義のテストおよびテストの変更が選択されている場合)
^

LDAP 拡張リクエスト

この Sampler は、8 つの異なる LDAP 要求すべてを LDAP サーバーに送信できます。これは LDAP サンプラーの拡張バージョンであるため、設定が難しくなりますが、実際の LDAP セッションに非常に近いものにすることができます。

複数の要求を同じ LDAP サーバーに送信する場合は、 LDAP 要求ごとに同じ情報を入力する必要がないように、 LDAP 拡張要求デフォルト構成要素の使用を検討してください。

LDAP 拡張要求のコントロール パネルのスクリーンショット
LDAP 拡張要求のコントロール パネルのスクリーンショット

9 つのテスト操作が定義されています。これらの操作を以下に示します。

スレッドバインド

LDAP 要求はすべて LDAP セッションの一部であるため、最初に行う必要があるのは、LDAP サーバーへのセッションを開始することです。このセッションを開始するには、スレッド バインドが使用されます。これは、LDAP の「バインド」操作と同じです。ユーザーは、セッションを開始するために使用されるユーザー名(識別名) とパスワードを提供するように要求されます。パスワードが指定されていない場合、または間違ったパスワードが指定されている場合は、匿名セッションが開始されます。パスワードを省略してもこのテストに失敗することはありません。パスワードが間違っていても失敗します。(NB これはテスト計画に暗号化されずに保存されます)

パラメーター

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
サーバー名
LDAP サーバーの名前 (または IP アドレス)。
はい
ポート
LDAP サーバーが listen しているポート番号。これを省略した場合、JMeter は LDAP サーバーがデフォルト ポート (389) でリッスンしていると想定します。
いいえ
DN
後続の操作に使用される基本オブジェクトの識別名。すべての操作の開始点として使用できます。この DN よりも高いレベルで操作を開始することはできません!
いいえ
ユーザー名
バインドするユーザーの完全識別名。
いいえ
パスワード
上記のユーザーのパスワード。省略した場合、匿名バインドになります。正しくない場合、サンプラーはエラーを返し、匿名バインドに戻ります。(NB これはテスト計画に暗号化されずに保存されます)
いいえ
接続タイムアウト (ミリ秒単位)
接続のタイムアウト。超過した場合は接続が中止されます
いいえ
セキュア LDAP プロトコルを使用する
ldap://の代わりにldaps://スキームを使用する
いいえ
すべての証明書を信頼する
すべての証明書を信頼します。[セキュア LDAP プロトコルを使用する]がオンになっている場合にのみ使用されます
いいえ
スレッドアンバインド

これは単にセッションを終了するための操作です。これは、LDAP の「アンバインド」操作と同じです。

パラメーター

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
シングルバインド/アンバインド

これは、LDAP の「バインド」操作と「バインド解除」操作の組み合わせです。これは、任意のユーザーの認証要求/パスワード チェックに使用できます。ユーザーとパスワードの組み合わせの有効性を確認するためだけに、新しいセッションを開き、セッションを再度終了します。

パラメーター

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
ユーザー名
バインドするユーザーの完全識別名。
はい
パスワード
上記のユーザーのパスワード。省略した場合、匿名バインドになります。正しくない場合、サンプラーはエラーを返します。(NB これはテスト計画に暗号化されずに保存されます)
いいえ
エントリの名前を変更

これは、LDAP の「moddn」操作です。エントリの名前を変更するために使用できますが、エントリまたは完全なサブツリーを LDAP ツリー内の別の場所に移動するためにも使用できます。

パラメーター

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
旧エントリー名
スレッド バインド操作で指定された DN に関連する、名前変更または移動するオブジェクトの現在の識別名。
はい
新しい識別名
名前を変更または移動するオブジェクトの新しい識別名。スレッド バインド操作で指定された DN に相対的です。
はい
テストを追加

これが LDAP の「追加」操作です。これを使用して、あらゆる種類のオブジェクトを LDAP サーバーに追加できます。

パラメーター

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
エントリ DN
スレッド バインド操作で指定された DN に関連する、追加するオブジェクトの識別名。
はい
テストを追加
オブジェクトに使用する属性とその値のリスト。複数値の属性を追加する必要がある場合は、同じ属性をそれぞれの値とともにリストに数回追加する必要があります。
はい
テストを削除

これは LDAP の「削除」操作です。LDAP ツリーからオブジェクトを削除するために使用できます。

パラメーター

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
消去
スレッド バインド操作で指定された DN に関連する、削除するオブジェクトの識別名。
はい
検索テスト

これは LDAP の「検索」操作であり、検索の定義に使用されます。

パラメーター

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
検索ベース
スレッド バインド操作で指定された DN に関連する、検索対象のサブツリーの識別名。
いいえ
検索フィルター
searchfilter は、LDAP 構文で指定する必要があります。
はい
範囲
baseobject-には0、onelevel- には1、サブツリー検索には2を使用します。(デフォルト = 0 )
いいえ
サイズ制限
サーバーから返される結果の最大数を指定します。(デフォルト = 0、つまり制限なし。)サンプラーが結果の最大数に達すると、エラーコード4で失敗します。
いいえ
制限時間
サーバーが検索に費やすことができる最大 (CPU) 時間 (ミリ秒単位) を指定します。これは応答時間については何も言っていないことに注意してください。(デフォルトは0で、制限なしを意味します)
いいえ
属性
返す属性をセミコロンで区切って指定します。空のフィールドはすべての属性を返します
いいえ
オブジェクトを返す
オブジェクトが返されるか ( true )、返されないか ( false )。デフォルト = false
いいえ
逆参照エイリアス
true の場合、エイリアスを逆参照します。falseの場合、それらに従いません (デフォルト = false )
いいえ
検索結果を解析しますか?
true の場合、検索結果が応答データに追加されます。falseの場合、結果が見つかったかどうかに関係なく、マーカーが応答データに追加されます。
いいえ
改造試験

これが LDAP の「変更」操作です。オブジェクトの変更に使用できます。属性の値を追加、削除、または置換するために使用できます。

パラメーター

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
エントリー名
スレッド バインド操作で指定された DN に関連する、変更するオブジェクトの識別名
はい
改造試験
attribute-value-opCode のトリプル。opCodeは、任意の有効な LDAP operationCode (
add delete removeまたはreplace )にすることができます。削除操作で 値を指定しない場合、指定された属性のすべての値が削除されます。削除操作で 値を指定すると、指定された値のみが削除されます。 この値が存在しない場合、サンプラーはテストに失敗します。


はい
比較

これが LDAP の「比較」操作です。特定の属性の値を既知の値と比較するために使用できます。実際には、これは主に、特定の人が何らかのグループのメンバーであるかどうかを確認するために使用されます。このような場合、ユーザーの DN を特定の値として、groupOfNamesタイプのオブジェクトの属性「 member 」の値と比較できます。比較操作が失敗した場合、このテストはエラーコード49で失敗します。

パラメーター

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
エントリ DN
スレッド バインド操作で指定された DN に関連する、属性を比較するオブジェクトの現在の識別名。
はい
フィルタを比較
「属性=値」の形式で
はい
^

アクセスログサンプラー

AccessLogSampler は、アクセス ログを読み取り、http 要求を生成するように設計されています。アクセス ログに慣れていない方のために説明すると、アクセス ログとは、ウェブサーバーが受け付けたすべてのリクエストを保持するログです。これは、すべての画像、CSS ファイル、JavaScript ファイル、html ファイルなどを意味します。

Tomcat は、アクセス ログに共通の形式を使用します。これは、共通ログ形式を使用するすべての Web サーバーが AccessLogSampler を使用できることを意味します。一般的なログ形式を使用するサーバーには、Tomcat、Resin、Weblogic、および SunOne が含まれます。一般的なログ形式は次のようになります。

127.0.0.1 - - [21/Oct/2003:05:37:21 -0500] "GET /index.jsp?%2Findex.jsp= HTTP/1.1" 200 8343
パーサーの現在の実装は、HTTP プロトコル メソッド ( GETPUTPOSTDELETEなど) のいずれかを含む引用符内のテキストのみを調べます。それ以外はすべて取り除かれ、無視されます。たとえば、応答コードはパーサーによって完全に無視されます。

将来的には、応答コード200を持たないエントリを除外するとよいでしょう。サンプラーの拡張はかなり簡単です。実装する必要がある 2 つのインターフェイスがあります。

  • org.apache.jmeter.protocol.http.util.accesslog.LogParser
  • org.apache.jmeter.protocol.http.util.accesslog.Generator

AccessLogSampler の現在の実装では、ジェネレーターを使用して新しい HTTPSampler を作成します。サーバー名、ポート、および取得イメージは、AccessLogSampler によって設定されます。次に、整数1を指定してパーサーが呼び出され、 1 つのエントリを解析するように指示されます。その後、 HTTPSampler.sample()を呼び出してリクエストを行います。

サンプル = (HTTPSampler) GENERATOR.generateRequest();
samp.setDomain(this.getDomain());
samp.setPort(this.getPort());
samp.setImageParser(this.isImageParser());
PARSER.parse(1);
res = samp.sample();
res.setSampleLabel(samp.toString());
LogParser で必要なメソッドは次のとおりです。
  • setGenerator(ジェネレータ)
  • パース(整数)

Generatorインターフェイスを 実装するクラスは、すべてのメソッドの具体的な実装を提供する必要があります。いずれかのインターフェースを実装する方法の例については、 StandardGeneratorおよびTCLogParserを参照してください。

Access Log Sampler のコントロール パネルのスクリーンショット
Access Log Sampler のコントロール パネルのスクリーンショット

(ベータコード)

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
サーバ
Web サーバーのドメイン名または IP アドレス。
はい
プロトコル
図式
いいえ (デフォルトは http
ポート
Web サーバーがリッスンしているポート。
いいえ (デフォルトは 80)
ログ パーサー クラス
ログ パーサー クラスは、ログの解析を担当します。
はい (デフォルトで提供)
フィルター
フィルター クラスは、特定の行を除外するために使用されます。
いいえ
ログファイルの場所
アクセスログファイルの場所。
はい

TCLogParser は、スレッドごとに独立してアクセス ログを処理します。SharedTCLogParserOrderPreservingLogParserはファイルへのアクセスを共有します。つまり、各スレッドはログの次のエントリを取得します。

SessionFilterは 、スレッド間で Cookie を処理することを目的としています。エントリを除外するのではなく、特定の IP の Cookie が一度に 1 つのスレッドで処理されるように Cookie マネージャーを変更します。2 つのスレッドが同じクライアント IP アドレスからのサンプルを処理しようとすると、一方は他方が完了するまで待機することを余儀なくされます。

LogFilterは 、アクセス ログ エントリをファイル名と正規表現でフィルタリングし、ファイル拡張子を置換できるようにすることを目的としています。ただし、現時点では GUI から設定することはできないため、実際には使用できません。

^

BeanShell サンプラー

このサンプラーを使用すると、BeanShell スクリプト言語を使用してサンプラーを作成できます。

BeanShell の使用の詳細については、BeanShell の Web サイトを参照してください。

JSR223 Sampler + Groovyへの移行は、パフォーマンス、新しい Java 機能のサポート、および BeanShell ライブラリの限定的なメンテナンスのために強く推奨されます。

テスト要素は、ThreadListenerおよびTestListenerインターフェイス メソッドをサポートします。これらは初期化ファイルで定義する必要があります。定義の例 については、ファイルBeanShellListeners.bshrcを参照してください。

BeanShell サンプラーは、Interruptibleインターフェースもサポートしています。interrupt()メソッドは、スクリプトまたは init ファイルで定義できます。

BeanShell Sampler のコントロール パネルのスクリーンショット
BeanShell Sampler のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。名前はスクリプト変数 Label に格納されます
いいえ
各呼び出しの前に bsh.Interpreter をリセットします
このオプションを選択すると、サンプルごとにインタープリターが再作成されます。これは、一部の長時間実行されるスクリプトで必要になる場合があります。詳細については、「ベスト プラクティス - BeanShell スクリプト」を参照してください。
はい
パラメーター
BeanShell スクリプトに渡すパラメーター。これは、スクリプト ファイルで使用するためのものです。GUI で定義されたスクリプトの場合、スクリプト自体の中で必要な変数と関数の参照を使用できます。パラメータは次の変数に格納されます。
パラメーター
パラメータを単一の変数として含む文字列
bsh.args
パラメータを含む文字列配列、空白で分割
いいえ
スクリプトファイル
実行する BeanShell スクリプトを含むファイル。ファイル名はスクリプト変数FileNameに格納されます
いいえ
脚本
実行する BeanShell スクリプト。戻り値 ( nullでない場合) は、サンプラーの結果として格納されます。
はい(スクリプトファイルが提供されていない場合)
NB 各 Sampler インスタンスには独自の BeanShell インタープリターがあり、Sampler は単一のスレッドからのみ呼び出されます

プロパティ「beanshell.sampler.init」が定義されている場合、ソース ファイルの名前としてインタープリターに渡されます。これは、共通のメソッドと変数を定義するために使用できます。bin ディレクトリにサンプルの初期化ファイルがあります: BeanShellSampler.bshrc

スクリプト ファイルが指定されている場合はそれが使用され、指定されていない場合はスクリプトが使用されます。

JMeter はスクリプト フィールドをインタープリターに渡す前に関数と変数の参照を処理するため、参照は 1 回だけ解決されます。スクリプト ファイル内の変数と関数の参照はそのままインタープリターに渡されるため、構文エラーが発生する可能性があります。ランタイム変数を使用するには、props.get("START.HMS");などの適切な props メソッドを使用してください。props.put("PROP1","1234");
BeanShell は現在、ジェネリックや拡張 for ループなどの Java 5 構文をサポートしていません。

スクリプトを呼び出す前に、いくつかの変数が BeanShell インタープリターに設定されます。

Parameters フィールドの内容は、変数「 Parameters 」に入れられます。また、文字列は区切り文字として 1 つのスペースを使用して個別のトークンに分割され、結果のリストは文字列配列bsh.argsに格納されます。

セットアップされる BeanShell 変数の完全なリストは次のとおりです。

  • log -ロガー
  • Label - サンプラーのラベル
  • FileName - ファイル名 (存在する場合)
  • パラメータ- パラメータ フィールドのテキスト
  • bsh.args - 上記のように分割されたパラメーター
  • SampleResult - 現在のSampleResultへのポインタ
  • ResponseCodeのデフォルトは200 です
  • ResponseMessageのデフォルトは「OK
  • IsSuccessのデフォルトはtrue
  • ctx - JMeterContext
  • vars - JMeterVariables - 例
    vars.get("VAR1");
    vars.put("VAR2","値");
    vars.remove("VAR3");
    vars.putObject("OBJ1",新しいオブジェクト());
  • props - JMeterProperties (クラスjava.util.Properties ) - 例
    props.get("START.HMS");
    props.put("PROP1","1234");

スクリプトが完了すると、制御が Sampler に返され、次のスクリプト変数の内容がSampleResult内の対応する変数にコピーされます。

  • ResponseCode - 例: 200
  • ResponseMessage - 例: 「OK
  • IsSuccess - trueまたはfalse

SampleResult ResponseData は、スクリプトの戻り値から設定されます。スクリプトが null を返す場合、メソッドSampleResult.setResponseData(data)を使用して、応答を直接設定できます 。ここで、データは文字列またはバイト配列のいずれかです。データ型のデフォルトは「テキスト」ですが、メソッドSampleResult.setDataType(SampleResult.BINARY)を使用してバイナリに設定できます 。

SampleResult変数により、スクリプトはSampleResultのすべてのフィールドとメソッドに完全にアクセスできます。たとえば、スクリプトはメソッド setStopThread(boolean)およびsetStopTest(boolean ) にアクセスできます。以下は、単純な (あまり役に立ちません!) サンプル スクリプトです。

if (bsh.args[0].equalsIgnoreCase("StopThread")) {
    log.info("停止スレッドが検出されました!");
    SampleResult.setStopThread(true);
}
「ラベル付きのサンプルからのデータ」+ラベルを返します。
//また
SampleResult.setResponseData("マイデータ");
null を返します。

別の例:
プロパティbeanshell.sampler.init=BeanShellSampler.bshrcがjmeter.propertiesで定義されていることを確認します。次のスクリプトは、 ResponseDataフィールド のすべての変数の値を表示します。

getVariables(); を返します。

さまざまなクラス ( JMeterVariablesSampleResultなど) で 使用できるメソッドの詳細については、Javadoc またはソース コードを確認してください。ただし、メソッドを誤用すると、見つけにくい微妙な障害が発生する可能性があることに注意してください。

^

JSR223 サンプラー

JSR223 Sampler を使用すると、JSR223 スクリプト コードを使用して、変数の作成/更新に必要なサンプルまたは計算を実行できます。

このサンプラーの実行時に SampleResult を生成したくない場合は、次のメソッドを呼び出します。
SampleResult.setIgnore();
この呼び出しには、次の影響があります。
  • SampleResult は、View Results Tree、Summariser などの SampleListeners には配信されません。
  • SampleResult はアサーションでもポストプロセッサでも評価されません
  • SampleResult は、最後のサンプル ステータス (${JMeterThread.last_sample_ok}) を計算するために評価され、ThreadGroup の「Sampler エラー後に実行されるアクション」(JMeter 5.4 以降)

JSR223 テスト要素には、パフォーマンスを大幅に向上させる機能 (コンパイル) があります。この機能を活用するには:

  • インライン化する代わりに、スクリプト ファイルを使用します。この機能が ScriptEngine で利用可能な場合、JMeter はそれらをコンパイルし、キャッシュします。
  • または、スクリプト テキストを使用し、[利用可能な場合はコンパイル済みスクリプトをキャッシュする]プロパティをオンにします。
    この機能を使用する場合は、スクリプト コードで JMeter 変数または JMeter 関数呼び出しをスクリプト コードで直接使用しないようにしてください。キャッシュは最初の置換のみをキャッシュするためです。代わりにスクリプト パラメータを使用します。
    キャッシングとコンパイルの恩恵を受けるには、スクリプトに使用される言語エンジンが JSR223 Compilableインターフェースを実装する必要があります (Groovy はこれらの 1 つですが、java、beanshell、javascript はそうではありません)。
    Groovy をスクリプト言語として使用し、利用可能な場合はコンパイル済みスクリプトをキャッシュするをチェックしない場合(キャッシュが推奨されます)、 バージョン 2.4.6 での Groovy メモリ リークのため、 この JVM プロパティ-Dgroovy.use.classvalue=trueを設定する必要があります。以下を参照してください。
キャッシュ サイズは、次の JMeter プロパティ ( jmeter.properties ) によって制御されます。
jsr223.compiled_scripts_cache_size=100
BeanShell Samplerとは異なり、インタープリターは呼び出し間で保存されません。
ScriptEngine がこの機能をサポートしている場合、 スクリプト ファイルまたはスクリプト テキストを使用する JSR223 テスト要素 +有効な場合はコンパイル済みスクリプトをキャッシュするをチェックすると、コンパイルされるようになりました。これにより、パフォーマンスが大幅に向上します。
JSR223 サンプラーのコントロール パネルのスクリーンショット
JSR223 サンプラーのコントロール パネルのスクリーンショット
JMeter はスクリプト フィールドをインタープリターに渡す前に関数と変数の参照を処理するため、参照は 1 回だけ解決されます。スクリプト ファイル内の変数と関数の参照はそのままインタープリターに渡されるため、構文エラーが発生する可能性があります。ランタイム変数を使用するには、適切な props メソッドを使用してください。
props.get("START.HMS");
props.put("PROP1","1234");

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
スクリプト言語
使用する JSR223 スクリプト言語の名前。
ドロップダウン リストに表示される言語以外にも、サポートされている言語があります。適切な jar が JMeter lib ディレクトリにインストールされている場合は、他のものを使用できる場合があります。
Velocity などの一部の言語では、JSR223 変数に異なる構文を使用する場合があることに注意してください。
$log.debug("こんにちは" + $vars.get("a"));
ベロシティ用。
はい
スクリプト ファイル
JSR223 スクリプトとして使用されるファイルの名前。相対ファイル パスが使用されている場合は、「user.dir」システム プロパティによって参照されるディレクトリからの相対パスになります。
いいえ
パラメーター
スクリプト ファイルまたはスクリプトに渡されるパラメータのリスト。
いいえ
利用可能な場合はコンパイル済みスクリプトをキャッシュする
オン(推奨) で、使用する言語がCompilableインターフェイスをサポートしている場合 (Groovy はこれらの 1 つですが、java、beanshell、javascript はサポートしていません)、JMeter はスクリプトをコンパイルし、その MD5 ハッシュを一意のキャッシュ キーとして使用してキャッシュします。
いいえ
脚本
JSR223 言語に渡されるスクリプト
はい(スクリプトファイルが提供されていない場合)

スクリプト ファイルが指定されている場合はそれが使用され、指定されていない場合はスクリプトが使用されます。

スクリプトを呼び出す前に、いくつかの変数が設定されます。これらは JSR223 変数であることに注意してください。つまり、スクリプトで直接使用できます。

  • log -ロガー
  • Label - サンプラーのラベル
  • FileName - ファイル名 (存在する場合)
  • パラメータ- パラメータ フィールドのテキスト
  • args - 上記のように分割されたパラメータ
  • SampleResult - 現在のSampleResultへのポインタ
  • sampler - ( Sampler ) - 現在の Sampler へのポインタ
  • ctx - JMeterContext
  • vars - JMeterVariables - 例
    vars.get("VAR1");
    vars.put("VAR2","値");
    vars.remove("VAR3");
    vars.putObject("OBJ1",新しいオブジェクト());
  • props - JMeterProperties (クラスjava.util.Properties ) - 例
    props.get("START.HMS");
    props.put("PROP1","1234");
  • OUT - System.out - 例: OUT.println("message")

SampleResult ResponseData は、スクリプトの戻り値から設定されますスクリプトがnullを返す場合、メソッドSampleResult.setResponseData(data)を使用して、応答を直接設定でき ます。ここで、 data は文字列またはバイト配列です。データ型のデフォルトは「テキスト」ですが、メソッドSampleResult.setDataType(SampleResult.BINARY)を使用してバイナリに設定できます 。

SampleResult 変数により、スクリプトは SampleResult のすべてのフィールドとメソッドに完全にアクセスできます。たとえば、スクリプトはメソッド setStopThread(boolean)およびsetStopTest(boolean ) にアクセスできます。

BeanShell サンプラーとは異なり、JSR223 サンプラーは、スクリプト変数を介してResponseCodeResponseMessage、およびサンプル ステータスを設定しません。現在、これらを変更する唯一の方法は、SampleResultメソッドを使用することです。

  • SampleResult.setSuccessful(真/偽)
  • SampleResult.setResponseCode("コード")
  • SampleResult.setResponseMessage("メッセージ")
^

TCP サンプラー

TCP サンプラーは、指定されたサーバーへの TCP/IP 接続を開きます。次に、テキストを送信し、応答を待ちます。

[接続の再利用] が選択されている場合、まったく同じホスト名文字列とポートが使用されている場合、接続は同じスレッド内のサンプラー間で共有されます。異なるホスト/ポートの組み合わせは、異なるスレッドと同様に、異なる接続を使用します。「接続の再利用」と「接続のクローズ」の両方が選択されている場合、サンプラーの実行後にソケットがクローズされます。次のサンプラーでは、別のソケットが作成されます。各スレッド ループの最後でソケットを閉じたい場合があります。

エラーが検出された場合、または「接続の再利用」が選択されていない場合、ソケットは閉じられます。次のサンプルで別のソケットが再度開かれます。

次のプロパティを使用して、その操作を制御できます。

tcp.status.prefix
ステータス番号の前のテキスト
tcp.status.suffix
ステータス番号に続くテキスト
tcp.status.properties
ステータス コードをメッセージに変換するプロパティ ファイルの名前
tcp.handler
TCP ハンドラー クラスの名前 (デフォルトTCPClientImpl ) - GUI で指定されていない場合にのみ使用されます。
接続を処理するクラスは GUI によって定義され、プロパティtcp.handlerに失敗します。見つからない場合、クラスはパッケージorg.apache.jmeter.protocol.tcp.samplerで検索されます。

ユーザーは独自の実装を提供できます。クラスはorg.apache.jmeter.protocol.tcp.sampler.TCPClientを拡張する必要があります。

現在、以下の実装が提供されています。

  • TCPClientImpl
  • BinaryTCPClientImpl
  • LengthPrefixedBinaryTCPClientImpl
実装は次のように動作します。
TCPClientImpl
この実装はかなり基本的なものです。応答を読み取るとき、これがプロパティtcp.eolByteの設定によって定義されている場合は行バイトの終わりまで、それ以外の場合は入力ストリームの終わりまで読み取ります。tcp.charsetを設定することにより、文字セットのエンコーディングを制御できます。これは、デフォルトでプラットフォームのデフォルトのエンコーディングになります。
BinaryTCPClientImpl
この実装は、16 進数でエンコードされた文字列でなければならない GUI 入力をバイナリに変換し、応答を読み取るときにその逆を実行します。応答を読み取るとき、これがプロパティtcp.BinaryTCPClient.eomByteを設定して定義されている場合は、メッセージ バイトの最後まで読み取ります。それ以外の場合は、入力ストリームの最後まで読み取ります。
LengthPrefixedBinaryTCPClientImpl
この実装は、バイナリ メッセージ データにバイナリ長バイトをプレフィックスとして付けることにより、BinaryTCPClientImpl を拡張します。長さプレフィックスのデフォルトは 2 バイトです。これは、プロパティtcp.binarylength.prefix.lengthを設定することで変更できます。
タイムアウト処理
タイムアウトが設定されている場合、タイムアウトになると読み取りが終了します。したがって、eolByte / eomByteを使用している場合は、タイムアウトが十分に長いことを確認してください。そうしないと、読み取りが早期に終了します。
応答処理
tcp.status.prefixが定義されている 場合は、応答メッセージで、それに続くサフィックスまでのテキストが検索されます。そのようなテキストが見つかった場合は、それを使用して応答コードを設定します。次に、応答メッセージがプロパティー・ファイル (提供されている場合) からフェッチされます。
プレとサフィックスの使用
たとえば、接頭辞 = " [ " および接尾辞 = " ] " の場合、次の応答:
[J28] XI123,23,GBP,CR
応答コードはJ28になります。
" 400 "-" 499 " および " 500 "-" 599 " の範囲の応答コードは、現在、失敗と見なされます。他のすべては成功しています。[これは設定可能にする必要があります!]
ログイン名/パスワードは、提供された TCP 実装では使用されません。

テスト実行の最後にソケットが切断されます。
TCP Sampler のコントロール パネルのスクリーンショット
TCP Sampler のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
TCPClient クラス名
TCPClient クラスの名前。プロパティtcp.handlerにデフォルト設定され、そのTCPClientImplに失敗します。
いいえ
サーバー名または IP
TCP サーバーの名前または IP
はい
ポート番号
使用するポート
はい
再利用接続
選択した場合、接続は開いたままになります。それ以外の場合は、データが読み取られたときに閉じられます。
はい
接続を閉じる
選択すると、サンプラーの実行後に接続が閉じられます。
はい
SO_LINGER
ソケットの作成時に指定されたリンガー時間 (秒単位) でSO_LINGERを有効/無効にします。「SO_LINGER」の値を0に設定すると、多数のソケットがTIME_WAITステータスで待機するのを防ぐことができます。
いいえ
行末 (EOL) バイト値
行末のバイト値。これを-128から+127の範囲外の値に設定して、 eolチェックをスキップします。これはjmeter.propertiesファイルとeolByteプロパティで設定できます。これを TCP Sampler Config とjmeter.propertiesファイルで同時に設定すると、TCP Sampler Config の設定値が使用されます。
いいえ
接続タイムアウト
接続タイムアウト (ミリ秒、0は無効)。
いいえ
応答タイムアウト
応答タイムアウト (ミリ秒、0は無効)。
いいえ
NoDelay を設定する
java.net.Socket.setTcpNoDelay()を参照してください。選択すると Nagle のアルゴリズムが無効になり、選択しない場合は Nagle のアルゴリズムが使用されます。
はい
送信するテキスト
送信するテキスト
はい
ログインユーザー
ユーザー名 - デフォルトの実装では使用されません
いいえ
パスワード
パスワード - デフォルトの実装では使用されません (注: これは暗号化されずにテスト計画に保存されます)
いいえ
^

JMS パブリッシャー

JMS パブリッシャーは、指定された宛先 (トピック/キュー) にメッセージをパブリッシュします。JMS に慣れていない方のために説明すると、JMS はメッセージング用の J2EE 仕様です。市場には多数の JMS サーバーがあり、いくつかのオープン ソース オプションがあります。


JMeter には JMS 実装 jar が含まれていません。これは、JMS プロバイダーからダウンロードして、lib ディレクトリに配置する必要があります。
JMS パブリッシャーのコントロール パネルのスクリーンショット
JMS パブリッシャーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
JNDI プロパティ ファイルを使用する
jndi.propertiesを使用します。user.classpath JMeter プロパティを更新するなどして、ファイルがクラスパス上にある必要があることに注意してください。このオプションが選択されていない場合、JMeter は「JNDI Initial Context Factory」および「Provider URL」フィールドを使用して接続を作成します。
はい
JNDI 初期コンテキスト ファクトリ
コンテキスト ファクトリの名前
いいえ
プロバイダーの URL
JMS プロバイダーの URL
はい、jndi.properties を使用しない限り
行き先
メッセージの宛先 (トピックまたはキュー名)
はい
設定
宛先セットアップ タイプ。At startupでは、宛先名は静的です (つまり、テスト中は常に同じ名前です)。Each sampleでは、宛先名は動的で、各サンプルで評価されます (つまり、宛先名は変数の場合があります)。
はい
認証
JMS プロバイダーの認証要件
はい
ユーザー
ユーザー名
いいえ
パスワード
パスワード (注: これは暗号化されずにテスト計画に保存されます)
いいえ
有効期限
メッセージが廃止されるまでの有効期限 (ミリ秒単位)。有効期限を指定しない場合、デフォルト値は0 (無期限) です。
いいえ
優先順位
メッセージの優先度。0 (最低) から9 (最高)までの 10 の優先度レベルがあります。優先度レベルを指定しない場合、デフォルトのレベルは4です。
いいえ
エラー コードで再接続する (正規表現)
再接続を強制する JMSException エラー コードの正規表現。空の場合、再接続は行われません
いいえ
集計するサンプル数
集計するサンプル数
はい
メッセージソース
メッセージの入手先:
ファイルから
参照ファイルがすべてのサンプルによって読み取られ、再利用されることを意味します。JMeter 3.0以降、ファイル名が変更された場合は再ロードされます
以下で指定されたフォルダからのランダムファイル
以下で指定されたフォルダーからランダムなファイルが選択されることを意味します。このフォルダーには、バイト メッセージ用の拡張子.datを持つファイル、またはオブジェクトまたはテキスト メッセージ用の拡張子.txtまたは.objを持つファイルのいずれかが含まれている必要があります。
テキストエリア
Text または Object メッセージのいずれかに使用する Message
はい
メッセージタイプ
テキスト、マップ、オブジェクト メッセージまたはバイト メッセージ
はい
コンテンツのエンコーディング
メッセージ ソース ファイルを読み取るためのエンコーディングを指定します。
:
ファイルから変数をサポートせず、デフォルトのシステム文字セットでロードします。
デフォルト:
XML プロローグに依存する XML を除き、デフォルトのシステム エンコーディングでファイルをロードします。ファイルに変数が含まれている場合は、それらが処理されます。
標準文字セット:
指定されたエンコーディング (有効または無効) は、ファイルの読み取りと変数の処理に使用されます
はい
非永続配信モードを使用しますか?
DeliveryMode.NON_PERSISTENT を設定するかどうか(デフォルトはfalse )
いいえ
JMS プロパティ
JMS プロパティは、基礎となるメッセージング システムに固有のプロパティです。値の名前、値、およびクラス (タイプ) を設定できます。デフォルトの型はStringです。例: WebSphere 5.1 Web サービスの場合、JMS プロパティ targetService を設定して、JMS を介して Web サービスをテストする必要があります。
いいえ

MapMessage タイプの場合、JMeter はソースをテキスト行として読み取ります。各行には、コンマで区切られた 3 つのフィールドが必要です。フィールドは次のとおりです。

  • エントリー名
  • オブジェクト クラス名、たとえば " String " (指定されていない場合はjava.langパッケージを想定)
  • オブジェクト文字列値
valueOf(文字列)
名前,文字列,例
サイズ、整数、1234
Object メッセージは次のように実装され、機能します。
  • オブジェクトとその依存関係を含む JAR をjmeter_home/lib/フォルダーに配置します
  • XStream を使用してオブジェクトを XML としてシリアライズする
  • 拡張子が.txtまたは.objのファイルに結果を入れるか、XML コンテンツを直接テキスト領域に入れます。
メッセージがファイル内にある場合、プロパティの置換は発生しませんが、テキスト エリアを使用した場合は発生することに注意してください。

次の表に、JMS を構成するときに役立つ可能性がある値をいくつか示します。

アパッチアクティブMQ コメント
コンテキスト ファクトリーorg.apache.activemq.jndi.ActiveMQInitialContextFactory.
プロバイダーの URLvm://localhost
プロバイダーの URLvm:(ブローカー:(vm://localhost)?persistent=false)持続性を無効にする
キュー リファレンスdynamicQueues/QUEUENAME QUEUENAME を JNDI に動的に定義する
トピック リファレンスdynamicTopics/トピック名 TOPICNAME を JNDI に動的に定義する
^

JMS サブスクライバー

JMS サブスクライバーは、指定された宛先 (トピックまたはキュー) のメッセージにサブスクライブします。JMS に慣れていない方のために説明すると、JMS はメッセージング用の J2EE 仕様です。市場には多数の JMS サーバーがあり、いくつかのオープン ソース オプションがあります。


JMeter には JMS 実装 jar が含まれていません。これは、JMS プロバイダーからダウンロードして、lib ディレクトリに配置する必要があります。
JMS サブスクライバーのコントロール パネルのスクリーンショット
JMS サブスクライバーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
JNDI プロパティ ファイルを使用する
jndi.propertiesを使用します。user.classpath JMeter プロパティを更新するなどして、ファイルがクラスパス上にある必要があることに注意してください。このオプションが選択されていない場合、JMeter は「JNDI Initial Context Factory」および「Provider URL」フィールドを使用して接続を作成します。
はい
JNDI 初期コンテキスト ファクトリ
コンテキスト ファクトリの名前
いいえ
プロバイダーの URL
JMS プロバイダーの URL
いいえ
行き先
メッセージの宛先 (トピックまたはキュー名)
はい
恒久サブスクリプション ID
永続サブスクリプションに使用する ID。最初の使用時に、それぞれのキューがまだ存在しない場合は、JMS プロバイダーによって自動的に生成されます。
いいえ
クライアントID
永続サブスクリプションを使用するときに使用するクライアント ID。複数のスレッドがある場合は、必ず${__threadNum}のような変数を追加してください。
いいえ
JMS セレクター
セレクター条件を尊重するメッセージのみを抽出する、JMS 仕様で定義されたメッセージ セレクター。構文は SQL 92 のサブパートを使用します。
いいえ
設定
宛先セットアップ タイプ。At startupでは、宛先名は静的です (つまり、テスト中は常に同じ名前です)。Each sampleでは、宛先名は動的で、サンプルごとに評価されます (つまり、宛先名は変数の場合があります)。
はい
認証
JMS プロバイダーの認証要件
はい
ユーザー
ユーザー名
いいえ
パスワード
パスワード (注: これは暗号化されずにテスト計画に保存されます)
いいえ
集計するサンプル数
集約するサンプル数
はい
返信を保存
サンプラーが応答を保存する必要があります。そうでない場合は、応答の長さだけが返されます。
はい
タイムアウト
適用するタイムアウトをミリ秒単位で指定します。0 = なし。これは、サンプルごとではなく、全体的な集計タイムアウトです。
はい
クライアント
使用するクライアント実装。どちらも、メッセージを読み取ることができる接続を作成します。ただし、以下に説明するように、異なる戦略を使用します。
MessageConsumer.receive()
要求されたメッセージごとにreceive()を呼び出します。サンプル間の接続を保持しますが、サンプラーがアクティブでない限りメッセージをフェッチしません。これは、キュー サブスクリプションに最適です。
MessageListener.onMessage()
すべての着信メッセージをキューに格納する Listener を確立します。サンプラーが完了した後も、リスナーはアクティブなままです。これは、トピック サブスクリプションに最適です。
はい
サンプル間で停止しますか?
選択すると、JMeter は各サンプルの最後にConnection.stop()を呼び出します (さらに、各サンプルの前にstart()を呼び出します)。これは、複数のサンプル/スレッドが同じキューに接続している場合に役立ちます。選択されていない場合、JMeter はスレッドの開始時にConnection.start()を呼び出し、スレッドの終了まで stop()を呼び出しません。
はい
セパレーター
メッセージが複数ある場合にメッセージを区切るために使用されるセパレーター (集約するサンプル数の設定に関連)。\n\r\tが受け入れられる ことに注意してください。
いいえ
エラー コードで再接続する (正規表現)
再接続を強制する JMSException エラー コードの正規表現。空の場合、再接続は行われません
いいえ
エラー間の一時停止 (ミリ秒)
エラーが発生したときにサブスクライバーが行うミリ秒単位の一時停止
いいえ
^

JMS ポイントツーポイント

このサンプラーは、ポイントツーポイント接続 (キュー) を介して JMS メッセージを送信し、オプションで受信します。pub/sub メッセージとは異なり、通常はトランザクションの処理に使用されます。

request_onlyは通常、JMS システムに負荷をかけるために使用されます。
request_replyは、リクエスト キューに送信されたメッセージを処理する JMS サービスの応答時間をテストする場合に使用します。このモードは、このサービスによって送信された応答キューで応答を待機するためです。
Browseは、現在のキューの深さ、つまりキューにあるメッセージの数を返します。
readは、キューからメッセージを読み取ります (存在する場合)。
clearは、キューをクリアします。つまり、キューからすべてのメッセージを削除します。

JMeter は、プロパティjava.naming.security.[principal|credentials] (存在する場合) を使用して、キュー接続を作成します。この動作が望ましくない場合は、JMeter プロパティ JMSSampler.useSecurity.properties=falseを設定します。


JMeter には JMS 実装 jar が含まれていません。これは、JMS プロバイダーからダウンロードして、lib ディレクトリに配置する必要があります。
JMS Point-to-Point のコントロール パネルのスクリーンショット
JMS Point-to-Point のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
QueueConnection ファクトリ
メッセージング システムへの接続に使用するキュー接続ファクトリの JNDI 名。
はい
JNDI 名要求キュー
これは、メッセージが送信されるキューの JNDI 名です。
はい
JNDI 名応答キュー
受信キューの JNDI 名。ここに値が指定され、通信スタイルがRequest Responseである場合、 このキューは送信された要求への応答を監視されます。
いいえ
集計するサンプル数
集約するサンプル数。Communication style Read にのみ適用されます。
はい
JMS セレクター
セレクター条件を尊重するメッセージのみを抽出する、JMS 仕様で定義されたメッセージ セレクター。構文は SQL 92 のサブパートを使用します。
いいえ
コミュニケーションスタイル
コミュニケーション スタイルは、リクエストのみ(ファイア アンド フォーゲットとも呼ばれます)、リクエスト レスポンス読み取りブラウズクリアのいずれかです。
リクエストのみ
メッセージを送信するだけで、返信を監視しません。そのため、システムに負荷をかけるために使用できます。
リクエストレスポンス
メッセージを送信し、受信した返信を監視します。動作は、JNDI Name Reply Queue の値によって異なります。JNDI Name Reply Queue に値がある場合、このキューを使用して結果を監視します。要求と応答の照合は、要求のメッセージ ID と応答の相関 ID を使用して行われます。JNDI Name Reply Queue が空の場合、リクエスタとサーバー間の通信に一時キューが使用されます。これは、固定応答キューとは大きく異なります。一時キューでは、応答メッセージが受信されるまで送信スレッドがブロックされます。Request Responseモードでは、Request Queue に送信されたメッセージをリッスンし、message.getJMSReplyTo()によって参照されるキューに応答を送信するサーバーが必要です。
読んだ
リスナーがアタッチされていない送信キューからメッセージを読み取ります。これは、テスト目的で便利です。このメソッドは、バインディング ファイルなしでキューを処理する必要がある場合 (jmeter-jms-skip-jndi ライブラリが使用されている場合) に使用できます。これは、JMS Point-to-Point サンプラーでのみ機能します。バインディング ファイルを使用する場合は、JMS サブスクライバー サンプラーを使用してキューから読み取ることもできます。
ブラウズ
は、キューからメッセージを削除せずに現在のキューの深さを判断し、キューにあるメッセージの数を返します。
クリア
キューをクリアします。つまり、キューからすべてのメッセージを削除します。
はい
メッセージ相関に代替フィールドを使用する
これらのチェックボックスは、応答メッセージを元の要求と一致させるために使用されるフィールドを選択します。
リクエスト メッセージ ID を使用
選択すると、リクエスト JMSMessageID が使用されます。それ以外の場合は、リクエスト JMSCorrelationID が使用されます。後者の場合、リクエストで相関 ID を指定する必要があります。
応答メッセージ ID を使用
選択すると、応答 JMSMessageID が使用されます。それ以外の場合は、応答 JMSCorrelationID が使用されます。
よく使用される 2 つの JMS 相関パターンがあります。
JMS 相関 ID パターン
つまり、相関 ID でリクエストと応答を一致させる => 両方のチェックボックスを選択解除し、相関 ID を指定します。
JMS メッセージ ID パターン
つまり、リクエスト メッセージ ID とレスポンス相関 ID を一致させる => [リクエスト メッセージ ID を使用] のみを選択します。
どちらの場合も、必要に応じて相関 ID を設定するのは JMS アプリケーションの役割です。
メッセージの送受信に同じキューが使用される場合、応答メッセージは要求メッセージと同じになります。その場合、相関 ID を指定し、両方のチェックボックスをオフにします。または、両方のチェックボックスを選択して、関連付けにメッセージ ID を使用します。これは、生の JMS スループットをチェックするのに役立ちます。
はい
タイムアウト
応答メッセージのミリ秒単位のタイムアウト。指定された時間内に応答が受信されなかった場合、特定のテストケースは失敗し、タイムアウト後に受信された特定の応答メッセージは破棄されます。デフォルト値は2000ミリ秒です。0はタイムアウトなしを意味します。
はい
有効期限
メッセージが廃止されるまでの有効期限 (ミリ秒単位)。有効期限を指定しない場合、デフォルト値は0 (無期限) です。
いいえ
優先順位
メッセージの優先度。0 (最低) から9 (最高)までの 10 の優先度レベルがあります。優先度レベルを指定しない場合、デフォルトのレベルは4です。
いいえ
非永続配信モードを使用しますか?
DeliveryMode.NON_PERSISTENT を設定するかどうか。
はい
コンテンツ
メッセージの内容。
いいえ
JMS プロパティ
JMS プロパティは、基礎となるメッセージング システムに固有のプロパティです。値の名前、値、およびクラス (タイプ) を設定できます。デフォルトの型はStringです。例: WebSphere 5.1 Web サービスの場合、JMS プロパティ targetService を設定して、JMS を介して Web サービスをテストする必要があります。
いいえ
初期コンテキスト ファクトリ
初期コンテキスト ファクトリは、JMS リソースのルックアップに使用されるファクトリです。
いいえ
JNDI プロパティ
JNDI プロパティは、基礎となる JNDI 実装の特定のプロパティです。
いいえ
プロバイダーの URL
JMS プロバイダーの URL。
いいえ
^

JUnit リクエスト

現在の実装では、標準の JUnit 規則と拡張機能がサポートされています。また、 oneTimeSetUponeTimeTearDownなどの拡張機能も含まれています。サンプラーは Java Requestと同じように機能しますが、いくつかの違いがあります。
  • JMeter のテスト インターフェイスを使用するのではなく、JUnit のTestCaseクラスを拡張するクラスの jar ファイルをスキャンします。これには、任意のクラスまたはサブクラスが含まれます。
  • JUnit テスト jar ファイルは、 /libディレクトリではなくjmeter/lib/junitに配置する必要があります。「 user.classpath 」プロパティを使用して、 TestCaseクラスを探す場所を指定することもできます。
  • JUnit サンプラーは、 Java Requestのような構成に名前と値のペアを使用しません。サンプラーは、 setUptearDownがテストを正しく構成すると想定しています。
  • サンプラーはテスト メソッドの経過時間のみを測定し、setUptearDownは含まれません。
  • テスト メソッドが呼び出されるたびに、JMeter は結果をリスナーに渡します。
  • oneTimeSetUponeTimeTearDownのサポートはメソッドとして行われます。JMeter はマルチスレッドであるため、Maven と同じ方法でoneTimeSetUp / oneTimeTearDownを呼び出すことはできません。
  • サンプラーは、予期しない例外をエラーとして報告します。標準の JUnit テスト ランナーと JMeter の実装の間には、いくつかの重要な違いがあります。テストごとにクラスの新しいインスタンスを作成するのではなく、JMeter はサンプラーごとに 1 つのインスタンスを作成し、それを再利用します。これは、チェックボックス「サンプルごとに新しいインスタンスを作成する」で変更できます。
サンプラーの現在の実装では、最初に文字列コンストラクターを使用してインスタンスを作成しようとします。テスト クラスで文字列コンストラクターが宣言されていない場合、サンプラーは空のコンストラクターを探します。以下の例:
JUnit コンストラクタ
空のコンストラクタ:
パブリック クラス myTestCase {
  public myTestCase() {}
}
文字列コンストラクタ:
パブリック クラス myTestCase {
  public myTestCase(文字列テキスト) {
    スーパー(テキスト);
  }
}
デフォルトでは、JMeter は成功/失敗のコードとメッセージにいくつかのデフォルト値を提供します。ユーザーは、一意の成功コードと失敗コードのセットを定義し、すべてのテストで均一に使用する必要があります。

一般的なガイドライン

setUpTeaDown を使用する場合は、メソッドがパブリックに宣言されていることを確認してください。そうしないと、テストが正しく実行されない可能性があります。
ここでは、JUnit テストを作成して JMeter とうまく連携させるための一般的なガイドラインをいくつか示します。JMeter はマルチスレッドで実行されるため、いくつかの点に留意することが重要です。
  • スレッド セーフになるように、setUpメソッドとTeaDownメソッドを記述します。これは通常、静的メンバーの使用を避けることを意味します。
  • テスト メソッドは、長い一連のアクションではなく、個別の作業単位にします。テスト方法を個別の操作に保つことで、テスト方法を組み合わせて新しいテスト計画を作成しやすくなります。
  • テスト メソッドを相互に依存させることは避けてください。JMeter ではテスト メソッドを任意に順序付けできるため、実行時の動作はデフォルトの JUnit の動作とは異なります。
  • テスト メソッドが構成可能な場合は、プロパティの保存場所に注意してください。Jar ファイルからプロパティを読み取ることをお勧めします。
  • 各サンプラーはテスト クラスのインスタンスを作成するため、セットアップがoneTimeSetUponeTimeTearDownで行われるようにテストを記述します。
JUnit リクエストのコントロール パネルのスクリーンショット
JUnit リクエストのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
JUnit4 アノテーションの検索
JUnit4 テスト ( @Testアノテーション)を検索するには、これを選択します。
はい
パッケージ フィルター
表示するパッケージのカンマ区切りリスト。例、org.apache.jmeterjunit.framework
クラス名
JUnit テスト クラスの完全修飾名。
はい
コンストラクタ文字列
文字列コンストラクターへの文字列パス。文字列が設定されている場合、サンプラーは空のコンストラクターの代わりに文字列コンストラクターを使用します。
試験方法
テストするメソッド。
はい
成功メッセージ
成功の意味を示す説明メッセージ。
成功コード
テストが成功したことを示す一意のコード。
失敗メッセージ
失敗の意味を示す説明メッセージ。
失敗コード
テストが失敗したことを示す一意のコード。
エラーメッセージ
エラーの説明。
エラーコード
エラーのコード。一意である必要はありません。
setUpとtearDownを呼び出さないでください
setUptearDownを呼び出さないようにサンプラーを設定します。デフォルトでは、setUpTeaDownを呼び出す必要があります。これらのメソッドを呼び出さないと、テストに影響を与え、不正確になる可能性があります。このオプションは、oneTimeSetUpおよびoneTimeTearDownの呼び出しでのみ使用する必要があります。選択したメソッドがoneTimeSetUpまたはoneTimeTearDownの場合、このオプションをオンにする必要があります。
はい
アサーション エラーを追加
応答メッセージにアサーション エラーを追加するかどうか。
はい
実行時例外を追加する
応答メッセージに実行時例外を追加するかどうか。[アサーション エラーを追加] が選択されていない場合にのみ適用されます。
はい
サンプルごとに新しいインスタンスを作成する
サンプルごとに新しい JUnit インスタンスを作成するかどうか。デフォルトは false で、JUnit TestCaseが作成されて再利用されることを意味します。
はい

次の JUnit4 アノテーションが認識されます。

@テスト
テストメソッドとクラスを見つけるために使用されます。" expected " および " timeout " 属性がサポートされています。
@前
JUnit3のsetUp()と同じ扱い
@後
JUnit3のtearDown ()と同じ扱い
@BeforeClass@AfterClass
必要に応じて独立して実行できるように、テスト メソッドとして扱われます。
JMeter は現在、テスト メソッドを JUnit に任せるのではなく、直接実行していることに注意してください。これは、setUp / tearDownメソッドをサンプル時間から除外できるようにするためです。結果として、サンプラーの時間には、setUp / tearDownメソッドとそれらのアノテーション ベースの代替手段を呼び出すのにかかる時間が除外されます。
^

メールリーダーサンプラー

Mail Reader Sampler は、POP3(S) または IMAP(S) プロトコルを使用してメール メッセージを読み取る (およびオプションで削除する) ことができます。

メール リーダー サンプラーのコントロール パネルのスクリーンショット
メール リーダー サンプラーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
サーバーの種類
プロバイダが使用するプロトコル: pop3pop3simapimaps など。またはサーバープロトコルを表す別の文字列。たとえば、読み取り専用のメール ファイル プロバイダーで使用するファイルPOP3 と IMAP の実際のプロバイダー名はpop3imapです。
はい
サーバ
サーバーのホスト名または IP アドレス。ファイルプロトコルでの使用については、以下を参照してください。
はい
ポート
サーバーへの接続に使用するポート (オプション)
いいえ
ユーザー名
ユーザーのログイン名
パスワード
ユーザー・ログイン・パスワード (注: これは暗号化されずにテスト計画に保管されます)
フォルダ
使用する IMAP(S) フォルダー。ファイルプロトコルでの使用については、以下を参照してください。
はい、IMAP(S) を使用している場合
取得するメッセージの数
すべてまたは一部のメッセージを取得するには、これを設定します
はい
ヘッダーのみを取得する
選択すると、メッセージ ヘッダーのみが取得されます。
はい
サーバーからメッセージを削除する
設定すると、取得後にメッセージが削除されます
はい
MIME を使用してメッセージを保存する
メッセージを MIME として保存するかどうか。その場合、生のメッセージ全体が応答データに格納されます。ヘッダーはデータで使用できるため、保存されません。そうでない場合、メッセージ ヘッダーは応答ヘッダーとして保存されます。本文には、 いくつかのヘッダー ( DateToFromSubject ) が格納されます。
はい
セキュリティ機能を使用しない
サーバーへの接続でセキュリティ プロトコルを使用しないことを示します。
SSL を使用する
サーバーへの接続で SSL プロトコルを使用する必要があることを示します。
StartTLS を使用する
サーバーへの接続で TLS プロトコルの開始を試行する必要があることを示します。
StartTLS を強制する
サーバーが TLS プロトコルを開始しない場合、接続は終了します。
すべての証明書を信頼する
選択すると、CA に依存しないすべての証明書を受け入れます。
ローカルのトラストストアを使用する
選択すると、ローカルで信頼されている証明書のみが受け入れられます。
ローカルのトラストストア
信頼できる証明書を含むファイルへのパス。相対パスは、現在のディレクトリに対して解決されます。
それができない場合は、テスト スクリプト (JMX ファイル) を含むディレクトリに対して。
ここで説明するプロパティのいずれかをuser.propertiesに追加することで、メール関連の環境プロパティを渡すことができます。

メッセージは、メイン サンプラーのサブサンプルとして格納されます。マルチパート メッセージ パーツは、メッセージのサブサンプルとして格納されます。

" file " プロトコル
特別な処理: file JavaMail プロバイダを使用して、ファイルから生のメッセージを読み取ることができます。サーバーフィールドは、フォルダーの親へのパスを指定するために使用されます。個々のメッセージ ファイルは、 n.msg という名前で保存する必要があります。nメッセージ番号です。または、serverフィールドは、単一のメッセージを含むファイルの名前にすることもできます。現在の実装は非常に基本的なもので、主にデバッグを目的としています。

^

フロー制御アクション (旧: テスト アクション)

フロー制御アクション サンプラーは、条件付きコントローラーでの使用を目的としたサンプラーです。テスト要素は、サンプルを生成するのではなく、選択したターゲットを一時停止または停止します。

このサンプラーは、サンプルを生成しなくても一時停止を含めることができるため、Transaction Controller と組み合わせて使用​​ することもできます。可変遅延の場合、一時停止時間をゼロに設定し、Timer を子として追加します。

停止」アクションは、進行中のサンプルが完了した後で、スレッドまたはテストを停止します。「Stop Now」アクションは、サンプルが完了するのを待たずにテストを停止します。アクティブなサンプルが中断されます。一部のスレッドが 5 秒の制限時間内に停止しなかった場合、GUI モードでメッセージが表示されます。Stopコマンドを使用して、スレッドが停止するかどうかを確認できますが、そうでない場合は、JMeter を終了する必要があります。CLI モードでは、一部のスレッドが 5 秒の制限時間内に停止しなかった場合、JMeter は終了します。

待機時間は、JMeter プロパティjmeterengine.threadstop.waitを使用して変更できます。時間はミリ秒単位で指定されます。

フロー制御アクションのコントロール パネルのスクリーンショット
フロー制御アクションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
目標
現在のスレッド/すべてのスレッド(一時停止て次のループ反復に移動する場合は無視されます)
はい
アクション
一時停止/停止/今すぐ停止/次のループ反復に進む
はい
間隔
一時停止する時間 (ミリ秒)
はい、一時停止が選択されている場合
^

SMTP サンプラー

SMTP Sampler は、SMTP/SMTPS プロトコルを使用してメール メッセージを送信できます。接続のセキュリティ プロトコル (SSL および TLS) とユーザー認証を設定できます。セキュリティ プロトコルが使用されている場合、サーバー証明書の検証が行われます。
この検証を処理するには、次の 2 つの方法があります。

すべての証明書を信頼する
これは、証明書チェーンの検証を無視します
ローカルのトラストストアを使用する
このオプションを使用すると、証明書チェーンはローカルのトラストストア ファイルに対して検証されます。
SMTP Sampler のコントロール パネルのスクリーンショット
SMTP Sampler のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
サーバ
サーバーのホスト名または IP アドレス。ファイルプロトコルでの使用については、以下を参照してください。
はい
ポート
サーバーへの接続に使用するポート。デフォルトは、SMTP=25、SSL=465、StartTLS=587 です。
いいえ
接続タイムアウト
ミリ秒単位の接続タイムアウト値 (ソケット レベル)。デフォルトは無限タイムアウトです。
いいえ
読み取りタイムアウト
ミリ秒単位のタイムアウト値を読み取ります (ソケット レベル)。デフォルトは無限タイムアウトです。
いいえ
差出人住所
電子メールに表示される差出人アドレス
はい
アドレスへ
宛先の電子メール アドレス (「 ; 」で区切られた複数の値)
はい、CC または BCC が指定されていない限り
CC へのアドレス
カーボンコピー先メールアドレス(「;」で区切られた複数値)
いいえ
BCC へのアドレス
ブラインド カーボン コピー先の電子メール アドレス (「 ; 」で区切られた複数の値)
いいえ
返信先アドレス
代替返信先アドレス (「 ; 」で区切られた複数の値)
いいえ
認証を使用
SMTP サーバーがユーザー認証を必要とするかどうかを示します
ユーザー名
ユーザーのログイン名
パスワード
ユーザー・ログイン・パスワード (注: これは暗号化されずにテスト計画に保管されます)
セキュリティ機能を使用しない
SMTP サーバーへの接続でセキュリティ プロトコルを使用しないことを示します。
SSL を使用する
SMTP サーバーへの接続で SSL プロトコルを使用する必要があることを示します。
StartTLS を使用する
SMTP サーバーへの接続で TLS プロトコルの開始を試行する必要があることを示します。
StartTLS を強制する
サーバーが TLS プロトコルを開始しない場合、接続は終了します。
すべての証明書を信頼する
選択すると、CA に依存しないすべての証明書を受け入れます。
ローカルのトラストストアを使用する
選択すると、ローカルで信頼されている証明書のみが受け入れられます。
ローカルのトラストストア
信頼できる証明書を含むファイルへのパス。相対パスは、現在のディレクトリに対して解決されます。
それができない場合は、テスト スクリプト (JMX ファイル) を含むディレクトリに対して。
システム SSL/TLS プロトコルのオーバーライド
ハンドシェイクで使用するカスタム SSL/TLS プロトコルをスペース区切りのリストとして指定します。例TLSv1 TLSv1.1 TLSv1.2。サポートされているすべてのプロトコルがデフォルトです。
いいえ
主題
電子メール メッセージの件名。
件名ヘッダーを非表示
選択すると、送信されるメールから「 Subject: 」ヘッダーが省略されます。これは、空の「 Subject: 」ヘッダーを送信するのとは異なりますが、電子メール クライアントによっては同じように表示される場合があります。
件名にタイムスタンプを含める
件名に System.currentTimemillis() を含めます。
ヘッダーを追加
このボタンを使用して、追加のヘッダーを定義できます。
いいえ
メッセージ
メッセージ本文。
プレーンボディを送信します (つまり、マルチパート/混合ではありません)
選択した場合、可能であれば本文をプレーンなメッセージとして送信します。つまり、multipart/mixedではありません。メッセージ本文が空でファイルが 1 つしかない場合は、ファイルの内容をメッセージ本文として送信します。
注: メッセージ本文が空ではなく、少なくとも 1 つの添付ファイルがある場合、本文はmultipart/mixedとして送信されます。
いいえ
ファイルを添付
メッセージに添付するファイル。
.eml を送信
設定すると、 SubjectMessage、およびAttach file(s)フィールドのエントリの代わりに.emlファイルが送信されます
メッセージ サイズの計算
メッセージ サイズを計算し、サンプル結果に格納します。
デバッグ ログを有効にしますか?
設定されている場合、「mail.debug」プロパティは「true」に設定されます
^

OSプロセスサンプラー

OS Process Sampler は、ローカル マシンでコマンドを実行するために使用できるサンプラーです。
コマンドラインから実行できるすべてのコマンドを実行できるようにする必要があります。
リターン コードの検証を有効にし、予想されるリターン コードを指定できます。

OS シェルは通常、コマンドライン解析を提供することに注意してください。これは OS によって異なりますが、通常、シェルは空白でパラメーターを分割します。一部のシェルは、ワイルドカード ファイル名を展開します。しない人もいます。引用メカニズムも OS によって異なります。サンプラーは、意図的に解析や引用処理を行いません。コマンドとそのパラメーターは、実行可能ファイルが期待する形式で提供する必要があります。これは、サンプラー設定が OS 間で移植できないことを意味します。

多くの OS には、個別の実行可能ファイルとして提供されていない組み込みコマンドがいくつかあります。たとえば、Windows DIRコマンドはコマンド インタープリター ( CMD.EXE ) の一部です。これらのビルトインは、独立したプログラムとして実行することはできませんが、適切なコマンド インタープリターへの引数として提供する必要があります。

たとえば、Windows コマンドライン: DIR C:\TEMPは次のように指定する必要があります。

指示:
CMD
パラメータ 1:
/C
パラメータ 2:
DIR
パラメータ 3:
C:\TEMP
OS Process Sampler のコントロール パネルのスクリーンショット
OS Process Sampler のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
指示
実行するプログラム名。
はい
作業ディレクトリ
コマンドが実行されるディレクトリ。デフォルトは「user.dir」によって参照されるフォルダ システム プロパティ
いいえ
コマンド パラメータ
プログラム名に渡されるパラメーター。
いいえ
環境パラメータ
コマンドの実行時にキーと値のペアが環境に追加されました。
いいえ
標準入力 (stdin)
入力を取得するファイルの名前 ( STDIN )。
いいえ
標準出力 (stdout
標準出力 ( STDOUT ) の出力ファイルの名前。省略した場合、出力はキャプチャされ、応答データとして返されます。
いいえ
標準エラー (stderr)
標準エラー ( STDERR ) の出力ファイルの名前。省略した場合、出力はキャプチャされ、応答データとして返されます。
いいえ
リターン コードを確認する
オンにすると、サンプラーはリターン コードをExpected Return Codeと比較します。
いいえ
予期される戻りコード
「 Check Return Code 」がチェックされている場合に必要な、システム コールの予期される戻りコード。注 500 は JMeter でエラー インジケータとして使用されるため、使用しないでください。
いいえ
タイムアウト
コマンドのミリ秒単位のタイムアウト。デフォルトは0で、タイムアウトなしを意味します。コマンドが終了する前にタイムアウトになると、JMeter は OS プロセスを強制終了しようとします。
いいえ
^

MongoDB スクリプト (非推奨)

このサンプラーを使用すると、リクエストを MongoDB に送信できます。

これを使用する前に、 MongoDB Source Config構成要素 をセットアップする必要があります

この要素は現在、com.mongodb.DB#evalを使用しています。これはグローバルな書き込みロックを取得し、データベースのパフォーマンスに影響を与えます。 db.eval()を参照してください。したがって、この要素を負荷テストに使用することは避け、代わりにMongoDBHolderを使用した JSR223+Groovy スクリプトを使用することをお勧めします。MongoDB スクリプトは、機能テストまたはテスト セットアップ (セットアップ/ティアダウン スレッド) に適しています。
MongoDB スクリプトのコントロール パネルのスクリーンショット (非推奨)
MongoDB スクリプトのコントロール パネルのスクリーンショット (非推奨)

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
MongoDB ソース
MongoDB 接続がバインドされる JMeter 変数の名前。これは、MongoDB Source Config の 「 MongoDB Source 」フィールドと一致する必要があります。
はい
データベース名
データベース名、スクリプトで使用されます
はい
ユーザー名
いいえ
パスワード
いいえ
脚本
MongoDB シェルで使用される Mongo スクリプト
はい
変数名がテスト計画全体で一意であることを確認してください。
^
^

ボルトリクエスト

このサンプラーを使用すると、Bolt プロトコルを介して Cypher クエリを実行できます。

これを使用する前に、ボルト接続構成を設定する必要があります

すべての要求は、プールから取得した接続を使用し、サンプラーが完了するとプールに返します。接続プールのサイズはドライバーのデフォルト (~100) を使用し、現時点では構成できません。

測定された応答時間は、暗号クエリを実行する時間と、データベースから返された結果を消費する時間の両方を含む、「完全な」クエリ実行に対応します。

Bolt Request のコントロール パネルのスクリーンショット
Bolt Request のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
コメント
詳細についてはフリーテキスト。
いいえ
サイファーステートメント
実行するクエリ。
はい
パラメータ
パラメータ値、JSON 形式。
いいえ
クエリ結果の記録
クエリの結果データをサンプラーの応答に追加するかどうか (デフォルトは false)。これを有効にするとメモリのオーバーヘッドが発生することに注意してください。賢明に使用してください。
いいえ
データベースが実行計画をキャッシュして再利用できるように、クエリ パラメータを使用することを強くお勧めします。
^
^

18.2 ロジックコントローラ


ロジック コントローラーは、サンプラーが処理される順序を決定します。

シンプルなコントローラー

Simple Logic Controller を使用すると、サンプラーやその他のロジック コントローラーを整理できます。他のロジック コントローラとは異なり、このコントローラにはストレージ デバイス以上の機能はありません。

シンプルコントローラーのコントロールパネルのスクリーンショット
シンプルコントローラーのコントロールパネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのコントローラーのわかりやすい名前。
いいえ
シンプルなコントローラーの使用

この例をダウンロードしてください (図 6 を参照)。この例では、2 つの Ant HTTP 要求と 2 つの Log4J HTTP 要求を送信するテスト計画を作成しました。Ant と Log4J のリクエストを Simple Logic Controller 内に配置することでグループ化しました。シンプル ロジック コントローラは、追加したコントローラを JMeter が処理する方法には影響しないことに注意してください。したがって、この例では、JMeter は次の順序でリクエストを送信します: Ant ホームページ、Ant ニュース ページ、Log4J ホームページ、Log4J 履歴ページ。

File Reporter は、現在のディレクトリの「 simple-test.dat 」 という名前のファイルに結果を保存するように構成されていることに注意してください。

図 6 単純なコントローラーの例
図 6 単純なコントローラーの例
^

ループコントローラー

ジェネレーティブ コントローラーまたはロジック コントローラーをループ コントローラーに追加すると、JMeter は、スレッド グループに指定したループ値に加えて、それらを特定の回数ループします。たとえば、ループ カウントが 2 のループ コントローラに 1 つの HTTP リクエストを追加し、スレッド グループのループ カウントを 3 に設定すると、JMeter は合計2 * 3 = 6のHTTP リクエストを送信します。

JMeter は、ループ インデックスを__jm__<Name of your element>__idxという名前の変数として公開します。たとえば、ループ コントローラーの名前が LC の場合、${__jm__LC__idx}を介してループ インデックスにアクセスできます。インデックスは 0 から始まります

ループコントローラーのコントロールパネルのスクリーンショット
ループコントローラーのコントロールパネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのコントローラーのわかりやすい名前。
いいえ
ループ回数
このコントローラーのサブエレメントがテスト実行のたびに反復される回数。

-1は、 Foreverトグルをチェックすることと同じです。

特殊なケース:スレッド グループ要素に埋め込まれたループ コントローラーの 動作はわずかに異なります。永遠に設定されていない限り、指定された回数の反復が行われた後にテストを停止します。

このフィールドで関数を使用する場合、複数回評価される可能性があることに注意してください。__Randomを使用した例では、ループ コントローラーの子サンプラーごとに異なる値に評価され、望ましくない動作が発生します。
はい、「永遠に」がチェックされていない限り
ループの例

この例をダウンロードしてください (図 4 を参照)。この例では、特定の HTTP リクエストを 1 回だけ送信し、別の HTTP リクエストを 5 回送信するテスト計画を作成しました。

図 4 - ループ コントローラーの例
図 4 - ループ コントローラーの例

単一のスレッドと 1 のループ カウント値のスレッド グループを構成しました。スレッド グループにループを制御させる代わりに、ループ コントローラーを使用しました。1 つの HTTP 要求をスレッド グループに追加し、別の HTTP 要求をループ コントローラーに追加したことがわかります。ループ コントローラーのループ カウント値を 5 に設定しました。

JMeter は、ホームページ、ニュース ページ、ニュース ページ、ニュース ページ、ニュース ページ、ニュース ページの順にリクエストを送信します。

File Reporter は、現在のディレクトリの「 loop-test.dat 」という名前のファイルに結果を保存するように構成されていることに注意してください。
^

ワンスオンリーコントローラー

1 回限りのロジック コントローラーは、JMeter に対して、その内部のコントローラーをスレッドごとに 1 回だけ処理し、テスト計画のさらなる反復中にその下にあるすべての要求を渡すように指示します。

一度だけのコントローラーは、ループしている親コントローラーの最初の反復中に常に実行されるようになりました。したがって、5 回ループするように指定されたループ コントローラーの下に 1 回限りのコントローラーが配置されている場合、1 回限りのコントローラーはループ コントローラーを介した最初の反復でのみ (つまり、5 回ごとに) 実行されます。

これは、1 回限りのコントローラーがスレッド グループ (スレッドごとのテストごとに 1 回だけ実行される) の下に配置された場合でも以前に期待されたとおりに動作することを意味しますが、ユーザーは 1 回限りのコントローラーをより柔軟に使用できるようになりました。

ログインが必要なテストでは、セッションを確立するために各スレッドがログインする必要があるのは 1 回だけであるため、このコントローラーにログイン要求を配置することを検討してください。

ワンス オンリー コントローラーのコントロール パネルのスクリーンショット
ワンス オンリー コントローラーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのコントローラーのわかりやすい名前。
いいえ
一度だけの例

この例をダウンロードしてください (図 5 を参照)。この例では、HTTP 要求を送信する 2 つのスレッドを持つテスト計画を作成しました。各スレッドは、1 つの要求をホームページに送信し、続いて 3 つの要求をバグ ページに送信します。スレッド グループを 3 回反復するように構成しましたが、各 JMeter スレッドはホームページに 1 つの要求しか送信しません。

図 5. 一度だけのコントローラーの例
図 5. 一度だけのコントローラーの例

各 JMeter スレッドは、ホームページ、バグ ページ、バグ ページ、バグ ページの順にリクエストを送信します。

File Reporter は、現在のディレクトリの「 loop-test.dat 」という名前のファイルに結果を保存するように構成されていることに注意してください。

^

インターリーブ コントローラー

ジェネレーティブ コントローラーまたはロジック コントローラーをインターリーブ コントローラーに追加すると、JMeter はループの反復ごとに他の各コントローラーを交互に使用します。

インターリーブ コントローラのコントロール パネルのスクリーンショット
インターリーブ コントローラのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのコントローラーのわかりやすい名前。
いいえ
サブコントローラー ブロックを無視する
オンにすると、インターリーブ コントローラーはサブコントローラーを単一の要求要素のように扱い、一度にコントローラーごとに 1 つの要求のみを許可します。
いいえ
スレッド間のインターリーブ
オンにすると、インターリーブ コントローラーはループの繰り返しごとにそれぞれの子コントローラー間で交互に実行されますが、すべてのスレッドにわたって、たとえば 4 つのスレッドと 3 つの子コントローラーを含む構成では、最初の繰り返しでスレッド 1 が最初の子を実行し、スレッド 2 が 2 番目の子を実行します。 、スレッド 3 の 3 番目の子、スレッド 4 の最初の子、次の反復で、各スレッドは次の子コントローラーを実行します
いいえ
簡単なインターリーブの例

この例をダウンロードしてください (図 1 を参照)。この例では、2 つのスレッドと 5 つのループ カウントを持つようにスレッド グループを構成し、スレッドごとに合計 10 のリクエストを処理しました。JMeter が HTTP リクエストを送信するシーケンスについては、次の表を参照してください。

図 1 - インターリーブ コントローラーの例 1
図 1 - インターリーブ コントローラーの例 1
ループ反復各 JMeter スレッドはこれらの HTTP リクエストを送信します
1ニュースページ
1ログページ
2よくある質問ページ
2ログページ
3ガンプページ
3ログページ
4コントローラにはそれ以上のリクエストがないため、

JMeter は最初からやり直して、ニュース ページである最初の HTTP リクエストを送信します。
4ログページ
5よくある質問ページ
5ログページ
便利なインターリーブの例

別の例をダウンロードしてください (図 2 を参照)。この例では、スレッド グループを 1 つのスレッドと 8 つのループ カウントを持つように構成しました。テスト計画には、内部に 2 つのインターリーブ コントローラーを持つ外部インターリーブ コントローラーがあることに注意してください。


        図 2 - インターリーブ コントローラーの例 2
図 2 - インターリーブ コントローラーの例 2

外側のインターリーブ コントローラーは、2 つの内側のコントローラーを交互に使用します。次に、各内部インターリーブ コントローラーが各 HTTP 要求を交互に実行します。各 JMeter スレッドは、次の順序で要求を送信します: ホームページ、インターリーブ、バグ ページ、インターリーブ、CVS ページ、インターリーブ、FAQ ページ、インターリーブ。

File Reporter は、現在のディレクトリの「 interleave-test2.dat 」という名前のファイルに結果を保存するように構成されていることに注意してください。


        図 3 - インターリーブ コントローラーの例 3
図 3 - インターリーブ コントローラーの例 3

メインのインターリーブ コントローラーの下にある 2 つのインターリーブ コントローラーが代わりに単純なコントローラーである場合、順序は次のようになります: ホームページ、CVS ページ、インターリーブ、バグ ページ、FAQ ページ、インターリーブ。

ただし、メインのインターリーブ コントローラーで [サブコントローラー ブロックを無視する] がオンになっている場合、順序は次のようになります: ホームページ、インターリーブ、バグ ページ、インターリーブ、CVS ページ、インターリーブ、FAQ ページ、インターリーブ。

^

ランダムコントローラー

Random Logic Controller は Interleave Controller と同様に動作しますが、サブコントローラーとサンプラーを順番に処理する代わりに、各パスでランダムに 1 つを選択する点が異なります。

複数のコントローラー間の相互作用により、複雑な動作が発生する可能性があります。これは特に Random Controller に当てはまります。与えられた相互作用がどのような結果をもたらすかを推測する前に、実験してください
ランダムコントローラーのコントロールパネルのスクリーンショット
ランダムコントローラーのコントロールパネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのコントローラーのわかりやすい名前。
いいえ
サブコントローラー ブロックを無視する
オンにすると、インターリーブ コントローラーはサブコントローラーを単一の要求要素のように扱い、一度にコントローラーごとに 1 つの要求のみを許可します。
いいえ
^

ランダムオーダーコントローラー

Random Order Controller は、各子要素を最大 1 回実行するという点で Simple Controller によく似ていますが、ノードの実行順序はランダムです。

ランダムオーダーコントローラーのコントロールパネルのスクリーンショット
ランダムオーダーコントローラーのコントロールパネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのコントローラーのわかりやすい名前。
いいえ
^

スループットコントローラー

スループット コントローラを使用すると、実行頻度を制御できます。次の 2 つのモードがあります。

  • 実行率
  • 総実行数
実行率
コントローラーは、テスト計画を通じて特定の割合の反復を実行します。
総実行数
特定の回数の実行が発生した後、コントローラーの実行を停止します。
ワンス オンリー コントローラーと同様に、この設定は親ループ コントローラーが再起動するとリセットされます。

このコントローラーはスループットを制御しないため、不適切な名前です。スループットの調整に使用できる要素については 、一定スループット タイマーを参照してください。
スループット コントローラーのコントロール パネルのスクリーンショット
スループット コントローラーのコントロール パネルのスクリーンショット
スループット コントローラーは、他のコントローラーと組み合わせると、非常に複雑な動作を生成する可能性があります。特に、インターリーブまたはランダム コントローラーを親として使用する場合 (これも非常に便利です)。

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのコントローラーのわかりやすい名前。
いいえ
実行スタイル
コントローラーがパーセント実行モードまたは合計実行モードのどちらで実行されるか。
はい
スループット
数。パーセント実行モードの場合、コントローラーが実行される回数のパーセンテージを示す0から100までの数値。" 50 " は、コントローラーがテスト計画の半分の反復で実行されることを意味します。合計実行モードの場合、数値はコントローラーが実行される合計回数を示します。
はい
ユーザーごと
オンにすると、ユーザーごとに、コントローラーがユーザーごと (スレッドごと) に実行する必要があるかどうかを計算します。オフにすると、計算はすべてのユーザーに対してグローバルになります。たとえば、合計実行モードを使用し、「ユーザーごと」のチェックを外す場合、スループットに指定された数値は実行された合計数になります。「per user」がチェックされている場合、実行の合計数は、ユーザー数に指定されたスループットの数値を掛けたものになります。
いいえ
^

ランタイム コントローラ

ランタイム コントローラーは、その子の実行時間の長さを制御します。コントローラーは、構成されたランタイムを超える まで子を実行します。

ランタイム コントローラのコントロール パネルのスクリーンショット
ランタイム コントローラのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示され、トランザクションの名前付けに使用される、このコントローラーのわかりやすい名前。
はい
実行時間 (秒)
必要な実行時間 (秒単位)。0 は実行しないことを意味します。
はい
^

コントローラの場合

If コントローラーを使用すると、ユーザーはその下のテスト要素 (その子) を実行するかどうかを制御できます。

デフォルトでは、条件は最初のエントリで 1 回だけ評価されますが、コントローラーに含まれる実行可能な要素ごとに評価するオプションがあります。

最良のオプション (デフォルト) は、[条件を変数式として解釈しますか? ] をオンにすることです。の場合、条件フィールドには 2 つのオプションがあります。

  • オプション 1: trueまたはfalseを含む変数を使用する
    最後のサンプルが成功したかどうかをテストする場合は、${JMeterThread.last_sample_ok}を使用できます。
    変数を使用するコントローラーの場合
    変数を使用するコントローラーの場合
  • オプション 2: 関数 ( ${__jexl3()}をお勧めします) を使用して、 trueまたはfalseを返さなければならない式を評価します
    式を使用するコントローラーの場合
    式を使用するコントローラーの場合
たとえば、以前は ${__jexl3(${VAR} == 23)}という条件を使用でき、これはtrue / falseとして評価され、結果は JavaScript に渡され、JavaScript はtrue / falseを返します。変数式オプションが選択されている場合、JavaScript を使用する必要なく 、式が評価され、「 true 」と比較されます。

変数が未定義 (または null) かどうかをテストするには、次のようにします。var の名前がmyVarであるとすると、式は次のようになります。
"${myVar}" == "\${myVar}"
または使用:
"${myVar}" != "\${myVar}"
変数が定義されていて、null でないかどうかをテストします。
[条件を変数式として解釈する] の チェックを外しますか? 、コントローラーが内部的にjavascriptを使用して条件を評価すると、パフォーマンスが非常に大きくなり、テストのスケーラビリティが低下する可能性があります。
コントローラがJavaScriptを使用している場合
コントローラがJavaScriptを使用している場合
If Controller のコントロール パネルのスクリーンショット
If Controller のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのコントローラーのわかりやすい名前。
いいえ
条件 (デフォルトの JavaScript)
デフォルトでは、条件は「 true」または「false 」を返すJavaScriptコードとして解釈されますが、これはオーバーライドできます (以下を参照)。
はい
条件を変数式として解釈しますか?
これが選択されている場合、条件は「true」と評価される式である必要があります (大文字と小文字は区別されません)。たとえば、${FOUND}または${__jexl3(${VAR} > 100)}です。JavaScript の場合とは異なり、条件は「 true 」に一致するかどうかのみがチェックされます(大文字と小文字は区別されません)。
これを確認し、Condition で__jexl3または__groovy関数を使用することをお勧めします。
はい
すべての子供を評価する
すべての子に対して状態を評価する必要がありますか? チェックされていない場合、条件は入力時にのみ評価されます。
はい
例 (JavaScript)
  • ${COUNT} < 10
  • "${VAR}" == "abcd"
コードの解釈中にエラーが発生した場合、条件はfalseと見なされ、メッセージがjmeter.logに記録されます。
パフォーマンスのために JavaScript モードを使用しないことをお勧めします。__groovy

を使用する場合は、文字列で変数置換を使用しないように注意してください。そうしないと、スクリプトを変更する変数を使用すると、スクリプトをキャッシュできません。代わりに、vars.get("myVar") を使用して変数を取得します。 以下の Groovy の例を参照してください。
例 (変数式)
  • ${__groovy(vars.get("myVar") != "Invalid" )} (Groovy チェック myVar が Invalid と等しくない)
  • ${__groovy(vars.get("myInt").toInteger() <=4 )} (Groovy チェック myInt が 4 以下)
  • ${__groovy(vars.get("myMissing") != null )} (myMissing 変数が設定されていないかどうかの Groovy チェック)
  • ${__jexl3(${COUNT} < 10)}
  • ${結果}
  • ${JMeterThread.last_sample_ok} (最後のサンプルが成功したかどうかを確認します)
^

コントローラーながら

While コントローラーは、条件が " false " になるまで子を実行します。

JMeter は、ループ インデックスを__jm__<Name of your element>__idxという名前の変数として公開します。たとえば、While コントローラーの名前が WC の場合、${__jm__WC__idx}を介してループ インデックスにアクセスできます。インデックスは 0 から始まります

可能な条件値:

  • 空白 - ループの最後のサンプルが失敗したときにループを終了します
  • LAST - ループの最後のサンプルが失敗したときにループを終了します。ループの直前の最後のサンプルが失敗した場合は、ループに入らないでください。
  • それ以外の場合 - 条件が文字列 " false "と等しい場合、ループを終了します (またはループに入らないでください) 。
条件は、最終的に文字列 " false " に評価される任意の変数または関数にすることができます。これにより、必要に応じて__jexl3__groovy関数、プロパティ、または変数を使用できます。

条件は 2 回評価されることに注意してください。1回は子のサンプリングを開始する前、もう 1 回は子のサンプリングの最後です。

例えば:
  • ${VAR} - VARが他のテスト要素によって false に設定されている場合
  • ${__jexl3(${C}==10)}
  • ${__jexl3("${VAR2}"=="abcd")}
  • ${_P(property)} - プロパティが別の場所で「false」に設定されている場合
Whileコントローラーのコントロールパネルのスクリーンショット
Whileコントローラーのコントロールパネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示され、トランザクションの名前付けに使用される、このコントローラーのわかりやすい名前。
いいえ
調子
空白、LAST、または変数/関数
いいえ
^

スイッチコントローラー

スイッチ コントローラーは、反復ごとに従属要素の 1 つを実行するという点でインターリーブ コントローラーのように機能 しますが、それらを順番に実行するのではなく、コントローラーはスイッチ値によって定義された要素を実行します。

スイッチ値は名前にすることもできます。

スイッチ値が範囲外の場合、ゼロ番目の要素が実行されるため、数値の場合のデフォルトとして機能します。値が空の文字列の場合は、0 番目の要素も実行されます。

値が非数値 (および空でない) の場合、スイッチ コントローラーは同じ名前の要素を探します (大文字と小文字は区別されます)。一致する名前がない場合は、「default」(大文字と小文字は区別されません) という名前の要素が選択されます。デフォルトがない場合、要素は選択されず、コントローラーは何も実行しません。

スイッチ コントローラーのコントロール パネルのスクリーンショット
スイッチ コントローラーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのコントローラーのわかりやすい名前。
いいえ
スイッチ値
呼び出される従属要素の番号 (または名前)。要素には 0 から番号が付けられます。デフォルトは 0 です。
いいえ
^

ForEach コントローラー

ForEach コントローラーは、一連の関連する変数の値をループ処理します。サンプラー (またはコントローラー) を ForEach コントローラーに追加すると、すべてのサンプル (またはコントローラー) が 1 回以上実行され、ループごとに変数に新しい値が設定されます。入力は、アンダースコアと数字で拡張されたいくつかの変数で構成する必要があります。そのような各変数には値が必要です。たとえば、入力変数の名前がinputVarの場合、次の変数が定義されている必要があります。

  • inputVar_1 = ウェンディ
  • inputVar_2 = チャールズ
  • inputVar_3 = ピーター
  • inputVar_4 = ジョン

注: " _ " セパレーターはオプションになりました。

戻り変数が「returnVar」として指定されると、ForEach コントローラーの下のサンプラーとコントローラーのコレクションが4回連続して実行され、戻り変数がそれぞれ上記の値を持ち、サンプラーで使用できるようになります。

JMeter は、ループ インデックスを__jm__<Name of your element>__idxという名前の変数として公開します。たとえば、ループ コントローラーの名前が FEC の場合、${__jm__FEC__idx}を介してループ インデックスにアクセスできます。インデックスは 0 から始まります

これは、正規表現ポストプロセッサで実行するのに特に適しています。これにより、前のリクエストの結果データから必要な入力変数を「作成」できます。「 _ 」セパレーターを省略することにより、ForEach コントローラーを使用して、入力変数refName_gを使用してグループをループ処理できます。また、フォームrefName_${Cの入力変数を使用して、すべての一致のすべてのグループをループ処理できます。}_g、ここでCはカウンター変数です。

inputVar_1nullの場合、ForEach コントローラーはサンプルを実行しません。これは、正規表現が一致を返さなかった場合に当てはまります。
ForEach コントローラーのコントロール パネルのスクリーンショット
ForEach コントローラーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのコントローラーのわかりやすい名前。
いいえ
入力変数プレフィックス
入力として使用される変数名のプレフィックス。デフォルトでは、接頭辞として空の文字列になります。
いいえ
ループの開始インデックス
変数のループの開始インデックス (排他的) (最初の要素は開始インデックス + 1 にあります)
いいえ
ループの終了インデックス
変数のループの終了インデックス (包括的)
いいえ
出力変数
サンプラーで置換するためにループで使用できる変数の名前。デフォルトは空の変数名ですが、これはおそらく望ましくありません。
いいえ
セパレータを使用
チェックされていない場合、「_」セパレーターは省略されます。
はい
ForEach の例

この例をダウンロードしてください (図 7 を参照)。この例では、特定の HTTP リクエストを 1 回だけ送信し、ページ上にあるすべてのリンクに別の HTTP リクエストを送信するテスト計画を作成しました。

図 7 - ForEach コントローラーの例
図 7 - ForEach コントローラーの例

単一のスレッドと 1 のループ カウント値のスレッド グループを構成しました。スレッド グループに 1 つの HTTP 要求を追加し、ForEach コントローラーに別の HTTP 要求を追加したことがわかります。

最初の HTTP 要求の後に、正規表現エクストラクタが追加されます。これにより、リターン ページからすべての html リンクが抽出され、 inputVar変数に入れられます。

ForEach ループでは、最初に返された HTML ページから抽出されたすべてのリンクを要求する HTTP サンプラーが追加されます。

ForEach の例

ダウンロードできる別の例を次に示します。これには、2 つの正規表現と ForEach コントローラーがあります。最初の RE は一致しますが、2 番目の RE は一致しないため、2 番目の ForEach コントローラーによってサンプルは実行されません。

図 8 - ForEach コントローラーの例 2
図 8 - ForEach コントローラーの例 2

スレッド グループには、1 つのスレッドと 2 つのループ カウントがあります。

サンプル 1 では、JavaTest サンプラーを使用して文字列「abcd」を返します。

Regex Extractor は、文字とそれに続くスペースに一致する式(\w)\sを使用し、(スペースではなく) 文字を返します。すべての一致には、文字列 " inputVar " がプレフィックスとして付けられます。

ForEach コントローラーは、プレフィックス " inputVar_ " を持つすべての変数を抽出し、そのサンプルを実行して、変数 " returnVar " に値を渡します。この場合、変数に値 " a " " b " と " c " が順番に設定されます。

For 1 Sampler は、サンプル ラベルの一部およびサンプラ データとして 戻り変数「 returnVar 」を使用する別のJava サンプラです。

Sample 2Regex 2およびFor 2はほぼ同じですが、Regex が " (\w)\sx " に変更されており、明らかに一致しません。したがって、For 2 Sampler は実行されません。

^

モジュールコントローラー

Module Controller は、実行時にテスト計画のフラグメントを現在のテスト計画に置き換えるメカニズムを提供します。

テスト計画フラグメントは、コントローラーとそれに含まれるすべてのテスト要素 (サンプラーなど) で構成されます。フラグメントは、任意のスレッド グループに配置できます。フラグメントがスレッド グループにある場合、そのコントローラーを無効にして、フラグメントがモジュール コントローラー以外によって実行されないようにすることができます。または、フラグメントをダミーのスレッド グループに格納し、スレッド グループ全体を無効にすることもできます。

複数のフラグメントが存在する可能性があり、それぞれの下に異なる一連のサンプラーがあります。モジュール コントローラーを使用すると、ドロップダウン ボックスで適切なコントローラーを選択するだけで、これらの複数のテスト ケースを簡単に切り替えることができます。これにより、多くの代替テスト計画を迅速かつ簡単に実行できるようになります。

フラグメント名は、コントローラー名とそのすべての親名で構成されます。例えば:

テスト計画 / プロトコル: JDBC / コントロール / インターリーブ コントローラー (Module1)

モジュールコントローラーで使用されるフラグメントには一意の名前が必要です。これは、名前がテスト計画の再読み込み時にターゲット コントローラーを見つけるために使用されるためです。このため、上記の例に示すように、コントローラー名をデフォルトから変更することをお勧めします。そうしないと、新しい要素がテスト計画に追加されたときに誤って重複が作成される可能性があります。

モジュールコントローラーのコントロールパネルのスクリーンショット
モジュールコントローラーのコントロールパネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのコントローラーのわかりやすい名前。
いいえ
実行するモジュール
モジュール コントローラは、GUI にロードされたすべてのコントローラのリストを提供します。実行時に代入するものを選択します。
はい
^

インクルードコントローラー

インクルード コントローラーは、外部 JMX ファイルを使用するように設計されています。これを使用するには、テスト計画の下にテスト フラグメントを作成し、その下に必要なサンプラー、コントローラーなどを追加します。次に、テスト計画を保存します。ファイルは、他のテスト計画の一部として含める準備ができました。

便宜上、デバッグ目的でスレッド グループを外部 JMX ファイルに追加することもできます。モジュール コントローラーを使用して、テスト フラグメントを参照できます。インクルード プロセス中、スレッド グループは無視されます。

テストで Cookie マネージャーまたはユーザー定義変数を使用する場合、これらはインクルード ファイルではなく、最上位のテスト計画に配置する必要があります。そうしないと、動作が保証されません。

この要素は、ファイル名フィールドの変数/関数をサポートしていません。
ただし、プロパティincludecontroller.prefixが定義されている場合は、その内容がパス名のプレフィックスとして使用されます。
インクルード コントローラーを使用し、同じ JMX ファイルをインクルードする場合は、インクルード コントローラーに別の名前を付けて、既知の問題 Bug 50898に直面しないようにしてください。

prefix + Filenameで 指定された場所にファイルが見つからない場合、コントローラは JMX 起動ディレクトリに関連する Filenameを開こうとします。

インクルード コントローラーのコントロール パネルのスクリーンショット
インクルード コントローラーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
ファイル名
含めるファイル。
はい
^

トランザクションコントローラー

トランザクション コントローラーは、ネストされたテスト要素の実行にかかった全体の時間を測定する追加のサンプルを生成します。

注: [生成されたサンプルにタイマーとプリポスト プロセッサの期間を含める] チェック ボックスをオンにすると、時間には、サンプルだけでなく、コントローラ スコープ内のすべての処理が含まれます。

次の 2 つの操作モードがあります。

  • 追加のサンプルは、ネストされたサンプルの後に追加されます
  • 追加のサンプルは、ネストされたサンプルの親として追加されます

生成されたサンプル時間には、ネストされたサンプラーのすべての時間が含まれます。デフォルト (2.11 以降) のタイマーとプリ/ポスト プロセッサの処理時間は除きます。クロックの分解能によっては、個々のサンプラーとタイマーの合計よりもわずかに長くなる場合があります。コントローラーが開始時刻を記録した後、最初のサンプルが開始する前に、クロックがカチカチ音をたてる場合があります。最後も同様。

生成されたサンプルは、そのすべてのサブサンプルが成功した場合にのみ成功したと見なされます。

親モードでは、個々のサンプルは引き続きツリー ビュー リスナーに表示されますが、他のリスナーに個別のエントリとして表示されることはなくなりました。また、サブサンプルは CSV ログ ファイルには表示されませんが、XML ファイルに保存できます。

親モードでは、アサーション (など) をトランザクション コントローラーに追加できます。ただし、デフォルトでは、個々のサンプルとトランザクション サンプル全体の両方に適用されます。アサーションの範囲を制限するには、シンプル コントローラーを使用してサンプルを格納し、アサーションをシンプル コントローラーに追加します。現在、ペアレント モード コントローラーは、どちらのタイプのネストされたトランザクション コントローラーも適切にサポートしていません。
トランザクション コントローラーのコントロール パネルのスクリーンショット
トランザクション コントローラーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示され、トランザクションの名前付けに使用される、このコントローラーのわかりやすい名前。
はい
親サンプルの生成
チェックした場合、サンプルは他のサンプルの親として生成されます。それ以外の場合、サンプルは独立したサンプルとして生成されます。
はい
生成されたサンプルにタイマーとプリポスト プロセッサの期間を含める
生成されたサンプルにタイマー、前処理および後処理の遅延を含めるかどうか。デフォルトはfalse
はい
^

レコーディングコントローラー

Recording Controller は、プロキシ サーバーがサンプルを記録する場所を示すプレース ホルダーです。試運転中はシンプルコントローラーと同様、効果はありません。ただし、HTTP(S) Test Script Recorderを使用した記録中、記録されたすべてのサンプルはデフォルトで Recording Controller に保存されます。

レコーディング コントローラーのコントロール パネルのスクリーンショット
レコーディング コントローラーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのコントローラーのわかりやすい名前。
いいえ
^

クリティカル セクション コントローラ

クリティカル セクション コントローラーは、コントローラーの子を実行する前に名前付きロックが取得されるため、その子要素 ​​(サンプラー/コントローラーなど) が 1 つのスレッドによってのみ実行されるようにします。

クリティカル セクション コントローラのコントロール パネルのスクリーンショット
クリティカル セクション コントローラのコントロール パネルのスクリーンショット

下の図は、クリティカル セクション コントローラの使用例を示しています。下の図では、2 つのクリティカル セクション コントローラが次のことを保証します。

  • DS2-${__threadNum}は一度に 1 つのスレッドによってのみ実行されます
  • DS4-${__threadNum}は、一度に 1 つのスレッドによってのみ実行されます
クリティカル セクション コントローラーを使用したテスト計画
クリティカル セクション コントローラーを使用したテスト計画

パラメータ

属性
説明
必須
ロックネーム
コントローラーによって取得されるロック。関連のないセクションには異なるロック名を使用してください
はい
Critical Section Controller は 1 つの JVM 内でのみロックを取得するため、分散テストを使用する場合は、ユース ケースがすべての JVM のすべてのスレッドのブロックに依存していないことを確認してください。
^
^

18.3 リスナー


ほとんどのリスナーは、テスト結果を「聞く」ことに加えて、いくつかの役割を果たします。また、保存されたテスト結果を表示、保存、および読み取る手段も提供します。

リスナーは、見つかったスコープの最後で処理されることに注意してください。

テスト結果の保存と読み取りは一般的です。さまざまなリスナーには、結果が書き込まれる (または読み取られる) ファイルを指定できるパネルがあります。デフォルトでは、結果は XML ファイルとして保存され、通常は " .jtl " 拡張子が付きます。CSV として保存するのが最も効率的なオプションですが、XML (他の利用可能なオプション) ほど詳細ではありません。

リスナーは CLI モードでサンプル データを処理しませが、出力ファイルが構成されている場合は生データが保存されます。 CLI の実行によって生成されたデータを分析するには、ファイルを適切なリスナーにロードする必要があります。

既存の結果を読み取って表示するには、ファイル パネルの [参照] ボタンを使用してファイルを開きます。

新しいファイルをロードする前に現在のデータをクリアしたい場合は、ファイルをロードする前にメニュー項目の 実行 → クリア ( Ctrl  +  Shift  +  E ) または 実行 → すべてクリア ( Ctrl  +  E ) を使用します。

結果は、XML または CSV 形式のファイルから読み取ることができます。CSV 結果ファイルから読み取る場合、ヘッダー (存在する場合) を使用して、存在するフィールドを判別します。 ヘッダーのない CSV ファイルを正しく解釈するには、適切なプロパティをjmeter.propertiesに設定する必要があります。

JMeter によって記述された XML ファイルのヘッダーにはバージョン 1.0 が宣言されていますが、実際のファイルは 1.1 の規則でシリアル化されています。(これは歴史的な互換性の理由で行われます 。Bug 59973および Bug 58679を参照してください) これにより、厳密な XML パーサーが失敗します。非厳密な XML パーサーを使用して JTL ファイルを読み取ることを検討してください。

ファイル名には、関数や変数の参照を含めることができます。ただし、変数参照はクライアント サーバー モードでは機能しません (機能は正常に機能します)。これは、ファイルがクライアントで作成され、クライアントがローカルでテストを実行しないため、変数を設定しないためです。

多くのサンプルがある場合、リスナーは大量のメモリを使用する可能性があります。 現在、ほとんどのリスナーは、以下を除いて、スコープ内のすべてのサンプルのコピーを保持しています。

  • シンプルデータライタ
  • BeanShell/JSR223 リスナー
  • メーラー ビジュアライザー
  • 概略報告

次のリスナーは、すべてのサンプルのコピーを保持する必要がなくなりました。代わりに、同じ経過時間のサンプルが集計されます。特にほとんどのサンプルがせい​​ぜい 1 ~ 2 秒しかかからない場合は、必要なメモリが少なくて済みます。

  • 集計レポート
  • 集計グラフ

必要なメモリ量を最小限に抑えるには、Simple Data Writer を使用し、CSV 形式を使用します。

JMeter 変数は、出力ファイルに保存できます。これは、プロパティを使用してのみ指定できます。詳細については、リスナーのサンプル変数を参照してください 。

保存するデフォルト項目の設定の詳細については、Listener Default Configurationドキュメントを参照してください。出力ファイルの内容の詳細については、CSV ログ形式またはXML ログ形式を参照してください。

jmeter.propertiesのエントリは、デフォルトを定義するために使用されます。これらは、以下に示すように、[構成] ボタンを使用して個々のリスナーに対してオーバーライドできます。jmeter.propertiesの設定は、 -lコマンドライン フラグ を使用して追加されたリスナーにも適用されます。

下図は結果ファイル設定パネルの例です。

結果ファイル設定パネル
結果ファイル設定パネル

パラメーター

属性
説明
必須
ファイル名
サンプル結果を含むファイルの名前。ファイル名は、相対パス名または絶対パス名のいずれかを使用して指定できます。相対パスは、現在の作業ディレクトリ (デフォルトはbin/ディレクトリ) に対して相対的に解決されます。JMeter は、現在のテスト計画 (JMX ファイル) を含むディレクトリへの相対パスもサポートしています。パス名が " ~/ " (またはjmeter.save.saveservice.base_prefix JMeter プロパティにあるもの) で始まる場合、パスは JMX ファイルの場所からの相対パスであると想定されます。
いいえ
ブラウズ…
ファイル参照ボタン
いいえ
エラー
エラーのある結果のみを書き込み/読み取りするには、これを選択します
いいえ
成功
エラーなしで結果のみを書き込み/読み取りするには、これを選択します。ErrorsSuccessesも選択されていない場合は、すべての結果が処理されます。
いいえ
構成、設定
構成ボタン、以下を参照
いいえ

サンプル結果保存設定

以下に示すように、構成ポップアップを使用して、さまざまな項目を結果ログ ファイル (JTL) に保存するようにリスナーを構成できます。デフォルトは、 Listener Default Configurationドキュメントで説明されているように定義されています。名前の後に ( CSV )が付いている項目は、CSV 形式にのみ適用されます。( XML )が付いている項目は、XML 形式にのみ適用されます。現在、CSV 形式を使用して改行を含むアイテムを保存することはできません。

Cookie、メソッド、およびクエリ文字列は、「Sampler Data」オプションの一部として保存されることに注意してください。

サンプル結果保存構成のコントロール パネルのスクリーンショット
サンプル結果保存構成のコントロール パネルのスクリーンショット
^

グラフ結果

グラフの結果は、多くのリソース (メモリと CPU) を消費するため、負荷テスト中に使用してはなりません。機能テスト、またはテスト計画のデバッグと検証中にのみ使用してください。

Graph Results リスナーは、すべてのサンプル時間をプロットする単純なグラフを生成します。グラフの下部に沿って、現在のサンプル (黒)、すべてのサンプルの現在の平均 (青)、現在の標準偏差 (赤)、および現在のスループット レート (緑) がミリ秒単位で表示されます。

スループットの数値は、サーバーが処理した 1 分あたりの実際の要求数を表します。この計算には、テストに追加したすべての遅延と JMeter 独自の内部処理時間が含まれます。このような計算を行う利点は、この数値が実際のものを表していることです。実際、サーバーは 1 分間にそれだけ多くのリクエストを処理しており、スレッドの数を増やしたり、遅延を減らしたりして、サーバーの最大スループットを検出できます。一方、遅延と JMeter の処理を​​考慮して計算した場合、その数値から何を結論できるかは不明です。

グラフ結果のコントロール パネルのスクリーンショット
グラフ結果のコントロール パネルのスクリーンショット

次の表では、グラフの項目について簡単に説明します。統計用語の正確な意味の詳細については、ウィキペディアなどの Web を参照するか、統計に関する本を参照してください。

  • データ- 実際のデータ値をプロットします
  • Average - 平均をプロットします
  • 中央値-中央値(中間値)をプロットします
  • 偏差-標準偏差(変動の尺度) をプロットします。
  • スループット- 単位時間あたりのサンプル数をプロットします

ディスプレイ下部の個々の数字は現在の値です。「最新のサンプル」は、「データ」としてグラフに表示される現在の経過サンプル時間です。

グラフの左上に表示される値は、応答時間の 90 パーセンタイルの最大値です。

^

アサーション結果

アサーションの結果は、多くのリソース (メモリと CPU) を消費するため、負荷テスト中に使用してはなりません。機能テスト、またはテスト計画のデバッグと検証中にのみ使用してください。

アサーション結果ビジュアライザーには、取得した各サンプルのラベルが表示されます。また、テスト計画の一部であるアサーションの失敗も報告します。

アサーション結果のコントロール パネルのスクリーンショット
アサーション結果のコントロール パネルのスクリーンショット
^

結果ツリーを表示する ¶

結果ツリーの表示は、多くのリソース (メモリと CPU) を消費するため、負荷テスト中は使用しないでください。機能テスト、またはテスト計画のデバッグと検証中にのみ使用してください。
結果ツリーの表示には、すべてのサンプル応答のツリーが表示され、任意のサンプルの応答を表示できます。応答を表示するだけでなく、この応答を取得するのにかかった時間といくつかの応答コードを確認できます。Request パネルには、JMeter によって追加されたヘッダーのみが表示されることに注意してください。HTTP プロトコルの実装によって追加される可能性のある ヘッダー ( Hostなど) は表示されません。

応答を表示するにはいくつかの方法があり、左側のパネルの下部にあるドロップダウン ボックスで選択できます。

レンダラー説明
CSS/JQuery テスター CSS/JQuery テスターは、テキスト応答に対してのみ機能します。上部パネルにプレーンテキストが表示されます。[テスト] ボタンを使用すると、ユーザーは CSS/JQuery を上部パネルに適用でき、結果が下部パネルに表示されます。
CSS/JQuery 式エンジンは JSoup または Jodd にすることができます。これら 2 つの実装の構文はわずかに異なります。
たとえば、セレクタa[class=sectionlink]属性hrefを現在の JMeter 関数ページに適用すると、次の出力が得られます。
マッチ数: 74
Match[1]=#関数
Match[2]=#what_can_do
Match[3]=#where
Match[4]=#方法
Match[5]=#function_helper
Match[6]=#関数
Match[7]=#__regexFunction
Match[8]=#__regexFunction_parms
Match[9]=#__カウンター
… 等々 …

書類 ドキュメント ビューには、Microsoft Office (Word、Excel、PowerPoint 97-2003、2007-2010 (openxml)、Apache OpenOffice (writer、calc、impress)、HTML、gzip、jar/zip など) などのさまざまな種類のドキュメントから抽出されたテキストが表示されます。ファイル (コンテンツのリスト)、および mp3、mp4、flv などの「マルチメディア」ファイルの一部のメタデータ。サポートされている形式の完全なリストは、Apache Tika 形式のページで入手できます。
ドキュメント ビューの要件は、 Apache Tika バイナリ パッケージ( tika-app-xxjar )をダウンロードし、これをJMETER_HOME/libディレクトリに配置することです。
ドキュメントが 10 MB を超える場合、表示されません。この制限を変更するには、JMeter プロパティのdocument.max_size (単位はバイト) を設定するか、0に設定して制限を解除します。
HTML HTML ビューは、応答を HTML としてレンダリングしようとします。レンダリングされた HTML は、Web ブラウザーで得られるビューと比べて劣る可能性があります。ただし、最初の結果の評価に役立つ簡単な概算を提供します。
画像、スタイルシートなどはダウンロードされません。
HTML (リソースのダウンロード) HTML (リソースのダウンロード) ビューオプションが選択されている場合、レンダラーは、HTML コードによって参照されるイメージ、スタイル シートなどをダウンロードできます。
HTML ソース形式 HTML ソース形式のビューオプションが選択されている場合、レンダラーは Jsoup によって形式設定および消去された HTML ソース コードを表示します
JSON JSON ビューは、応答をツリー スタイルで表示します( JavaScript に埋め込まれた JSON も処理します)。
JSON パス テスター JSON パス テスター ビューでは、JSON-PATH 式をテストし、特定の応答から抽出されたデータを確認できます。
JSON JMESPath テスター JSON JMESPath Tester ビューを使用すると、 JMESPath式をテストし、特定の応答から抽出されたデータを確認できます。
正規表現テスター Regexp Tester ビューは、テキスト応答に対してのみ機能します。上部パネルにプレーンテキストが表示されます。「テスト」ボタンを使用すると、ユーザーは正規表現を上部パネルに適用でき、結果が下部パネルに表示されます。
正規表現エンジンは、Regular Expression Extractor で使用されているものと同じです。
たとえば、RE (JMeter\w*).*を現在の JMeter ホームページに適用すると、次の出力が得られます。
マッチ数: 26
Match[1][0]=JMeter - Apache JMeter</title>
Match[1][1]=JMeter
Match[2][0]=JMeter" title="JMeter" border="0"/></a>
Match[2][1]=JMeter
Match[3][0]=JMeterCommitters">貢献者</a>
Match[3][1]=JMeterCommitters
… 等々 …

[] 内の最初の数字は一致番号です。2 番目の数字はグループです。グループ[0]は、RE 全体に一致するものです。グループ[1]、最初のグループに一致するものです。つまり、この場合は(JMeter\w*)です。図 9b (下) を参照してください。
文章 デフォルトのテキスト ビューには、応答に含まれるすべてのテキストが表示されます。これは、応答のコンテンツ タイプがテキストと見なされる場合にのみ機能することに注意してください。content-typeが次のいずれかで始まる 場合は、バイナリと見なされます。それ以外の場合は、テキストと見なされます。
画像/
オーディオ/
ビデオ/

XML XML ビューには、応答がツリー スタイルで表示されます。DTD ノードまたは Prolog ノードはツリーに表示されません。ただし、応答にはそれらのノードが含まれる場合があります。任意のノードを右クリックして、その下のすべてのノードを展開または折りたたむことができます。
XPath テスター XPath テスターは、テキスト応答に対してのみ機能します。上部パネルにプレーンテキストが表示されます。[テスト] ボタンを使用すると、ユーザーは XPath クエリを上部パネルに適用でき、結果が下部パネルに表示されます。
境界抽出テスター Boundary Extractor Testerは、テキスト応答に対してのみ機能します。上部パネルにプレーンテキストが表示されます。[テスト] ボタンを使用すると、ユーザーは境界抽出クエリを上部パネルに適用でき、結果が下部パネルに表示されます。

自動スクロール?オプションは、ツリー選択で最後のノードを表示することを許可します

バージョン 3.2 以降、View のエントリ数はプロパティview.results.tree.max_resultsの値に制限され、デフォルトは500エントリです。プロパティを0に設定すると、以前の動作に戻すことができます。これは大量のメモリを消費する可能性があることに注意してください。

検索オプションを使用すると、ほとんどのビューで表示されたデータを検索することもできます 。検索の結果は、上のディスプレイで強調表示されます。たとえば、下のコントロール パネルのスクリーンショットは、「Java」を検索した結果の 1 つを示しています。検索は表示されているテキストに対して行われるため、テキスト ビューと HTML ビューを検索すると異なる結果が得られる場合があることに注意してください。
注: 正規表現は Java エンジンを使用します (Regular Expression Extractor または Regexp Tester ビューのような ORO エンジンではありません)。

content-typeが指定されていない 場合、そのコンテンツはどの応答データ パネルにも表示されません。この場合、[応答をファイルに保存] を使用してデータを保存できます。応答データは引き続きサンプル結果で使用できるため、ポストプロセッサを使用してアクセスできることに注意してください。

応答データが 200K より大きい場合、表示されません。この制限を変更するには、JMeter プロパティview.results.tree.max_sizeを設定します。Save Responses to a file を使用して、応答全体をファイルに保存することもでき ます。

追加のレンダラーを作成できます。クラスはインターフェースorg.apache.jmeter.visualizers.ResultRendererを実装する か、抽象クラスorg.apache.jmeter.visualizers.SamplerResultTabを拡張する必要があり、コンパイルされたコードは JMeter で使用できる必要があります (たとえば、lib/ extディレクトリ)。

結果ツリーの表示のコントロール パネルのスクリーンショット
結果ツリーの表示のコントロール パネルのスクリーンショット

コントロール パネル (上) は、HTML 表示の例を示しています。
図 9 (下) は、XML 表示の例を示しています。
図 9a (下) は、正規表現テスターの表示例を示しています。
図 9b (下) は、ドキュメント表示の例を示しています。

図 9 サンプル XML 表示
図 9 サンプル XML 表示
図 9a 正規表現テストの表示例
図 9a 正規表現テストの表示例
図 9b サンプル ドキュメント (ここでは PDF) 表示
図 9b サンプル ドキュメント (ここでは PDF) 表示
^

集計レポート

集計レポートは、テスト内の異なる名前のリクエストごとにテーブル行を作成します。リクエストごとに、レスポンス情報を合計し、リクエスト数、最小、最大、平均、エラー率、おおよそのスループット (リクエスト/秒)、およびキロバイト/秒のスループットを提供します。テストが完了すると、スループットはテスト全体の実際のスルーになります。

スループットは、サンプラ ターゲット (たとえば、HTTP サンプルの場合はリモート サーバー) の観点から計算されます。JMeter は、リクエストが生成された合計時間を考慮に入れます。他のサンプラーとタイマーが同じスレッドにある場合、合計時間が増加するため、スループット値が減少します。したがって、名前の異なる 2 つの同一のサンプラーのスループットは、同じ名前の 2 つのサンプラーの半分になります。集計レポートから最良の結果を得るには、サンプラー名を正しく選択することが重要です。

中央値と 90 % ライン (90パーセンタイル) の値の計算には、追加のメモリが必要です。JMeter はサンプルを同じ経過時間で結合するようになったため、使用するメモリがはるかに少なくなりました。ただし、数秒以上かかるサンプルの場合、同じ時間を持つサンプルが少なくなる可能性があり、その場合はより多くのメモリが必要になります。後でこのリスナーを使用して、CSV または XML 結果ファイルをリロードできます。これは、パフォーマンスへの影響を回避するための推奨される方法です。個々のサンプルを保存せず、一定のメモリを必要とする同様のリスナー については、概要レポートを参照してください。

JMeter 2.12 以降では、計算する 3 つのパーセンタイル値を構成できます。これは、プロパティを設定することで実行できます。
  • aggregate_rpt_pct1 : デフォルト90パーセンタイル
  • aggregate_rpt_pct2 : デフォルト95パーセンタイル
  • aggregate_rpt_pct3 : デフォルトは99パーセンタイル
  • ラベル- サンプルのラベル。[グループ名をラベルに含めますか? ] を選択すると、スレッド グループの名前がプレフィックスとして追加されます。これにより、必要に応じて、異なるスレッド グループの同一のラベルを個別に照合できます。
  • # Samples - 同じラベルを持つサンプルの数
  • Average - 一連の結果の平均時間
  • 中央値-中央値は、一連の結果の中間にある時間です。サンプルの 50 % は、この時間より長くかかりませんでした。残りは少なくとも同じくらい時間がかかりました。
  • 90% ライン- サンプルの 90% がこの時間より長くかからなかった。残りのサンプルは、少なくともこれと同じくらいの時間がかかりました。( 90パーセンタイル )
  • 95% ライン- サンプルの 95% は、この時間より長くかかりませんでした。残りのサンプルは、少なくともこれと同じくらいの時間がかかりました。( 95パーセンタイル )
  • 99% ライン- サンプルの 99% は、この時間より長くかかりませんでした。残りのサンプルは、少なくともこれと同じくらいの時間がかかりました。( 99パーセンタイル )
  • Min - 同じラベルのサンプルの最短時間
  • Max - 同じラベルを持つサンプルの最長時間
  • エラー % - エラーのあるリクエストの割合
  • スループット-スループットは、秒/分/時間あたりのリクエスト数で測定されます。時間単位は、表示されるレートが少なくとも 1.0 になるように選択されます。スループットを CSV ファイルに保存すると、リクエスト/秒で表されます。つまり、30.0 リクエスト/分は 0.5 として保存されます。
  • 受信 KB/秒- 1 秒あたりの受信キロバイト数で測定されたスループット
  • 送信 KB/秒- 1 秒あたりの送信キロバイト数で測定されたスループット

時間はミリ秒単位です。

集計レポートのコントロール パネルのスクリーンショット
集計レポートのコントロール パネルのスクリーンショット

下図は「グループ名を含める」チェックボックスを選択した例です。

サンプル "
グループ名を含める」表示例
^

結果を表に表示

このビジュアライザーは、サンプル結果ごとに行を作成します。View Results Treeと同様に、このビジュアライザーは大量のメモリを使用します。

デフォルトでは、メイン (親) サンプルのみが表示されます。サブサンプル (子サンプル) は表示されません。JMeter には「Child Samples?」チェックボックスがあります。これを選択すると、メイン サンプルの代わりにサブ サンプルが表示されます。

結果を表に表示するコントロール パネルのスクリーンショット
結果を表に表示するコントロール パネルのスクリーンショット
^

シンプルなデータライター

このリスナーは結果をファイルに記録できますが、UI には記録できません。GUI のオーバーヘッドをなくすことで、データを記録する効率的な手段を提供することを目的としています。CLI モードで実行している場合、-lフラグを使用してデータ ファイルを作成できます。保存するフィールドは、JMeter プロパティによって定義されます。詳細については、jmeter.propertiesファイルを参照してください。
シンプルデータライタのコントロールパネルのスクリーンショット
シンプルデータライタのコントロールパネルのスクリーンショット
^

集計グラフ

集計グラフは、集計レポートに似ています。主な違いは、集計グラフが棒グラフを生成し、グラフを PNG ファイルとして保存する簡単な方法を提供することです。
集計グラフのコントロール パネルのスクリーンショット
集計グラフのコントロール パネルのスクリーンショット

このグラフを描画するための設定例を下図に示します。

集計グラフの設定
集計グラフの設定
注意: このパラメータすべてJMeter JMX スクリプトに保存されません。

パラメータ

属性
説明
必須
列の設定
  • 表示する列:グラフに表示する列を選択します。
  • 長方形の色:右の色の長方形をクリックすると、ポップアップ ダイアログが開き、列のカスタム色を選択できます。
  • 前景色値のテキストの色を変更できます。
  • 値のフォント:テキストのフォント設定を定義できます。
  • アウトライン バーを描画しますか? 棒グラフに境界線を引くかどうか
  • 番号のグループを表示しますか? Y 軸のラベルに番号グループを表示するかどうか。
  • 値ラベルは垂直ですか? 値ラベルの向きを変更します。(デフォルトは水平)
  • 列ラベルの選択:結果ラベルでフィルターします。正規表現を使用できます。例: .*Transaction.*
    グラフを表示する前に、[フィルターの適用] ボタンをクリックして内部データを更新します。
はい
題名
グラフの頭にグラフのタイトルを定義します。空の値がデフォルト値です: " Aggregate Graph "。ボタンSynchronize with nameは、リスナーのラベルでタイトルを定義します。グラフ タイトルのフォント設定を定義する
いいえ
グラフサイズ
現在の JMeter のウィンドウ サイズに応じて、幅と高さでグラフ サイズを計算します。カスタム サイズを定義するには、[幅] フィールドと[高さ]フィールドを使用します。単位はピクセルです。
いいえ
X軸設定
X 軸ラベルの最大長を定義します (ピクセル単位)。
いいえ
Y軸設定
Y 軸のカスタム最大値を定義します。
いいえ
伝説
チャートの凡例の配置とフォント設定を定義する
はい
^

応答時間グラフ

応答時間グラフは、ラベル付けされた要求ごとに、テスト中の応答時間の変化を示す折れ線グラフを描画します。同じタイムスタンプに多数のサンプルが存在する場合は、平均値が表示されます。
応答時間グラフのコントロール パネルのスクリーンショット
応答時間グラフのコントロール パネルのスクリーンショット

このグラフを描画するための設定例を下図に示します。

応答時間グラフの設定
応答時間グラフの設定
注意: このパラメータはすべて JMeter .jmxファイルに保存されます。

パラメータ

属性
説明
必須
間隔 (ミリ秒)
X 軸間隔のミリ秒単位の時間。サンプルは、この値に従ってグループ化されます。グラフを表示する前に、Apply intervalボタンをクリックして内部データを更新します。
はい
サンプラーのラベル選択
結果ラベルでフィルタリングします。正規表現を使用できます。.*トランザクション.* . グラフを表示する前に、[フィルターの適用] ボタンをクリックして内部データを更新します。
いいえ
題名
グラフの頭にグラフのタイトルを定義します。空の値はデフォルト値です: " Response Time Graph "。ボタンSynchronize with nameは、リスナーのラベルでタイトルを定義します。グラフ タイトルのフォント設定を定義する
いいえ
回線設定
線の幅を定義します。各値ポイントのタイプを定義します。なしを選択すると、マークのない行が表示されます
はい
グラフサイズ
現在の JMeter のウィンドウ サイズに応じて、幅と高さでグラフ サイズを計算します。カスタム サイズを定義するには、[幅] フィールドと[高さ]フィールドを使用します。単位はピクセルです。
いいえ
X軸設定
X 軸ラベルの日付形式をカスタマイズします。構文は Java SimpleDateFormat APIです。
いいえ
Y軸設定
Y 軸のカスタム最大値をミリ秒単位で定義します。スケールの増分を定義します (ミリ秒単位)。Y 軸ラベルに数値グループを表示するかどうかを指定します。
いいえ
伝説
チャートの凡例の配置とフォント設定を定義する
はい
^

メーラービジュアライザー ¶

メーラー ビジュアライザーは、テスト実行がサーバーからあまりにも多くの失敗した応答を受信した場合に電子メールを送信するように設定できます。

Mailer Visualizer のコントロール パネルのスクリーンショット
Mailer Visualizer のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
から
メッセージの送信元の電子メール アドレス。
はい
お届け先
メッセージの送信先の電子メール アドレス (コンマ区切り)。
はい
成功の主題
成功メッセージの電子メールの件名。
いいえ
成功限界
以前に失敗の制限に達した後、成功した応答のこの数を超える と、成功の電子メールが送信されます。したがって、メーラーは、失敗-成功-失敗-成功などの順序でメッセージを送信するだけです。
はい
失敗の件名
失敗メッセージの電子メールの件名。
いいえ
失敗限界
失敗した応答がこの数を超えると、失敗の電子メールが送信されます。つまり、最初の失敗で電子メールを送信するには、カウントを0に設定します。
はい
ホスト
SMTP サーバー (電子メール リダイレクタ) サーバーの IP アドレスまたはホスト名。
いいえ
ポート
SMTP サーバーのポート (デフォルトは25 )。
いいえ
ログイン
認証に使用されるログイン。
いいえ
パスワード
認証に使用するパスワード。
いいえ
接続セキュリティ
SMTP 認証の暗号化のタイプ (SSL、TLS、またはなし)。
いいえ
テストメール
このボタンを押すとテストメールが送信されます
いいえ
失敗
これまでに受信した障害の現在の合計数を保持するフィールド。
いいえ
^

BeanShell リスナー

BeanShell Listener を使用すると、BeanShell を使用して、保存などのサンプルを処理できます。

BeanShell の使用の詳細については、BeanShell の Web サイトを参照してください。

JSR223 Listener + Groovyへの移行は、パフォーマンス、新しい Java 機能のサポート、および BeanShell ライブラリの限定的なメンテナンスのために強く推奨されます。

テスト要素は、ThreadListenerメソッドとTestListenerメソッドをサポートしています。これらは初期化ファイルで定義する必要があります。定義の例 については、ファイルBeanShellListeners.bshrcを参照してください。

BeanShell リスナーのコントロール パネルのスクリーンショット
BeanShell リスナーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。名前はスクリプト変数 Label に格納されます
各呼び出しの前に bsh.Interpreter をリセットします
このオプションを選択すると、サンプルごとにインタープリターが再作成されます。これは、一部の長時間実行されるスクリプトで必要になる場合があります。詳細については、「ベスト プラクティス - BeanShell スクリプト」を参照してください。
はい
パラメーター
BeanShell スクリプトに渡すパラメーター。パラメータは次の変数に格納されます。
パラメーター
パラメータを単一の変数として含む文字列
bsh.args
パラメータを含む文字列配列、空白で分割
いいえ
スクリプトファイル
実行する BeanShell スクリプトを含むファイル。ファイル名はスクリプト変数FileNameに格納されます
いいえ
脚本
実行する BeanShell スクリプト。戻り値は無視されます。
はい(スクリプトファイルが提供されていない場合)

スクリプトを呼び出す前に、いくつかの変数が BeanShell インタープリターに設定されます。

  • log - ( Logger ) - ログファイルへの書き込みに使用できます
  • ctx - ( JMeterContext ) - コンテキストへのアクセスを提供します
  • vars - ( JMeterVariables ) - 変数への読み取り/書き込みアクセスを提供します。
    vars.get(キー);
    vars.put(キー、値);
    vars.putObject("OBJ1",新しいオブジェクト());
    
  • props - (JMeterProperties - クラスjava.util.Properties ) - 例props.get("START.HMS"); props.put("PROP1","1234");
  • sampleResultprev - ( SampleResult ) - 前のSampleResultへのアクセスを提供します
  • sampleEvent ( SampleEvent ) は、現在のサンプル イベントへのアクセスを提供します。

上記の各変数で使用可能なすべてのメソッドの詳細については、Javadoc を確認してください。

プロパティbeanshell.listener.initが定義されている場合、これは、BeanShell スクリプトで使用するメソッドなどを定義するために使用できる初期化ファイルをロードするために使用されます。

^

概要レポート

概要レポートは、テスト内の異なる名前の要求ごとにテーブル行を作成します。これは、使用するメモリが少ないことを除いて 、 Aggregate Reportに似ています。

スループットは、サンプラ ターゲット (たとえば、HTTP サンプルの場合はリモート サーバー) の観点から計算されます。JMeter は、リクエストが生成された合計時間を考慮に入れます。他のサンプラーとタイマーが同じスレッドにある場合、合計時間が増加するため、スループット値が減少します。したがって、名前の異なる 2 つの同一のサンプラーのスループットは、同じ名前の 2 つのサンプラーの半分になります。レポートから最良の結果を得るには、サンプラー ラベルを正しく選択することが重要です。

  • ラベル- サンプルのラベル。[グループ名をラベルに含めますか? ] を選択すると、スレッド グループの名前がプレフィックスとして追加されます。これにより、必要に応じて、異なるスレッド グループの同一のラベルを個別に照合できます。
  • # Samples - 同じラベルを持つサンプルの数
  • Average - 一連の結果の平均経過時間
  • Min - 同じラベルを持つサンプルの最小経過時間
  • Max - 同じラベルを持つサンプルの最長経過時間
  • 標準 開発者 -サンプル経過時間の標準偏差
  • エラー % - エラーのあるリクエストの割合
  • スループット-スループットは、秒/分/時間あたりのリクエスト数で測定されます。時間単位は、表示される率が少なくとも1.0になるように選択されます。スループットを CSV ファイルに保存すると、リクエスト/秒で表されます。つまり、30.0 リクエスト/分は0.5として保存されます。
  • 受信 KB/秒- キロバイト/秒で測定されたスループット
  • 送信 KB/秒- キロバイト/秒で測定されたスループット
  • 平均 Bytes - サンプル応答の平均サイズ (バイト単位)。

時間はミリ秒単位です。

概要レポートのコントロール パネルのスクリーンショット
概要レポートのコントロール パネルのスクリーンショット

下図は「グループ名を含める」チェックボックスを選択した例です。

サンプル "
グループ名を含める」表示例
^

応答をファイルに保存する

このテスト要素は、テスト計画のどこにでも配置できます。スコープ内のサンプルごとに、応答データのファイルが作成されます。これの主な用途は機能テストの作成ですが、応答が大きすぎて 結果ツリーの表示リスナーに表示できない場合にも役立ちます。ファイル名は、指定されたプレフィックスと番号から作成されます (これが無効にされていない限り、以下を参照してください)。ファイル拡張子は、既知の場合、ドキュメント タイプから作成されます。不明な場合、ファイル拡張子は「不明」に設定されます'。ナンバリングが無効で、サフィックスの追加が無効になっている場合、ファイルのプレフィックスがファイル名全体として使用されます。これにより、必要に応じて固定ファイル名を生成できます。生成されたファイル名はサンプル応答に保存され、必要に応じてテスト ログ出力ファイルに保存できます。

現在のサンプルが最初に保存され、その後にサブサンプル (子サンプル) が続きます。変数名が指定されている場合、サブサンプルが表示される順序でファイルの名前が保存されます。下記参照。

応答をファイルに保存するコントロール パネルのスクリーンショット
[応答をファイルに保存] のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
ファイル名のプレフィックス (フォルダーを含めることができます)
生成されたファイル名のプレフィックス。これにはディレクトリ名を含めることができます。相対パスは、現在の作業ディレクトリ (デフォルトはbin/ディレクトリ) に対して相対的に解決されます。JMeter は、現在のテスト計画 (JMX ファイル) を含むディレクトリへの相対パスもサポートしています。パス名が " ~/ " (またはjmeter.save.saveservice.base_prefix JMeter プロパティにあるもの) で始まる場合、パスは JMX ファイルの場所からの相対パスであると想定されます。
プレフィックスの親フォルダーが存在しない場合、JMeter はそれらを作成し、失敗した場合はテストを停止します。
ファイル名のプレフィックスにはスレッド関連のデータを含めてはならないことに注意してください。そのため、このフィールドでは変数 ( ${varName} ) や${__threadNum}などの関数を使用しないでください。
はい
保存ファイル名を含む変数名
生成されたファイル名を保存する変数の名前 (後でテスト計画で使用できるようにするため)。サブサンプルがある場合は、数値の接尾辞が変数名に追加されます。たとえば、変数名がFILENAMEの場合、親サンプル ファイル名は変数FILENAMEに保存され、子サンプラーのファイル名はFILENAME1FILENAME2など に保存されます。
いいえ
シーケンス番号の最小長
プレフィックスに番号を追加しない」がチェックされていない場合、プレフィックスに追加される番号は、プレフィックスがこの値のサイズになるように0で埋められます。デフォルトは0です。
いいえ
失敗した応答のみを保存
選択すると、失敗した応答のみが保存されます
はい
成功した応答のみを保存
選択すると、成功した応答のみが保存されます
はい
プレフィックスに番号を追加しないでください
選択すると、番号はプレフィックスに追加されません。このオプションを選択する場合は、プレフィックスが一意であることを確認してください。そうしないと、ファイルが上書きされる可能性があります。
はい
コンテンツ タイプ サフィックスを追加しない
選択すると、サフィックスは追加されません。このオプションを選択する場合は、プレフィックスが一意であることを確認してください。そうしないと、ファイルが上書きされる可能性があります。
はい
タイムスタンプを追加
選択すると、yyyyMMdd-HHmm_ の形式に従って、日付がファイル サフィックスに含まれます。
はい
トランザクション コントローラーの SampleResult を保存しない
選択すると、Transaction Controller によって生成された SamplerResult は無視されます
はい
^

JSR223 リスナー

JSR223 リスナーを使用すると、JSR223 スクリプト コードをサンプル結果に適用できます。

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
言語
使用する JSR223 言語
はい
パラメーター
スクリプトに渡すパラメーター。パラメータは次の変数に格納されます。
パラメーター
パラメータを単一の変数として含む文字列
引数
パラメータを含む文字列配列、空白で分割
いいえ
スクリプトファイル
実行するスクリプトを含むファイル。相対ファイル パスが使用されている場合は、「user.dir」システム プロパティによって参照されるディレクトリからの相対パスになります。
いいえ
スクリプト コンパイルのキャッシュ
JMeter がスクリプト コンパイルの結果をキャッシュするために使用するテスト プラン全体で一意の文字
このオプションをチェックせずに Groovy を使用している場合は、JSR223 Sampler Java System プロパティの注を参照してください。
いいえ
脚本
実行するスクリプト。
はい(スクリプトファイルが提供されていない場合)

スクリプトを呼び出す前に、いくつかの変数が設定されます。これらは JSR223 変数であることに注意してください。つまり、スクリプトで直接使用できます。

ログ
( Logger ) - ログファイルへの書き込みに使用できます
ラベル
文字列ラベル
ファイル名
スクリプト ファイル名 (存在する場合)
パラメーター
パラメータ (文字列として)
引数
文字列配列としてのパラメーター (空白で分割)
ctx
( JMeterContext ) - コンテキストへのアクセスを提供します
変数
( JMeterVariables ) - 変数への読み取り/書き込みアクセスを付与します。
vars.get(キー);
vars.put(キー、値);
vars.putObject("OBJ1",新しいオブジェクト());
vars.getObject("OBJ2");
小道具
(JMeterProperties - クラスjava.util.Properties ) - 例props.get("START.HMS"); props.put("PROP1","1234");
サンプル結果前へ
( SampleResult ) - SampleResult へのアクセスを提供します
サンプルイベント
( SampleEvent ) - SampleEvent へのアクセスを提供します
サンプラー
( Sampler )- 最後のサンプラーへのアクセスを提供します
アウト
System.out - 例: OUT.println("message")

上記の各変数で使用可能なすべてのメソッドの詳細については、Javadoc を確認してください。

^

要約結果の生成

このテスト要素は、テスト計画のどこにでも配置できます。これまでのテスト実行の概要をログ ファイルや標準出力に生成します。現在の合計と差分合計の両方が表示されます。出力は適切な時間境界でn秒 (デフォルトは 30 秒)ごとに生成されるため、同時に複数のテストを実行すると同期されます。
要約/差分行はサンプルが発行された場合にのみ書き込まれるため、間隔内でテストでサンプルが生成されない場合、生成の間隔が考慮されない場合があります。
サマライザーの構成項目については、 jmeter.propertiesファイルを 参照してください。
# 次のプロパティを定義して、その名前のサマライザーを自動的に開始します
# (CLI モードのみに適用)
#summariser.name=要約
#
# サマリー間の間隔 (秒単位) デフォルト 3 分
#summariser.interval=30
#
# ログファイルにメッセージを書き込む
#summariser.log=true
#
# System.out にメッセージを書き込む
#summariser.out=true
この要素は、主にバッチ (CLI) の実行を目的としています。出力は次のようになります。
label + 16 in 0:00:12 = 1.3/s 平均: 1608 最小: 1163 最大: 2009 エラー: 0 (0.00%) アクティブ: 5 開始: 5 終了: 0
label + 82 in 0:00:30 = 2.7/s 平均: 1518 最小: 1003 最大: 2020 エラー: 0 (0.00%) アクティブ: 5 開始: 5 終了: 0
label = 98 in 0:00:42 = 2.3/s 平均: 1533 最小: 1003 最大: 2020 エラー: 0 (0.00%)
label + 85 in 0:00:30 = 2.8/s 平均: 1505 最小: 1008 最大: 2005 エラー: 0 (0.00%) アクティブ: 5 開始: 5 終了: 0
label = 183 in 0:01:13 = 2.5/s 平均: 1520 最小: 1003 最大: 2020 エラー: 0 (0.00%)
label + 79 in 0:00:30 = 2.7/s 平均: 1578 最小: 1089 最大: 2012 エラー: 0 (0.00%) アクティブ: 5 開始: 5 終了: 0
label = 262 in 0:01:43 = 2.6/s 平均: 1538 最小: 1003 最大: 2020 エラー: 0 (0.00%)
label + 80 in 0:00:30 = 2.7/s 平均: 1531 最小: 1013 最大: 2014 エラー: 0 (0.00%) アクティブ: 5 開始: 5 終了: 0
ラベル = 342 インチ 0:02:12 = 2.6/秒 平均: 1536 最小: 1003 最大: 2020 エラー: 0 (0.00%)
label + 83 in 0:00:31 = 2.7/s 平均: 1512 最小: 1003 最大: 1982 エラー: 0 (0.00%) アクティブ: 5 開始: 5 終了: 0
label = 425 in 0:02:43 = 2.6/s 平均: 1531 最小: 1003 最大: 2020 エラー: 0 (0.00%)
label + 83 in 0:00:29 = 2.8/s 平均: 1487 最小: 1023 最大: 2013 エラー: 0 (0.00%) アクティブ: 5 開始: 5 終了: 0
label = 508 in 0:03:12 = 2.6/s 平均: 1524 最小: 1003 最大: 2020 エラー: 0 (0.00%)
label + 78 in 0:00:30 = 2.6/s 平均: 1594 最小: 1013 最大: 2016 エラー: 0 (0.00%) アクティブ: 5 開始: 5 終了: 0
label = 586 in 0:03:43 = 2.6/s 平均: 1533 最小: 1003 最大: 2020 エラー: 0 (0.00%)
label + 80 in 0:00:30 = 2.7/s 平均: 1516 最小: 1013 最大: 2005 エラー: 0 (0.00%) アクティブ: 5 開始: 5 終了: 0
label = 666 in 0:04:12 = 2.6/s 平均: 1531 最小: 1003 最大: 2020 エラー: 0 (0.00%)
label + 86 in 0:00:30 = 2.9/s 平均: 1449 最小: 1004 最大: 2017 エラー: 0 (0.00%) アクティブ: 5 開始: 5 終了: 0
label = 752 in 0:04:43 = 2.7/s 平均: 1522 最小: 1003 最大: 2020 エラー: 0 (0.00%)
label + 65 in 0:00:24 = 2.7/s 平均: 1579 最小: 1007 最大: 2003 エラー: 0 (0.00%) アクティブ: 0 開始: 5 終了: 5
label = 817 in 0:05:07 = 2.7/s 平均: 1526 最小: 1003 最大: 2020 エラー: 0 (0.00%)
label」は要素の名前です。「+」は、線がデルタ線であることを意味します。つまり、最後の出力以降の変更を示します。
=」は、線が合計線であることを意味します。つまり、現在の合計を示します。
JMeter ログ ファイルのエントリにはタイムスタンプも含まれます。例 " 817 in 0:05:07 = 2.7/s " は、5 分 7 秒で 817 サンプルが記録されたことを意味し、1 秒あたり 2.7 サンプルで動作します。Avg
(平均)、Min (最小)、およびMax (最大) 時間はミリ秒単位です。 " Err " は、エラーの数を意味します (パーセンテージでも表示されます)。

最後の 2 行は、テストの最後に表示されます。それらは適切な時間境界に同期されません。最初と最後のデルタは、間隔より短い場合があることに注意してください (上記の例では、これは 30 秒です)。JMeter は間隔の境界に同期するため、最初のデルタは一般的に低くなります。通常、テストは正確な間隔境界で終了しないため、最後のデルタは低くなります。

ラベルは、サンプル結果をグループ化するために使用されます。したがって、複数のスレッド グループがあり、それらすべてを要約したい場合は、同じラベルを使用するか、要約をテスト計画に追加します (すべてのスレッド グループがスコープ内にあるようにします)。適切なラベルを使用し、サマライザーをテスト計画の適切な部分に追加することで、さまざまな要約グループを実装できます。

CLI モードでは、デフォルトで「summariser」という名前の Generate Summary Results リスナーが設定されています。すでにテスト計画に追加している場合は、別の名前を付けることを確認してください。そうしないと、結果がこのラベル (summary) の下に蓄積され、間違った結果 (sum) が発生します。合計サンプル + Generate Summary Results リスナーの親の下にあるサンプル)。
これはバグではなく、スレッド グループ全体で要約できるようにするための設計上の選択です。
サマリー結果の生成のコントロール パネルのスクリーンショット
サマリー結果の生成のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。出力では「label」として表示されます。同じラベルを持つすべての要素の詳細が一緒に追加されます。
はい
^

比較アサーション ビジュアライザー ¶

比較アサーション ビジュアライザーは、すべての比較アサーション要素の結果を表示します。
比較アサーション ビジュアライザーのコントロール パネルのスクリーンショット
比較アサーション ビジュアライザーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
はい
^

バックエンドリスナー

バックエンド リスナーは、 BackendListenerClient のカスタム実装をプラグインできる非同期リスナーです。デフォルトでは、Graphite 実装が提供されます。
バックエンド リスナーのコントロール パネルのスクリーンショット
バックエンド リスナーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
はい
バックエンド リスナーの実装
BackendListenerClient実装のクラス。
はい
非同期キューのサイズ
非同期処理中に SampleResults を保持するキューのサイズ。
はい
パラメーター
BackendListenerClient実装のパラメーター。
はい

次のパラメーターは、GraphiteBackendListenerClient実装に適用されます。

パラメータ

属性
説明
必須
グラファイトメトリクス送信者
org.apache.jmeter.visualizers.backend.graphite.TextGraphiteMetricsSenderまたはorg.apache.jmeter.visualizers.backend.graphite.PickleGraphiteMetricsSender
はい
グラファイトホスト
Graphite または InfluxDB (Graphite プラグインが有効になっている) サーバー ホスト
はい
グラファイトポート
Graphite または InfluxDB (Graphite プラグインが有効になっている) サーバー ポート。デフォルトは2003です。注意PickleGraphiteMetricsSender (ポート2004 ) は Graphite サーバーとのみ通信できます。
はい
rootMetricsPrefix
バックエンドに送信されるメトリクスのプレフィックス。デフォルトは「jmeter 」です。JMeter は、ルート プレフィックスと samplerName の間にセパレータを追加しないことに注意してください。これが現在、末尾のドットが必要な理由です。
はい
要約のみ
詳細なしで要約のみを送信します。デフォルトはtrueです。
はい
サンプラー一覧
バックエンドに送信されるサンプル結果の名前 (ラベル) を定義します。useRegexpForSamplerList=false の場合、これはセミコロンで区切られた名前のリストです。useRegexpForSamplerList=true の場合、これは名前に対して照合される正規表現です。
はい
useRegexpForSamplerList
メトリクスをバックエンドに報告するサンプラーを選択するには、samplersList を正規表現と見なします。デフォルトはfalseです。
はい
パーセンタイル
バックエンドに送信するパーセンタイル。パーセンタイルには、 12.5などの小数部分が含まれる場合があります。(区切り文字は常に「.」です) リストはセミコロンで区切る必要があります。通常、3 つまたは 4 つの値で十分です。
はい

詳細については、リアルタイムの結果も参照してください。

Grafana ダッシュボード
Grafana ダッシュボード

JMeter 3.2 以降、カスタム スキーマを使用して InfluxDB に直接書き込むことができる実装。これはInfluxdbBackendListenerClientと呼ばれます。次のパラメーターは、 InfluxdbBackendListenerClient実装 に適用されます。

パラメータ

属性
説明
必須
influxdbMetricsSender
org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
はい
influxdbUrl
流入 URL (例: http://influxHost:8086/write?db=jmeter )
はい
influxdbToken
InfluxDB 2認証トークン(例: HE9yIdAPzWJDspH_tCc2UvdKZpX== ); 5.2以降。
いいえ
応用
テストされたアプリケーションの名前。この値は、「アプリケーション」という名前のタグとして「イベント」測定に保存されます。
はい
計測
Influx Line Protocol Referenceに従って測定。デフォルトは「jmeter」です。
はい
要約のみ
詳細なしで要約のみを送信します。デフォルトはtrueです。
はい
サンプラー正規表現
サンプルの名前と照合され、バックエンドに送信される正規表現。
はい
テストタイトル
テスト名。デフォルトはTest nameです。この値は、' events ' 測定に ' text ' という名前のフィールドとして保存されます。JMeter は、テストの開始時と終了時に、この値が「開始」と「終了」で終わる注釈を自動的に生成します。
はい
イベントタグ
Grafana では、各注釈のタグを表示できます。ここで入力できます。この値は、' tags ' という名前のタグとして ' events ' 測定に保存されます。
いいえ
パーセンタイル
バックエンドに送信するパーセンタイル。パーセンタイルには、 12.5などの小数部分が含まれる場合があります (区切り文字は常に「.」です)。リストはセミコロンで区切る必要があります。通常、3 つまたは 4 つの値で十分です。
はい
TAG_WhatEverYouWant
カスタムタグはいくつでも追加できます。それらのそれぞれについて、新しい行を作成し、その名前の前に「TAG_」を付けます
いいえ

詳細については、リアルタイムの結果Grafana の Influxdb アノテーションも参照してください。InfluxDB v2 のリスナーの構成に関するサブセクションもあります。

JMeter 5.4 以降、すべてのサンプル結果を InfluxDB に書き込む実装。InfluxDBRawBackendListenerClientと呼ばれます。これは、データと個々の書き込みの増加により、JMeter と InfluxDB の両方でInfluxdbBackendListenerClientよりも多くのリソースを使用することに注意して ください。次のパラメーターは、 InfluxDBRawBackendListenerClient 実装 に適用されます。

パラメータ

属性
説明
必須
influxdbMetricsSender
org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
はい
influxdbUrl
Influx URL (例: http://influxHost:8086/write?db=jmeter または、クラウドの場合は https://eu-central-1-1.aws.cloud2.influxdata.com/api/v2/write?org =org-id&bucket=jmeter)
はい
influxdbToken
InfluxDB 2認証トークン(例: HE9yIdAPzWJDspH_tCc2UvdKZpX==)
いいえ
計測
Influx Line Protocol Reference に従って測定。デフォルトは「jmeter 」です。
はい
^
^

18.4 構成要素


構成要素を使用して、後でサンプラーが使用するデフォルトと変数を設定できます。これらの要素は、それらが見つかったスコープの開始時、つまり同じスコープ内のサンプラーの前に処理されることに注意してください。

CSV データセットの設定

CSV Data Set Config は、ファイルから行を読み取り、それらを変数に分割するために使用されます。__CSVRead()および__StringFromFile()関数よりも使いやすいです。多数の変数の処理に適しており、「ランダムな」値や一意の値を使用したテストにも役立ちます。

実行時に一意のランダム値を生成すると、CPU とメモリの面でコストがかかるため、テストの前にデータを作成してください。必要に応じて、ファイルからの「ランダムな」データを実行時パラメーターと組み合わせて使用​​し、実行時にすべてを生成するよりもはるかに安価な連結などを使用して、実行ごとに異なる値のセットを作成できます。

JMeter では、値を引用できます。これにより、値に区切り文字を含めることができます。" allow quoted data " が有効になっている場合、値を二重引用符で囲むことができます。これらは削除されます。引用符で囲まれたフィールド内に二重引用符を含めるには、2 つの二重引用符を使用します。例えば:

1,"2,3","4""5" =>
1
2,3
4"5

JMeter は、列名を定義するヘッダー行を持つ CSV ファイルをサポートしています。これを有効にするには、「変数名」フィールドを空のままにします。正しい区切り文字を指定する必要があります。

JMeter は、改行を含む引用符付きデータを含む CSV ファイルをサポートしています。

デフォルトでは、ファイルは 1 回だけ開かれ、各スレッドはファイルから異なる行を使用します。ただし、行がスレッドに渡される順序は、スレッドが実行される順序に依存し、反復間で異なる場合があります。各テスト反復の開始時に行が読み取られます。ファイル名とモードは最初の繰り返しで解決されます。

その他のオプションについては、以下の共有モードの説明を参照してください。各スレッドに独自の値のセットを持たせたい場合は、スレッドごとに 1 つのファイルのセットを作成する必要があります。たとえば、test1.csvtest2.csv、…、test n .csv。ファイル名 test${__threadNum}.csvを使用し、「共有モード」を「現在のスレッド」に設定します。

CSV データセット変数は、各テスト反復の開始時に定義されます。これは構成処理が完了した後であるため、構成時にコンテンツを処理する一部の構成項目 (JDBC 構成など) には使用できません ( バグ 40394を参照)。ただし、変数は HTTP Auth Manager でユーザー名などとして機能します。 . 実行時に処理されます。

特殊なケースとして、区切りフィールドの文字列 " \t " (引用符なし) はタブとして扱われます。

ファイルの終わり ( EOF ) に達し、リサイクル オプションがtrue の場合、読み取りはファイルの最初の行から再開されます。

recycle オプションがfalseで、stopThread がfalseの場合、ファイルの終わりに到達すると、すべての変数が<EOF>に設定されます。この値は、JMeter プロパティcsvdataset.eofstringを設定することで変更できます。

Recycle オプションがfalseで、Stop Thread がtrue の場合、 EOFに達するとスレッドが停止します。

CSV データ セット構成のコントロール パネルのスクリーンショット
CSV Data Set Config のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
ファイル名
読み取るファイルの名前。 相対ファイル名は、アクティブなテスト計画のパスに対して解決されます。 分散テストの場合、CSV ファイルは、JMeter サーバーが開始された場所に対する正しい相対ディレクトリ内のサーバー ホスト システムに保存する必要があります。 絶対ファイル名もサポートされていますが、リモート サーバーが同じディレクトリ構造を持っていない限り、リモート モードでは動作しない可能性が高いことに注意してください。同じ物理ファイルが 2 つの異なる方法 ( csvdata.txt./csvdata.txtなど) で参照されている場合、これらは異なるファイルとして扱われます。OS が大文字と小文字を区別しない場合、csvData.TXTも個別に開かれます。
はい
ファイルエンコーディング
プラットフォームのデフォルトでない場合、ファイルの読み取りに使用されるエンコーディング。
いいえ
変数名
変数名のリスト。名前は区切り文字で区切る必要があります。二重引用符を使用して引用できます。JMeter は CSV ヘッダー行をサポートしています。変数名フィールドが空の場合、ファイルの最初の行が読み取られ、列名のリストとして解釈されます。
いいえ
最初の行を変数名として使用
CSV ファイルの最初の行を無視します。変数名が空でない場合にのみ使用されます。変数名が空の場合、最初の行にはヘッダーが含まれている必要があります。
いいえ
デリミタ
ファイル内のレコードを分割するために使用される区切り文字。行の値が変数よりも少ない場合、残りの変数は更新されないため、以前の値 (存在する場合) が保持されます。
はい
引用データを許可しますか?
CSV ファイルで値を引用できるようにする必要がありますか? 有効にすると、値を" - 二重引用符 で囲むことができ、値に区切り文字を含めることができます。
はい
EOF でリサイクルしますか?
EOFに達したら、ファイルを最初から再読み込みする必要がありますか? (デフォルトはtrue )
はい
EOF でスレッドを停止しますか?
Recycle が false の場合、 EOFでスレッドを停止する必要がありますか? (デフォルトはfalse )
はい
共有モード
  • すべてのスレッド- (デフォルト) ファイルはすべてのスレッド間で共有されます。
  • 現在のスレッド グループ- 各ファイルは、要素が表示されるスレッド グループごとに 1 回開かれます。
  • 現在のスレッド- 各ファイルはスレッドごとに個別に開かれます
  • 識別子- 同じ識別子を共有するすべてのスレッドが同じファイルを共有します。たとえば、4 つのスレッド グループがある場合、2 つ以上のグループに共通の ID を使用して、グループ間でファイルを共有できます。または、スレッド番号を使用して、異なるスレッド グループの同じスレッド番号間でファイルを共有することもできます。
はい
^

FTP リクエストのデフォルト

FTP リクエストのデフォルトのコントロール パネルのスクリーンショット
FTP リクエストのデフォルトのコントロール パネルのスクリーンショット
^

DNSキャッシュマネージャー

DNS キャッシュ マネージャー要素を使用すると、ユーザーが異なる IP からコンテンツを受信したときに、ロード バランサー (CDN など) の背後に複数のサーバーがあるアプリケーションをテストできます。デフォルトでは、JMeter は JVM DNS キャッシュを使用します。そのため、クラスタ内の 1 つのサーバーのみが負荷を受けます。DNS キャッシュ マネージャーは、反復ごとに各スレッドの名前を個別に解決し、解決の結果を内部 DNS キャッシュに保存します。これは、JVM と OS の両方の DNS キャッシュから独立しています。

静的ホストのマッピングを使用して、 /etc/hostsファイルなど をシミュレートできます。これらのエントリは、カスタム リゾルバーよりも優先されます。このマッピングを使用する場合は、 [カスタム DNS リゾルバーを使用する] を有効にする必要があります。

静的ホストテーブルの使い方

たとえば、DNS サーバーに (まだ) 設定されていない名前でアクセスしたいテスト サーバーがあるとします。この例では、サーバーa123.another.example.orgの IP でアクセスするサーバー名はwww.example.comになります。

ワークステーションを変更して、/etc/hostsファイルにエントリを追加するか、OS に相当するエントリを追加するか、DNS キャッシュ マネージャの静的ホスト テーブルにエントリを追加することができます。

www.example.comを最初の列 ( Host ) に 入力し、 a123.another.example.orgを 2 番目の列 ( Hostname または IP address ) に入力します。2 番目の列の名前が示すように、そこでテスト サーバーの IP アドレスを使用することもできます。

テスト サーバーの IP アドレスは、カスタム DNS リゾルバーを使用して検索されます。何も指定しない場合、システムの DNS リゾルバーが使用されます。

これで、HTTPClient4 サンプラーで www.example.comを使用できるようになり、リクエストはa123.another.example.orgに対して行われ、すべてのヘッダーがwww.example.comに設定されます。

DNS Cache Manager のコントロール パネルのスクリーンショット
DNS Cache Manager のコントロール パネルのスクリーンショット
DNS キャッシュ マネージャーは、スレッド グループまたはテスト計画のルートで使用するように設計されています。特定の HTTP Sampler の子要素として配置しないでください
DNS キャッシュ マネージャーは、HTTPClient4 実装を使用する HTTP 要求でのみ機能します。

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
反復ごとにキャッシュをクリアする
選択すると、新しい繰り返しが開始されるたびに、すべてのスレッドの DNS キャッシュがクリアされます。
いいえ
システム DNS リゾルバーを使用する
システム DNS リゾルバーが使用されます。正しい作業のため に、 $JAVA_HOME/jre/lib/security/java.securityを編集し、 networkaddress.cache.ttl=0を追加します。
なし
カスタム DNS リゾルバーを使用する
カスタム DNS リゾルバ (dnsjava ライブラリから) が使用されます。
なし
ホスト名または IP アドレス
使用する DNS サーバーのリスト。空の場合、ネットワーク構成 DNS が使用されます。
いいえ
ボタンを追加
DNS サーバー テーブルにエントリを追加します。
なし
削除ボタン
現在選択されているテーブル エントリを削除します。
なし
ホストとホスト名または IP アドレス
カスタム DNS リゾルバーを使用して解決される静的ホスト エントリへのホスト名のマッピング。
いいえ
静的ホストの追加ボタン
スタティック ホスト テーブルにエントリを追加します。
なし
静的ホストの削除ボタン
テーブルで現在選択されている静的ホストを削除します。
なし
^

HTTP 認可マネージャー

Authorization Manager を使用すると、サーバー認証を使用して制限されている Web ページに対して 1 つ以上のユーザー ログインを指定できます。このタイプの認証は、ブラウザを使用して制限されたページにアクセスし、ブラウザにログイン ダイアログ ボックスが表示されたときに表示されます。JMeter は、このタイプのページに遭遇すると、ログイン情報を送信します。

認可ヘッダーは、ツリー ビュー リスナーの[要求] タブに表示されない場合があります。Java 実装はプリエンプティブ認証を行いますが、JMeter がヘッダーをフェッチするときに Authorization ヘッダーを返しません。HttpComponents (HC 4.5.X) 実装は、3.2 以降、デフォルトでプリエンプティブになり、ヘッダーが表示されます。これを無効にするには、以下のように値を設定します。この場合、認証はチャレンジに応じてのみ実行されます。

ファイルjmeter.propertiesでhttpclient4.auth.preemptive=falseを設定します

注: 上記の設定は、HttpClient サンプラーにのみ適用されます。
URL との一致を探す場合、JMeter は各エントリを順番にチェックし、最初の一致が見つかった時点で停止します。したがって、最も具体的な URL がリストの最初に表示され、その後に具体性の低い URL が続きます。重複する URL は無視されます。スレッドごとに異なるユーザー名/パスワードを使用する場合は、変数を使用できます。これらは、CSV データ セット構成要素 (たとえば) を使用して設定できます。
HTTP Authorization Manager のコントロール パネルのスクリーンショット
HTTP Authorization Manager のコントロール パネルのスクリーンショット
サンプラーのスコープ内に複数の承認マネージャーがある場合、現在、使用する承認マネージャーを指定する方法はありません。

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
反復ごとに認証をクリアしますか?
Kerberos 認証で使用されます。オンにすると、メイン スレッド グループ ループの反復ごとに認証が実行されます。これは通常、各メイン スレッド グループの反復が 1 人の仮想ユーザーの動作を表す場合に役立ちます。
はい
ベース URL
1 つ以上の HTTP 要求 URL に一致する部分的または完全な URL。例として、「 http://localhost/restricted/」のベース URL を「 jmeter 」のユーザー名と「jmeter」のパスワード指定するとします。HTTP 要求を URL " http://localhost/restricted/ant/myPage.html " に送信すると、Authorization Manager は " jmeter "という名前のユーザーのログイン情報を送信します。
はい
ユーザー名
承認するユーザー名。
はい
パスワード
ユーザーのパスワード。(NB これはテスト計画に暗号化されずに保存されます)
はい
ドメイン
NTLM に使用するドメイン。
いいえ
レルム
NTLM に使用する領域。
いいえ
機構
実行する認証のタイプ。JMeter は、使用されている Http サンプラーに基づいて、さまざまな種類の認証を実行できます。
ジャワ
ベーシック
HttpClient 4
BASICDIGESTおよびKerberos
いいえ
Realm は HttpClient サンプラーにのみ適用されます。

ケルベロス構成:

Kerberos を構成するには、少なくとも 2 つの JVM システム プロパティをセットアップする必要があります。

  • -Djava.security.krb5.conf=krb5.conf
  • -Djava.security.auth.login.config=jaas.conf

ファイルbin/system.properties でこれら 2 つのプロパティを構成することもできます。JMeter のbinフォルダーにある 2 つのサンプル構成ファイル ( krb5.confおよびjaas.conf )を参照して他のドキュメントを参照し、Kerberos 構成に合わせて調整してください。

SPNEGO では、クレデンシャルの委任はデフォルトで無効になっています。有効にしたい場合は、プロパティkerberos.spnego.delegate_credtrueに設定してください。

Kerberos SPNEGO 認証用の SPN を生成する場合、IE および Firefox は URL からポート番号を省略します。Chrome には、標準のもの ( 80および443 )と異なる場合にポート番号を含めるオプション ( --enable-auth-negotiate-port ) があります。この動作は、次の JMeter プロパティを次のように設定することでエミュレートできます。

jmeter.propertiesまたはuser.propertiesで、を設定します。

  • kerberos.spnego.strip_port=false

コントロール:
  • 追加ボタン - 認証テーブルにエントリを追加します。
  • 削除ボタン - 現在選択されているテーブル エントリを削除します。
  • ロードボタン - 以前に保存した承認テーブルをロードし、エントリを既存の承認テーブル エントリに追加します。
  • [名前を付けて保存] ボタン - 現在の承認テーブルをファイルに保存します。
テスト計画を保存すると、JMeter は、暗号化されていないパスワードを含め、すべての認証テーブル エントリを自動的に保存します。
認可例

この例をダウンロードしてください。この例では、ローカル サーバー上に 3 つの HTTP 要求を送信するテスト計画を作成しました。そのうちの 2 つはログインが必要で、もう 1 つは全員に公開されています。テスト計画の構成を確認するには、図 10 を参照してください。サーバーには、" secret " という名前の制限付きディレクトリがあり、" index.html " と " index2.html "の 2 つのファイルが含まれています。「 spot 」というパスワードを持つ「 kevin 」という名前のログイン ID を作成しました。そこで、Authorization Manager で、制限付きディレクトリのエントリとユーザー名とパスワードを作成しました (図 11 を参照)。「 SecretPage1」および「SecretPage2」という名前の 2 つの HTTP 要求/secret/index.html " および " /secret/index2.html "。" NoSecretPage " という名前のもう 1 つの HTTP 要求は、 " /index.html "に対して要求を行います。

図 10 - テスト計画
図 10 - テスト計画
図 11 - 承認マネージャー コントロール パネル
図 11 - 承認マネージャー コントロール パネル

テスト計画を実行すると、JMeter は、要求している URL の Authorization テーブルを調べます。ベース URL が URL と一致する場合、JMeter はこの情報をリクエストとともに渡します。

テスト計画をダウンロードできますが、ローカル サーバーのテストとして構築されているため、実行することはできません。ただし、独自のテスト計画を作成する際の参考として使用できます。
^

HTTP キャッシュマネージャー

HTTP キャッシュ マネージャーは、そのスコープ内の HTTP 要求にキャッシュ機能を追加して、ブラウザーのキャッシュ機能をシミュレートするために使用されます。各仮想ユーザー スレッドには独自のキャッシュがあります。デフォルトでは、キャッシュ マネージャーは、LRU アルゴリズムを使用して、仮想ユーザー スレッドごとに最大 5000 個のアイテムをキャッシュに格納します。この値を変更するには、プロパティ「maxSize 」を使用します。この値を大きくするほど、HTTP キャッシュ マネージャーがメモリを消費するので、それに応じて-Xmx JVM オプションを調整してください。

サンプルが成功した場合 (つまり、応答コードが2xxの場合)、Last-ModifiedおよびEtag (関連する場合はExpired ) の値が URL に保存されます。次のサンプルを実行する前に、サンプラーはキャッシュにエントリがあるかどうかを確認し、エントリがある場合は、If-Last-ModifiedおよびIf-None-Match条件ヘッダーが要求に設定されます。

さらに、[ Use Cache-Control/Expires header ] オプションが選択されている場合、Cache-Control / Expiresの値が現在の時間に対してチェックされます。リクエストがGETリクエストで、タイムスタンプが未来の場合、サンプラーはリモート サーバーに URL をリクエストせずにすぐに戻ります。これは、ブラウザの動作をエミュレートすることを目的としています。Cache-Controlヘッダーが「no-cache」の場合、応答は期限切れになる前にキャッシュに保存されるため、条件付きGET要求が生成されることに注意してください。Cache-Controlに他の値がある場合、「max -age" expiry オプションは、エントリの有効期間を計算するために処理されます。欠落している場合は、Expire ヘッダーが使用されます。欠落しているエントリは、RFC 2616 セクション 13.2.4で指定されているようにLast-Modified時刻と応答日付 を使用してキャッシュされます。

要求されたドキュメントがキャッシュされてから変更されていない場合、応答本文は空になります。有効期限が将来の日付である場合も同様です。これにより、アサーションで問題が発生する可能性があります。
HTTP キャッシュ マネージャーのコントロール パネルのスクリーンショット
HTTP キャッシュ マネージャーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
反復ごとにキャッシュをクリアする
選択すると、スレッドの開始時にキャッシュがクリアされます。
はい
GET リクエストの処理時に Cache Control/Expires ヘッダーを使用する
上記の説明を参照してください。
はい
キャッシュ内の要素の最大数
上記の説明を参照してください。
はい
^

Cookie Manager 要素には 2 つの機能があります。1 つ目は
、Web ブラウザと同じように Cookie を保存して送信することです。HTTP 要求があり、応答に Cookie が含まれている場合、Cookie Manager はその Cookie を自動的に保存し、その特定の Web サイトへの今後のすべての要求に使用します。各 JMeter スレッドには、独自の「Cookie ストレージ領域」があります。したがって、セッション情報を保存するために Cookie を使用する Web サイトをテストしている場合、各 JMeter スレッドには独自のセッションがあります。このような Cookie は Cookie Manager 画面には表示されませんが、 View Results Tree Listener を使用して表示できることに注意してください。

JMeter は、受信した Cookie が URL に対して有効であることを確認します。これは、クロスドメイン Cookie が保存されないことを意味します。動作にバグがある場合、またはクロスドメイン Cookie を使用したい場合は、JMeter プロパティ「CookieManager.check.cookies=false」を定義してください。

受信した Cookie は、JMeter スレッド変数として保存できます。Cookie を変数として保存するには、プロパティ「CookieManager.save.cookies=true」を定義します。また、Cookie 名には、保存前に「COOKIE_」というプレフィックスが付けられます (これにより、ローカル変数の偶発的な破損が回避されます)。元の動作に戻すには、プロパティ「CookieManager.name.prefix=」(1 つ以上のスペース) を定義します。有効にすると、TESTという名前の Cookie の値を${COOKIE_TEST}として参照できます。

次に、Cookie マネージャーに Cookie を手動で追加できます。ただし、これを行うと、Cookie はすべての JMeter スレッドで共有されます。

このような Cookie は、かなり先の有効期限で作成されることに注意してください。

デフォルトでは、 null値を 持つ Cookieは無視されます。これは、JMeter プロパティCookieManager.delete_null_cookies=falseを設定することで変更できます。これは、手動で定義された Cookie にも適用されることに注意してください。そのような Cookie は、更新時に表示から削除されます。Cookie 名は一意である必要があることにも注意してください。2 番目の Cookie が同じ名前で定義されている場合、最初の Cookie が置き換えられます。

HTTP Cookie Manager のコントロール パネルのスクリーンショット
HTTP Cookie Manager のコントロール パネルのスクリーンショット
Sampler のスコープ内に複数の Cookie Manager がある場合、現在、どれを使用するかを指定する方法はありません。また、1 つの Cookie マネージャーに保存された Cookie は他のマネージャーでは使用できないため、複数の Cookie マネージャーは注意して使用してください。
属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
反復ごとに Cookie をクリアする
選択すると、メインのスレッド グループ ループが実行されるたびに、すべてのサーバー定義の Cookie がクリアされます。GUI で定義された Cookie はクリアされません。
はい
クッキーポリシー
Cookie の管理に使用される Cookie ポリシー。" standard " は 3.0 以降のデフォルトであり、ほとんどの場合に機能するはずです。Cookie の仕様CookieSpec の実装を参照してください [注: " ignoreCookies " は CookieManager を省略することと同じです。]
はい
実装
HC4CookieHandler (HttpClient 4.5.X API)。3.0 以降のデフォルトはHC4CookieHandlerです。
[注: IPv6 アドレスでテストする Web サイトがある場合は、HC4CookieHandler (IPv6 準拠) を選択してください]
はい
ユーザー定義の Cookie
これにより、テスト実行中にすべてのスレッドで使用されるハードコードされた Cookie を使用する機会が得られます。
domain」はサーバーのホスト名です ( http://を除く)。ポートは現在無視されています。
いいえ(自分が何をしているのかわからない限り、落胆します)
ボタンを追加
cookie テーブルにエントリを追加します。
なし
削除ボタン
現在選択されているテーブル エントリを削除します。
なし
ロードボタン
以前に保存した Cookie テーブルをロードし、エントリを既存の Cookie テーブル エントリに追加します。
なし
[名前を付けて保存] ボタン
現在の Cookie テーブルをファイルに保存します (HTTP 応答から抽出された Cookie は保存しません)。
なし
^

HTTP リクエストのデフォルト

この要素を使用すると、HTTP 要求コントローラーが使用するデフォルト値を設定できます。たとえば、25 個の HTTP 要求コントローラーを使用してテスト計画を作成し、すべての要求が同じサーバーに送信される場合、「サーバー名または IP」フィールドに入力された単一の HTTP 要求の既定要素を追加できます。 、25 個の HTTP 要求コントローラーを追加するときは、[サーバー名または IP]フィールドを空のままにします。コントローラは、このフィールド値を HTTP Request Defaults 要素から継承します。

すべてのポート値は同等に扱われます。ポートを指定しないサンプラーは、HTTP Request Defaults ポートが提供されている場合はそれを使用します。
HTTP リクエストのデフォルトのコントロール パネルのスクリーンショット
HTTP リクエストのデフォルトのコントロール パネルのスクリーンショット
HTTP リクエストの詳細設定フィールド
HTTP リクエストの詳細設定フィールド

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
サーバ
Web サーバーのドメイン名または IP アドレス。例: www.example.com[ http://プレフィックスを含めないでください。
いいえ
ポート
Web サーバーがリッスンしているポート。
いいえ
接続タイムアウト
接続タイムアウト。接続が開くまで待機するミリ秒数。
いいえ
応答タイムアウト
応答タイムアウト。応答を待機するミリ秒数。
いいえ
実装
JavaHttpClient4。指定されていない場合、デフォルトは JMeter プロパティ jmeter.httpsamplerの値に依存し、それが失敗すると、Java実装が使用されます。
いいえ
プロトコル
HTTPまたはHTTPS
いいえ
コンテンツのエンコーディング
リクエストに使用されるエンコーディング。
いいえ
リソースへのパス (例: /servlets/myServlet )。リソースにクエリ文字列パラメーターが必要な場合は、以下の「要求と共にパラメーターを送信する」セクションにそれらを追加します。パスはフル パスのデフォルトであり、HTTP 要求画面で指定されたパスに適用されるプレフィックスではないことに注意してください。
いいえ
リクエストでパラメータを送信
クエリ文字列は、指定したパラメーターのリストから生成されます。各パラメータには名前があります。クエリ文字列は、選択した「メソッド」に応じて正しい方法で生成されます (つまり、GETを選択した場合はクエリ文字列が URL に追加され、POSTを選択した場合は個別に送信されます)。また、マルチパート フォームを使用してファイルを送信する場合、クエリ文字列はマルチパート フォームの仕様を使用して作成されます。
いいえ
サーバー(プロキシ)
リクエストを実行するプロキシ サーバーのホスト名または IP アドレス。[ http://プレフィックスを含めないでください。]
いいえ
ポート
プロキシ サーバーがリッスンしているポート。
いいえ、プロキシのホスト名が指定されていない限り
ユーザー名
(オプション) プロキシ サーバーのユーザー名。
いいえ
パスワード
(オプション) プロキシ サーバーのパスワード。(NB これはテスト計画に暗号化されずに保存されます)
いいえ
HTML ファイルからすべての埋め込みリソースを取得する
HTML ファイルを解析し、ファイルで参照されているすべての画像、Java アプレット、JavaScript ファイル、CSS などの HTTP/HTTPS 要求を送信するよう JMeter に指示します。
いいえ
同時プールを使用
同時接続のプールを使用して、埋め込みリソースを取得します。
いいえ
サイズ
組み込みリソースを取得するために使用される同時接続のプール サイズ。
いいえ
URL は一致する必要があります:
存在する場合、これは見つかった埋め込み URL と照合するために使用される正規表現である必要があります。したがって、埋め込みリソースをhttp://example.invalid/からのみダウンロードする場合は、次の式を使用します: http://example\.invalid/.*
いいえ
URL は一致してはなりません:
存在する場合、これは見つかった埋め込み URL を除外するために使用される正規表現である必要があります。そのため、どのソースからも PNG または SVG ファイルをダウンロードしたくない場合は、次の式を使用します: .*\.(?i:svg|png)
いいえ
注: ラジオ ボタンには、オンまたはオフの 2 つの状態しかありません。これにより、設定を一貫してオーバーライドすることができなくなります。オフとはオフを意味するのでしょうか、それとも現在のデフォルトを使用することを意味するのでしょうか? JMeter は後者を使用します (そうしないと、デフォルトはまったく機能しません)。したがって、ボタンがオフの場合、後の要素でオンに設定できますが、ボタンがオンの場合、後の要素でオフに設定できません。
^

HTTP ヘッダマネージャ

ヘッダー マネージャーを使用すると、HTTP 要求ヘッダーを追加またはオーバーライドできます。

JMeter は複数のヘッダー マネージャーをサポートするようになりました。ヘッダー エントリがマージされて、サンプラーのリストが形成されます。マージされるエントリが既存のヘッダー名と一致する場合、以前のエントリが置き換えられます。これにより、ヘッダーのデフォルト セットを設定し、特定のサンプラーに調整を適用できます。ヘッダーの空の値は既存のヘッダーを削除せず、その値を置き換えるだけであることに注意してください。

HTTP ヘッダー マネージャーのコントロール パネルのスクリーンショット
HTTP ヘッダー マネージャーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
名前(ヘッダー)
リクエスト ヘッダーの名前。試してみるとよい 2 つの一般的なリクエスト ヘッダーは、「User-Agent」と「Referer」です。
いいえ (ただし、少なくとも 1 つある必要があります)
価値
ヘッダー値を要求します。
いいえ (ただし、少なくとも 1 つある必要があります)
ボタンを追加
ヘッダー テーブルにエントリを追加します。
なし
削除ボタン
現在選択されているテーブル エントリを削除します。
なし
ロードボタン
以前に保存したヘッダー テーブルをロードし、エントリを既存のヘッダー テーブル エントリに追加します。
なし
[名前を付けて保存] ボタン
現在のヘッダー テーブルをファイルに保存します。
なし
ヘッダマネージャの例

この例をダウンロードしてください。この例では、デフォルトの「User-Agent」リクエスト ヘッダーをオーバーライドし、代わりに特定の Internet Explorer エージェント文字列を使用するように JMeter に指示するテスト計画を作成しました。(図 12 および 13 を参照)。

図 12 - テスト計画
図 12 - テスト計画
図 13 - ヘッダー マネージャー コントロール パネル
図 13 - ヘッダー マネージャー コントロール パネル
^

Java リクエストのデフォルト

Java Request Defaults コンポーネントを使用すると、Java テストのデフォルト値を設定できます。Java リクエストを参照してください。

Java Request Defaults のコントロール パネルのスクリーンショット
Java Request Defaults のコントロール パネルのスクリーンショット
^

JDBC 接続の構成

指定された JDBC 接続設定からデータベース接続 ( JDBC Request Sampler によって使用される) を作成します。オプションで、接続をスレッド間でプールすることもできます。それ以外の場合、各スレッドは独自の接続を取得します。接続構成名は、適切な接続を選択するために JDBC Sampler によって使用されます。使用されるプールは DBCP です。BasicDataSource 構成パラメーターを参照してください。
JDBC 接続構成のコントロール パネルのスクリーンショット
JDBC 接続構成のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示される接続構成のわかりやすい名前。
いいえ
作成したプールの変数名
接続が関連付けられている変数の名前。複数の接続を使用でき、それぞれが異なる変数に関連付けられているため、JDBC サンプラーは適切な接続を選択できます。
それぞれの名前は異なる必要があります。同じ名前を使用する構成要素が 2 つある場合は、1 つだけが保存されます。重複した名前が検出されると、JMeter はメッセージをログに記録します。
はい
最大接続数
プールで許可される接続の最大数。ほとんどの場合、これをゼロ (0) に設定します。これは、各スレッドが単一の接続を持つ独自のプールを取得することを意味します。つまり、接続はスレッド間で共有されません。
本当に共有プーリングを使用したい場合 (なぜですか?)、最大カウントをスレッド数と同じに設定して、スレッドが互いに待機しないようにします。
はい
最大待機 (ミリ秒)
接続を取得しようとするプロセスでタイムアウト期間を超えると、プールはエラーをスローします。BasicDataSource.html#getMaxWaitMillisを参照してください。
はい
エビクション実行間の時間 (ミリ秒)
アイドル状態のオブジェクト evictor スレッドの実行の間にスリープするミリ秒数。正でない場合、アイドル オブジェクトの Evictor スレッドは実行されません。(デフォルトは " 60000 "、1 分)。BasicDataSource.html#getTimeBetweenEvictionRunsMillisを参照してください。
はい
自動コミット
接続の自動コミットをオンまたはオフにします。
はい
トランザクションの分離
トランザクション分離レベル
はい
事前初期化プール
接続プールは即座に初期化できます。False (デフォルト) に設定されている場合、このプールを使用する JDBC リクエスト サンプラーは、最初のクエリのより長い応答時間を測定する可能性があります。これは、プール全体の接続確立時間が含まれるためです。
いいえ
改行で区切られた初期化 SQL ステートメント
最初の作成時に物理接続を初期化するために使用される SQL ステートメントのコレクション。これらのステートメントは、構成された接続ファクトリーが接続を作成するときに 1 回だけ実行されます。
いいえ
アイドル時のテスト
プールのアイドル接続をテストします。 BasicDataSource.html#getTestWhileIdleを参照してください。検証クエリを使用してテストします。
はい
Soft Min Evictable Idle Time(ms)
アイドル オブジェクト Evictor によるエビクションの対象となる前に、接続がプール内でアイドル状態のままでいられる最小時間。追加の条件として、少なくともminIdle接続がプール内に残っている必要があります。BasicDataSource.html#getSoftMinEvictableIdleTimeMillisを参照してください。デフォルトは 5000 (5 秒)
はい
検証クエリ
データベースがまだ応答しているかどうかを判断するために使用される単純なクエリ。これは、多くのデータベースに適した jdbc ドライバーの' isValid() ' メソッドにデフォルト設定されます。ただし、別のクエリが必要な場合もあります。たとえば、Oracle では「SELECT 1 FROM DUAL」のようなものを使用できます。

検証クエリのリストはjdbc.config.check.queryプロパティで構成でき、デフォルトでは次のとおりです。

hsqldb
INFORMATION_SCHEMA.SYSTEM_USERS から 1 を選択
オラクル
デュアルから1つ選択
DB2
sysibm.sysdummy1 から 1 を選択
MySQL または MariaDB
1を選択
Microsoft SQL Server (MS JDBC ドライバー)
1を選択
PostgreSQL
1を選択
アングル
1を選択
ダービー
値 1
H2
1を選択
火の鳥
rdb$データベースから1つ選択
エクサソル
1を選択
リストは、さまざまなデータベース検証クエリの stackoverflow エントリから取得され、正しくない可能性があります
この検証クエリは、「Test While Idle」がクエリがアイドル状態の接続でのみ使用されることを示唆している場合でも、プールの作成時に使用されて検証されることに注意してください。これは DBCP の動作です。
いいえ
データベース URL
データベースの JDBC 接続文字列。
はい
JDBC ドライバー クラス
ドライバー クラスの完全修飾名。(JMeter のクラスパスにある必要があります - .jarファイルを JMeter の/libディレクトリにコピーするのが最も簡単です)。

事前構成済みの jdbc ドライバー クラスのリストは、 jdbc.config.jdbc.driver.classプロパティで構成でき、デフォルトでは次のようになっています。

hsqldb
org.hsqldb.jdbc.JDBCDriver
オラクル
oracle.jdbc.OracleDriver
DB2
com.ibm.db2.jcc.DB2Driver
MySQL
com.mysql.jdbc.ドライバー
Microsoft SQL Server (MS JDBC ドライバー)
com.microsoft.sqlserver.jdbc.SQLServerDriver または com.microsoft.jdbc.sqlserver.SQLServerDriver
PostgreSQL
org.postgresql.ドライバー
アングル
com.ingres.jdbc.IngresDriver
ダービー
org.apache.derby.jdbc.ClientDriver
H2
org.h2.ドライバー
火の鳥
org.firebirdsql.jdbc.FBDriver
アパッチダービー
org.apache.derby.jdbc.ClientDriver
マリアDB
org.mariadb.jdbc.ドライバー
SQLite
org.sqlite.JDBC
サイベース AES
net.sourceforge.jtds.jdbc.Driver
エクサソル
com.exasol.jdbc.EXADriver
はい
ユーザー名
接続するユーザーの名前。
いいえ
パスワード
接続するパスワード。(NB これはテスト計画に暗号化されずに保存されます)
いいえ
接続プロパティ
接続を確立するときに設定する接続プロパティ (たとえば、Oracle のinternal_logon=sysdbaなど)
いいえ

データベースと JDBC ドライバーが異なれば、必要な JDBC 設定も異なります。データベース URL と JDBC ドライバー クラスは、JDBC 実装のプロバイダーによって定義されます。

いくつかの可能な設定を以下に示します。JDBC ドライバーのドキュメントで正確な詳細を確認してください。

JMeter がNo appropriate driverを報告する場合、次のいずれかを意味している可能性が あります。

  • ドライバー クラスが見つかりませんでした。この場合、DataSourceElement: Could not load driver: {classname} java.lang.ClassNotFoundException: {classname}などのログ メッセージが表示されます。
  • ドライバー クラスが見つかりましたが、クラスは接続文字列をサポートしていません。これは、接続文字列の構文エラー、または間違ったクラス名が使用されたことが原因である可能性があります。

データベース サーバーが実行されていないか、アクセスできない場合、JMeter はjava.net.ConnectExceptionを報告します。

データベースとそのパラメーターの例を以下に示します。

MySQL
ドライバークラス
com.mysql.jdbc.ドライバー
データベース URL
jdbc:mysql://ホスト[:ポート]/dbname
PostgreSQL
ドライバークラス
org.postgresql.ドライバー
データベース URL
jdbc:postgresql:{dbname}
オラクル
ドライバークラス
oracle.jdbc.OracleDriver
データベース URL
jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no} ))(connect_data=(sid={sid})))
イングレス (2006)
ドライバークラス
ingres.jdbc.IngresDriver
データベース URL
jdbc:ingres://host:port/db[;attr=値]
Microsoft SQL Server (MS JDBC ドライバー)
ドライバークラス
com.microsoft.sqlserver.jdbc.SQLServerDriver
データベース URL
jdbc:sqlserver://host:port;DatabaseName=dbname
アパッチダービー
ドライバークラス
org.apache.derby.jdbc.ClientDriver
データベース URL
jdbc:derby://サーバー[:ポート]/データベース名[;URLAttributes=値[;…]]
マリアDB
ドライバークラス
org.mariadb.jdbc.ドライバー
データベース URL
jdbc:mariadb://ホスト[:ポート]/dbname[;URLAttributes=値[;…]]
Exasol ( JDBC ドライバーのドキュメントも参照)
ドライバークラス
com.exasol.jdbc.EXADriver
データベース URL
jdbc:exa:host[:port][;schema=SCHEMA_NAME][;prop_x=value_x]
上記は正しくない可能性があります。関連する JDBC ドライバーのドキュメントを確認してください。
^

キーストアの設定

Keystore Config Element を使用すると、キーストアのロード方法と使用するキーを構成できます。このコンポーネントは通常、応答時間でキーストアの初期化を考慮したくない HTTPS シナリオで使用されます。

この要素を使用するには、最初に、テストするクライアント証明書を使用して Java キー ストアをセットアップする必要があります。

  1. Java keytoolユーティリティまたは PKI を使用して証明書を作成します
  2. PKI によって作成された場合は、キーを JKS で受け入れられる形式に変換して、Java キー ストアにインポートします。
  3. 次に、2 つの JVM プロパティを介してキーストア ファイルを参照します (またはsystem.propertiesに追加します)。
    • -Djavax.net.ssl.keyStore=path_to_keystore
    • -Djavax.net.ssl.keyStorePassword=password_of_keystore

ストアのソースとして PKCS11 を使用するには、javax.net.ssl.keyStoreTypePKCS11 に、javax.net.ssl.keyStoreNONEに設定する必要があります。

キーストア構成のコントロール パネルのスクリーンショット
キーストア構成のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
プリロード
キーストアをプリロードするかどうか。通常はtrueに設定するのが最適なオプションです。
はい
証明書エイリアスを保持する変数名
クライアント証明書による認証に使用するエイリアスを含む変数名。変数値は、たとえば CSV データ セットから入力されます。スクリーンショットでは、「certificat_ssl」も CSV データ セットの変数になります。デフォルトはclientCertAliasVarName
間違い
エイリアス開始インデックス
キーストアで使用する最初のキーのインデックス (0 ベース)。
はい
エイリアス エンド インデックス
キーストアで使用する最後のキーのインデックス (0 ベース)。「証明書エイリアスを保持する変数名」を使用する場合は、起動時にすべてのキーがロードされるように十分な大きさであることを確認してください。デフォルトは -1 で、すべてをロードすることを意味します。
はい
JMeter で複数の証明書を使用するには、次のことを確認する必要があります。
  • https.use.cached.ssl.context=falseがjmeter.propertiesまたはuser.propertiesに設定されている
  • HTTP リクエストに HTTPClient 4 実装を使用する
^

ログイン構成要素

Login Config Element を使用すると、セットアップの一部としてユーザー名とパスワードを使用するサンプラーで、ユーザー名とパスワードの設定を追加または上書きできます。

ログイン構成要素のコントロール パネルのスクリーンショット
ログイン構成要素のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
ユーザー名
使用するデフォルトのユーザー名。
いいえ
パスワード
使用するデフォルトのパスワード。(NB これはテスト計画に暗号化されずに保存されます)
いいえ
^

LDAP リクエストのデフォルト

LDAP Request Defaults コンポーネントを使用すると、LDAP テストのデフォルト値を設定できます。LDAP リクエストを参照してください。

LDAP 要求のデフォルトのコントロール パネルのスクリーンショット
LDAP 要求のデフォルトのコントロール パネルのスクリーンショット
^

LDAP 拡張リクエストのデフォルト

LDAP Extended Request Defaults コンポーネントを使用すると、拡張 LDAP テストのデフォルト値を設定できます。LDAP 拡張要求を参照してください。

LDAP 拡張要求のデフォルトのコントロール パネルのスクリーンショット
LDAP 拡張要求のデフォルトのコントロール パネルのスクリーンショット
^

TCP サンプラ設定

TCP Sampler Config は、TCP Sampler のデフォルト データを提供します。

TCP Sampler Config のコントロール パネルのスクリーンショット
TCP Sampler Config のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
TCPClient クラス名
TCPClient クラスの名前。プロパティtcp.handlerにデフォルト設定され、そのTCPClientImplに失敗します。
いいえ
サーバー名または IP
TCP サーバーの名前または IP
ポート番号
使用するポート
再利用接続
選択した場合、接続は開いたままになります。それ以外の場合は、データが読み取られたときに閉じられます。
はい
接続を閉じる
選択すると、サンプラーの実行後に接続が閉じられます。
はい
SO_LINGER
ソケットの作成時に指定されたリンガー時間 (秒単位) でSO_LINGERを有効/無効にします。「SO_LINGER」の値を0に設定すると、多数のソケットがTIME_WAITステータスで待機するのを防ぐことができます。
いいえ
行末 (EOL) バイト値
行末のバイト値。これを-128から+127の範囲外の値に設定して、 EOL チェックをスキップします。これは、jmeter.propertiesファイルとtcp.eolByteプロパティで設定できます。これを TCP Sampler Config とjmeter.propertiesファイルで同時に設定すると、TCP Sampler Config の設定値が使用されます。
いいえ
接続タイムアウト
接続タイムアウト (ミリ秒、0 は無効)。
いいえ
応答タイムアウト
応答タイムアウト (ミリ秒、0 は無効)。
いいえ
ノードレイを設定する
nodelay プロパティを設定する必要がありますか?
送信するテキスト
送信するテキスト
^

ユーザー定義変数

ユーザー定義変数要素を使用すると、テスト計画と同様に、変数の初期セットを定義できます。

テスト計画のすべての UDV 要素は、どこにあるかに関係なく、最初に処理されることに注意してください。
そのため、テスト実行の一部として定義されている変数を参照することはできません (ポスト プロセッサなど)。

UDV は、呼び出されるたびに異なる結果を生成する関数では使用しないでください。最初の関数呼び出しの結果のみが変数に保存されます。 ただし、UDV は__P() などの関数で使用できます。次に例を示します。

ホスト ${__P(ホスト,localhost)}

これにより、変数「HOST」が JMeter プロパティ「host 」の値を持つように定義され、定義されていない場合は デフォルトで「localhost 」になります。

テスト実行中の変数の定義については、ユーザー パラメータを参照してください。UDV は、プランに表示される順序で上から下に処理されます。

簡単にするために、UDV はスレッド グループの先頭 (またはテスト計画自体の下) にのみ配置することをお勧めします。

テスト計画とすべての UDV が処理されると、変数の結果セットが各スレッドにコピーされ、変数の初期セットが提供されます。

User Parameters Pre-Processor や Regular Expression Extractor などのランタイム要素が UDV 変数の 1 つと同じ名前の変数を定義する場合、これは初期値を置き換え、スレッド内の他のすべてのテスト要素には更新された値が表示されます。価値。

ユーザー定義変数のコントロール パネルのスクリーンショット
ユーザー定義変数のコントロール パネルのスクリーンショット
複数のスレッド グループがある場合は、UDV がスレッド グループ間で共有されるため、値ごとに異なる名前を使用してください。また、要素が処理されるまで変数は使用できないため、同じ要素で定義されている変数を参照することはできません。以前の UDV またはテスト計画で定義された変数を参照できます。

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
ユーザー定義変数
変数名と値のペア。「 Name 」列の下の文字列は、後で変数を使用するために${…}構造の括弧内に配置する必要があるものです。${…}全体が「」列の文字列に置き換えられます。
^

確率変数

ランダム変数構成要素は、ランダムな数値文字列を生成し、後で使用するために変数に格納するために使用されます。ユーザー定義変数を__Random()関数 と一緒に使用するよりも簡単です。

出力変数は乱数ジェネレーターを使用して作成され、結果の数値は書式文字列を使用して書式設定されます。数値は、式minimum+Random.nextInt(maximum-minimum+1)を使用して計算されます。 Random.nextInt()には正の整数が必要です。これは、maximum-minimum (範囲) が2147483647未満でなければならないことを意味しますが、範囲が OK である限り 、最小値最大値は任意の長い値にすることができます。

ランダム値は各反復の開始時に評価されるため、プロパティ以外の変数を最小値または最大値として使用することはおそらく良い考えではありません。最初の反復ではゼロになります。
ランダム変数のコントロール パネルのスクリーンショット
ランダム変数のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
はい
変数名
ランダム文字列を格納する変数の名前。
はい
フォーマット文字列
使用するjava.text.DecimalFormatフォーマット文字列。たとえば、少なくとも 3 桁の数値を生成する" 000 " や、形式USER_nnnの出力を生成する" USER_000 " などです。指定しない場合、デフォルトでは、Long.toString()を使用して数値を生成します。
いいえ
最小値
生成された乱数の最小値 ( long )。
はい
最大値
生成された乱数の最大値 ( long )。
はい
ランダムシード
乱数ジェネレーターのシード。Per Thread をtrueに設定して同じシード値を使用すると、 Randomクラスごとに各スレッドに同じ値が得られます 。シードが設定されていない場合、Random のデフォルト コンストラクタが使用されます。
いいえ
スレッドごと(ユーザー)?
Falseの場合、ジェネレーターはスレッド グループ内のすべてのスレッド間で共有されます。Trueの場合、各スレッドは独自のランダム ジェネレーターを持ちます。
はい
^

カウンター

ユーザーは、スレッド グループ内のどこからでも参照できるカウンターを作成できます。カウンター構成により、ユーザーは開始点、最大値、および増分を構成できます。カウンターは最初から最大までループし、最初からやり直して、テストが終了するまで続けます。

カウンターは long を使用して値を格納するため、範囲は-2^63から2^63-1です。

カウンターのコントロール パネルのスクリーンショット
カウンターのコントロールパネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
開始値
カウンターの開始値。カウンターは、最初の反復中にこの値と等しくなります (デフォルトは 0)。
いいえ
インクリメント
各反復後にカウンターをどれだけインクリメントするか (デフォルトは 0 で、インクリメントなしを意味します)。
はい
最大値
カウンターが最大値を超えると、開始値にリセットされます。デフォルトはLong.MAX_VALUEです
いいえ
フォーマット
オプションのフォーマット。たとえば、000001002などのようにフォーマットされます。これはDecimalFormatに渡されるため、任意の有効なフォーマットを使用できます。フォーマットの解釈に問題がある場合、それは無視されます。[デフォルトのフォーマットはLong.toString()を使用して生成されます]
いいえ
エクスポートされた変数名
これは、カウンター値が使用可能な変数名になります。counterAという名前を付けると、ユーザー定義の値 で説明されているように、${counterA}を使用してアクセスできます(デフォルトでは、${}を使用してアクセスできる空の文字列変数が作成されますが、これは推奨されません) 。
いいえ
ユーザーごとに個別にカウンターを追跡する
つまり、これはグローバル カウンターですか、それとも各ユーザーが独自のカウンターを取得しますか? チェックを外すと、カウンターはグローバルになります (つまり、ユーザー #1 は値 " 1 " を取得し、ユーザー #2 は最初の反復で値 " 2 " を取得します)。オンにすると、各ユーザーは独立したカウンターを持ちます。
いいえ
スレッド グループの反復ごとにカウンターをリセットする
このオプションは、カウンターがユーザーごとに追跡されている場合にのみ使用できます。オンにすると、カウンターは各スレッド グループの反復で開始値にリセットされます。これは、カウンターがループ コントローラー内にある場合に役立ちます。
いいえ
^

シンプルな設定要素

Simple Config Element を使用すると、サンプラーに任意の値を追加またはオーバーライドできます。値の名前と値自体を選択できます。一部の冒険好きなユーザーはこの要素の用途を見つけるかもしれませんが、ここでは主に開発者が新しい JMeter コンポーネントを開発する際に使用できる基本的な GUI として使用します。

シンプルな構成要素のコントロール パネルのスクリーンショット
シンプルな構成要素のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
はい
パラメータ名
各パラメータの名前。これらの値は JMeter の動作の内部にあり、通常は文書化されていません。コードに詳しい人だけがこれらの値を知っています。
はい
パラメータ値
そのパラメーターに適用する値。
はい
^

MongoDB ソース構成 (非推奨)

指定された接続設定からMongoDB 接続 ( MongoDB スクリプトサンプラーによって使用される) を作成します。各スレッドは独自の接続を取得します。接続構成名は、適切な接続を選択するために JDBC Sampler によって使用されます。

次に、このコードを使用して要素MongoDBHolderを介して Beanshell または JSR223 テスト要素のcom.mongodb.DBオブジェクトに アクセスできます。

com.mongodb.DB をインポートします。
org.apache.jmeter.protocol.mongodb.config.MongoDBHolder をインポートします。
DB db = MongoDBHolder.getDBFromSource("MongoDB ソース プロパティの値",
            "プロパティ データベース名の値");
…
    
MongoDB Source Config のコントロール パネルのスクリーンショット (非推奨)
MongoDB Source Config のコントロール パネルのスクリーンショット (非推奨)

パラメータ

属性
説明
必須
名前
ツリーに表示される接続構成のわかりやすい名前。
いいえ
サーバーアドレス一覧
モンゴ DB サーバー
はい
MongoDB ソース
接続が関連付けられている変数の名前。
それぞれの名前は異なる必要があります。同じ名前を使用する構成要素が 2 つある場合は、1 つだけが保存されます。
はい
挑戦し続ける
true の 場合、ドライバーはソケットを確立できない場合に同じサーバーへの接続を試行し続けます。
再試行を継続する最大時間 (デフォルトでは 15 秒) があります。
これは、操作をブロックすることで、サーバーが一時的にダウンしているときに一部の例外がスローされるのを回避するのに役立ちます。
また、新しいプライマリ ノードへの移行をスムーズにするのにも役立ちます (再試行時間内に新しいプライマリ ノードが選択されるようにします)。
このフラグを使用する場合は、
  • レプリカ セットの場合、ドライバーは、すぐに新しいプライマリ ノードにフェールオーバーするのではなく、その時点で古いプライマリ ノードに接続しようとします。
  • これは、ソケットの読み取り/書き込み操作で例外がスローされるのを防ぐものではなく、アプリケーションで処理する必要があります。
このフラグが false の場合でも、ドライバーには、切断された接続を自動的に再作成し、読み取り操作を再試行するメカニズムが既に備わっています。
デフォルトはfalseです。
いいえ
ホストあたりの最大接続数
いいえ
接続タイムアウト
ミリ秒単位の接続タイムアウト。
新しい接続を確立するときにのみ使用されますSocket.connect(java.net.SocketAddress, int)
デフォルトは0で、タイムアウトなしを意味します。
いいえ
最大再試行時間
同じサーバーへの接続を開くための再試行に費やす最大時間 (ミリ秒)。
デフォルトは0です。これは、 autoConnectRetryがオンの場合にデフォルトの 15 秒を使用することを意味します。
いいえ
最大待ち時間
接続が使用可能になるまでスレッドが待機する最大待機時間 (ミリ秒単位)。
デフォルトは120,000です。
いいえ
ソケットのタイムアウト
ミリ秒単位のソケット タイムアウト。I/O ソケットの読み取りおよび書き込み操作に使用されます。 Socket.setSoTimeout(int)
デフォルトは0で、タイムアウトなしを意味します。
いいえ
ソケットキープアライブ
このフラグは、ファイアウォールを介して接続を維持するソケット キープ アライブ機能を制御しますSocket.setKeepAlive(boolean)
デフォルトはfalseです。
いいえ
ThreadsAllowedToBlockForConnectionMultiplier
この乗数に connectionsPerHost 設定を乗算すると、接続がプールから使用可能になるのを待機しているスレッドの最大数が得られます。
それ以降のすべてのスレッドは、すぐに例外を受け取ります。
たとえば、connectionsPerHost10で、threadsAllowedToBlockForConnectionMultiplier5の場合、最大 50 のスレッドが接続を待機できます。
デフォルトは5です。
いいえ
書き込み懸念事項: 安全
trueの 場合、ドライバーはすべての操作でWriteConcern.SAFEWriteConcernを使用します。wwtimeoutfsyncまたはj
が指定されている 場合、この設定は無視されます。 デフォルトはfalseです。
いいえ
書き込み懸念: Fsync
グローバルWriteConcernfsync値。 デフォルトはfalseです。
いいえ
懸念事項の書き込み: ジャーナルを待つ
グローバルWriteConcernj値。 デフォルトはfalseです。
いいえ
懸念事項の書き込み: サーバーを待つ
グローバルWriteConcernw値。デフォルトは0です。
いいえ
書き込み懸念: 待機タイムアウト
グローバルWriteConcernwtimeout値。デフォルトは0です。
いいえ
懸念事項の書き込み: エラーが発生しても続行
最初のエラーの後、バッチ挿入を続行する必要がある場合
いいえ
^
^

ボルト接続構成

提供された Connection 設定から、 Bolt 接続プール ( Bolt Request Sampler によって使用される) を作成します。
ボルト接続構成のコントロール パネルのスクリーンショット
ボルト接続構成のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのサンプラーのわかりやすい名前。
いいえ
コメント
詳細についてはフリーテキスト。
いいえ
ボルト URI
データベース URI。
はい
ユーザー名
ユーザーアカウント。
いいえ
パスワード
ユーザー資格情報。
いいえ
^
^

18.5 アサーション

アサーションは、サンプラーで追加のチェックを実行するために使用さ れ、同じスコープ内のすべてのサンプラーの後に処理されます。アサーションが特定のサンプラーにのみ適用されるようにするには、それをサンプラーの子として追加します。

注: 別段の記載がない限り、アサーションはサブサンプル (子サンプル) には適用されず、親サンプルにのみ適用されます。JSR223 および BeanShell アサーションの場合、スクリプトはメソッド prev.getSubResults()を使用してサブサンプルを取得できます。このメソッドは SampleResultsの配列を返します。何もない場合、配列は空になります。

アサーションは、メイン サンプル、サブサンプル、またはその両方に適用できます。デフォルトでは、メイン サンプルのみにアサーションが適用されます。アサーションがこのオプションをサポートしている場合、GUI に次のようなエントリが表示されます。

アサーション スコープ
アサーション スコープ
または次の
アサーション スコープ
アサーション スコープ

サブサンプラーが失敗し、メイン サンプルが成功した場合、メイン サンプルは失敗ステータスに設定され、アサーション結果が追加されます。JMeter 変数オプションを使用すると、メイン サンプルに関連すると見なされ、エラーはメイン サンプルのみに適用されます。

サンプラーのすべてのアサーションが実行された後、 変数JMeterThread.last_sample_okは「 true」または「false 」に更新されます。

応答アサーション

応答アサーション コントロール パネルでは、要求または応答のさまざまなフィールドと比較するパターン文字列を追加できます。パターン文字列は次のとおりです。

  • 含む,一致する : Perl5 スタイルの正規表現
  • EqualsSubstring : プレーン テキスト、大文字と小文字を区別

パターン マッチング文字の概要は、 ORO Perl5 正規表現 で見つけることができます。

また、文字列が応答全体と一致すると予想されるか、または応答にパターンのみが含まれると予想されるかを選択することもできます。柔軟性を高めるために、複数のアサーションを任意のコントローラーにアタッチできます。

パターン文字列には区切り文字を含めないでください。つまり、/Price: \d+/ではなくPrice: \d+を使用してください。

デフォルトでは、パターンは複数行モードです。つまり、「.」メタ文字は改行と一致しません。複数行モードでは、" ^ " と " $ " は、文字列全体の先頭と末尾だけでなく、文字列内の任意の行の先頭または末尾に一致します。\sは改行に一致することに注意してください。大文字小文字も重要です。これらの設定をオーバーライドするには、拡張正規表現構文を使用できます。例えば:

(?私)
大文字と小文字を区別しない
(?s)
ターゲットを単一行として扱います。つまり、「.」は改行に一致します
(?は)
上記の両方
これらは式内のどこでも使用でき、オーバーライドされるまで有効です。例えば
(?i)りんご(?-i)パイ
" Applee Pie " に一致しますが、" Applee pIe "には一致しません
(?s)Apple.+?Pie
はAppleの後にPieが続くものと一致し、これは後続の行にある場合があります。
Apple(?s).+?Pie
上記と同じですが、最初に(?s)を使用する方がおそらく明確です。
応答アサーションのコントロール パネルのスクリーンショット
応答アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
適用先:
これは、サブサンプルを生成できるサンプラー (埋め込みリソースを含む HTTP サンプラー、メール リーダー、またはトランザクション コントローラーによって生成されたサンプルなど) で使用するためのものです。
  • メイン サンプルのみ- メイン サンプルのみに適用されます
  • サブサンプルのみ- サブサンプルのみに適用されます
  • メインサンプルとサブサンプル- 両方に適用されます。
  • 使用する JMeter 変数名- アサーションは名前付き変数の内容に適用されます
はい
テストするフィールド
Request または Response のどのフィールドをテストするかを JMeter に指示します。
  • Text Response - サーバーからの応答テキスト、つまり本文で、HTTP ヘッダーは除外されます。
  • リクエスト データ- サーバーに送信されるリクエスト テキスト、つまり HTTP ヘッダーを除く本文。
  • 応答コード- 例: 200
  • 応答メッセージ- 例: OK
  • Set-Cookie ヘッダーを含む応答ヘッダー (存在する場合)
  • リクエスト ヘッダー
  • サンプリングされた URL
  • ドキュメント (テキスト) - Apache Tika を介してさまざまなタイプのドキュメントからテキストを抽出します (結果ツリーの表示ドキュメント ビュー セクションを参照)。
はい
ステータスを無視
最初にステータスを成功に設定するよう JMeter に指示します。

サンプルの全体的な成功は、アサーションの結果と既存の応答ステータスを組み合わせることによって決定されます。Ignore Statusチェックボックスが選択されている場合、Assertion を評価する前に Response ステータスが強制的に成功になります。

ステータスが4xxおよび5xxの範囲 の HTTP 応答は、通常、失敗したと見なされます。「Ignore status」チェックボックスを使用して、さらなるチェックを実行する前にステータスを成功に設定できます。これは、以前のアサーションの失敗をクリアする効果があるため、最初のアサーションでのみ設定するようにしてください。
はい
パターン マッチング ルール
テストされるテキストがパターンに対してどのようにチェックされるかを示します。
  • 含む- テキストに正規表現パターンが含まれる場合はtrue
  • Matches - テキスト全体が正規表現パターンと一致する場合は true
  • Equals - テキスト全体がパターン文字列と等しい場合は true (大文字と小文字を区別)
  • Substring - テキストにパターン文字列が含まれている場合は true (大文字と小文字を区別)
EqualsおよびSubstringパターンは、正規表現ではなくプレーンな文字列です。 NOTを選択して、チェックの結果を反転することもできます。 ORそれぞれのアサーションを、AND (アサーションが OK になるようにすべてのパターンが一致する必要があります) の代わりに、OR の組み合わせで適用します (テストするパターンが 1 つ一致する場合、アサーションは OK です)。
はい
テストするパターン
テストするパターンのリスト。各パターンは個別にテストされます。パターンが失敗した場合、それ以降のパターンはチェックされません。複数のパターンで 1 つのアサーションを設定することと、それぞれ 1 つのパターンで複数のアサーションを設定することの間に違いはありません (他のオプションが同じであると仮定します)。
ただし、[ Ignore Status ] チェックボックスが選択されている場合は、以前のアサーションの失敗をキャンセルする効果があります。そのため、[ Ignore Status ] チェックボックスが最初のアサーションでのみ使用されるようにしてください。
はい
カスタムの失敗メッセージ
生成されたものを置き換える失敗メッセージを定義できます
いいえ

パターンは Perl5 スタイルの正規表現ですが、括弧はありません。

アサーションの例
図 14 - テスト計画
図 14 - テスト計画
図 15 - パターン付きのアサーション コントロール パネル
図 15 - パターン付きのアサーション コントロール パネル
図 16 - アサーション リスナーの結果 (合格)
図 16 - アサーション リスナーの結果 (合格)
図 17 - アサーション リスナーの結果 (失敗)
図 17 - アサーション リスナーの結果 (失敗)
^

期間アサーション

Duration アサーションは、各応答が一定時間内に受信されたことをテストします。指定されたミリ秒数 (ユーザーが指定) よりも長くかかる応答は、失敗した応答としてマークされます。

期間アサーションのコントロール パネルのスクリーンショット
期間アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
期間 (ミリ秒)
各応答が失敗としてマークされるまでの最大許容ミリ秒数。
はい
^

サイズアサーション

サイズ アサーションは、各応答に正しいバイト数が含まれていることをテストします。サイズは、特定のバイト数と等しい、より大きい、より小さい、または等しくないことを指定できます。

空の応答は、エラーとして報告されるのではなく、0 バイトとして扱われます。
サイズ アサーションのコントロール パネルのスクリーンショット
サイズ アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
適用先:
これは、サブサンプルを生成できるサンプラー (埋め込みリソースを含む HTTP サンプラー、メール リーダー、またはトランザクション コントローラーによって生成されたサンプルなど) で使用するためのものです。
  • メイン サンプルのみ- アサーションはメイン サンプルにのみ適用されます
  • サブサンプルのみ- アサーションはサブサンプルにのみ適用されます
  • メイン サンプルとサブサンプル- アサーションは両方に適用されます。
  • 使用する JMeter 変数名- アサーションは名前付き変数の内容に適用されます
はい
サイズ (バイト)
応答のサイズ (または JMeter 変数の値) のテストに使用するバイト数。
はい
比較の種類
応答が、指定されたバイト数と等しいか、大きいか、小さいか、等しくないかをテストするかどうか。
はい
^

XML アサーション

XML アサーションは、応答データが形式的に正しい XML ドキュメントで構成されていることをテストします。DTD またはスキーマに基づいて XML を検証したり、それ以上の検証を行ったりすることはありません。

XML アサーションのコントロール パネルのスクリーンショット
XML アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
^

BeanShell アサーション

BeanShell アサーションにより、ユーザーは BeanShell スクリプトを使用してアサーション チェックを実行できます。

BeanShell の使用の詳細については、BeanShell の Web サイトを参照してください。

JSR223 アサーション+Groovyへの移行は、パフォーマンス、新しい Java 機能のサポート、および BeanShell ライブラリの限定的なメンテナンスのために強く推奨されます。

テスト スクリプトの各スレッドで独立して発生するアサーションごとに異なるインタープリターが使用されますが、後続の呼び出しには同じインタープリターが使用されることに注意してください。これは、アサーションへの呼び出し間で変数が持続することを意味します。

すべてのアサーションは、サンプラーと同じスレッドから呼び出されます。

プロパティ「beanshell.assertion.init」が定義されている場合、ソース ファイルの名前としてインタープリターに渡されます。これは、共通のメソッドと変数を定義するために使用できます。binディレクトリにサンプルの初期化ファイルがあります: BeanShellAssertion.bshrc

テスト要素は、ThreadListenerメソッドとTestListenerメソッドをサポートしています。これらは初期化ファイルで定義する必要があります。定義の例 については、ファイルBeanShellListeners.bshrcを参照してください。

BeanShell アサーションのコントロール パネルのスクリーンショット
BeanShell アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。名前はスクリプト変数Labelに格納されます
各呼び出しの前に bsh.Interpreter をリセットします
このオプションを選択すると、サンプルごとにインタープリターが再作成されます。これは、一部の長時間実行されるスクリプトで必要になる場合があります。詳細については、「ベスト プラクティス - BeanShell スクリプト」を参照してください。
はい
パラメーター
BeanShell スクリプトに渡すパラメーター。パラメータは次の変数に格納されます。
  • パラメータ- パラメータを単一の変数として含む文字列
  • bsh.args - パラメータを含む文字列配列、空白で分割
いいえ
スクリプトファイル
実行する BeanShell スクリプトを含むファイル。これはスクリプトをオーバーライドします。ファイル名はスクリプト変数FileNameに格納されます
いいえ
脚本
実行する BeanShell スクリプト。戻り値は無視されます。
はい(スクリプトファイルが提供されていない場合)

試すことができるサンプル スクリプトがあります。

スクリプトを呼び出す前に、BeanShell インタープリターでいくつかの変数が設定されます。特に明記されていない限り、これらは文字列です。

  • log -ロガーオブジェクト。(例) log.warn("Message"[,Throwable])
  • SampleResultprev - SampleResultオブジェクト。読み書き
  • 応答- 応答オブジェクト。読み書き
  • 失敗- ブール値。読み書き; アサーション ステータスの設定に使用
  • FailureMessage - 文字列; 読み書き; アサーション メッセージの設定に使用
  • ResponseData - 応答本文 (バイト [])
  • ResponseCode - 例: 200
  • ResponseMessage - 例: OK
  • ResponseHeaders - HTTP ヘッダーが含まれています
  • RequestHeaders - サーバーに送信された HTTP ヘッダーが含まれています
  • サンプルラベル
  • SamplerData - サーバーに送信されたデータ
  • ctx - JMeterContext
  • vars - JMeterVariables - 例
    vars.get("VAR1");
    vars.put("VAR2","値");
    vars.putObject("OBJ1",新しいオブジェクト());
  • props - JMeterProperties (クラスjava.util.Properties ) - 例
    props.get("START.HMS");
    props.put("PROP1","1234");

Response オブジェクトの次のメソッドが役立つ場合があります。

  • setStopThread(ブール値)
  • setStopTest(ブール値)
  • 文字列 getSampleLabel()
  • setSampleLabel(文字列)
^

MD5Hex アサーション

MD5Hex アサーションにより、ユーザーは応答データの MD5 ハッシュを確認できます。

MD5Hex アサーションのコントロール パネルのスクリーンショット
MD5Hex アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
MD5合計
MD5 ハッシュを表す 32 桁の 16 進数 (大文字と小文字は区別されません)
はい
^

HTML アサーション

HTML アサーションにより、ユーザーは JTidy を使用して応答データの HTML 構文を確認できます。

HTML アサーションのコントロール パネルのスクリーンショット
HTML アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
文書型
omitautostrictまたはLoose
はい
フォーマット
HTMLXHTMLまたはXML
はい
エラーのみ
エラーのみに注意しますか?
はい
エラーしきい値
応答を失敗として分類する前に許容されるエラーの数
はい
警告しきい値
応答を失敗として分類する前に許容される警告の数
はい
ファイル名
レポートが書き込まれるファイルの名前
いいえ
^

XPath アサーション

XPath アサーションは、文書の整形性をテストし、DTD に対して検証するか、文書を JTidy に通して XPath をテストするオプションがあります。その XPath が存在する場合、アサーションは true です。「/」を使用すると、整形式のドキュメントと一致し、デフォルトの XPath 式になります。アサーションは、「 count(//*error)=2 」などのブール式もサポートしています。XPath の 詳細については、 http://www.w3.org/TR/xpathを参照してください。

いくつかのサンプル式:
  • //title[text()='Text to match'] -応答の任意の場所にある<title>Text to match</title> と一致します
  • /title[text()='一致するテキスト'] -応答のルート レベルで<title>一致するテキスト</title> に一致します
XPath アサーションのコントロール パネルのスクリーンショット
XPath アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
Tidy (寛容なパーサー) を使用する
Tidy を使用する。つまり、XML/HTML エラーに寛容である
はい
静かな
Tidy Quiet フラグを設定します
Tidyを選択した場合
エラーの報告
Tidy エラーが発生した場合は、それに応じてアサーションを設定します
Tidyを選択した場合
警告を表示
Tidy showWarnings オプションを設定します
Tidyを選択した場合
名前空間を使用する
名前空間を尊重する必要がありますか? (ネームスペースに関する以下の注を参照)
Tidy が選択されていない場合
XML を検証する
ドキュメントをそのスキーマと照らし合わせてチェックしてください。
Tidy が選択されていない場合
空白を無視
要素の空白を無視します。
Tidy が選択されていない場合
外部 DTD を取得する
選択すると、外部 DTD がフェッチされます。
Tidy が選択されていない場合
XPath アサーション
ドキュメント内で照合する XPath。
はい
アサーションの反転 (上記の条件が満たされた場合は失敗します)
XPath 式が一致しない場合、または false を返す場合は true
いいえ
寛容でないパーサーは、DTD などをダウンロードする必要がある場合があるため、非常に遅くなる可能性があります。

名前空間 Xalan XPath パーサー (JMeter のベースとなる実装) の名前空間の制限に対する回避策として、次のことを行う必要があります
  • 名前空間プレフィックスのマッピングを含む プロパティ ファイルを提供します (たとえば、ファイルの名前がnamespaces.propertiesの場合)。
    prefix1=http\://foo.apache.org
    prefix2=http\://toto.apache.org
    …
    
  • 次のプロパティを使用して 、 user.propertiesファイルでこのファイルを参照します。
    xpath.namespace.config=namespaces.properties
^

XPath2 アサーション

XPath2 アサーションは、ドキュメントの整形性をテストします。「/」を使用すると、整形式のドキュメントと一致し、デフォルトの XPath2 式です。アサーションは、「 count(//*error)=2 」などのブール式もサポートしています。

いくつかのサンプル式:
  • //title[text()='Text to match'] -応答の任意の場所にある<title>Text to match</title> と一致します
  • /title[text()='一致するテキスト'] -応答のルート レベルで<title>一致するテキスト</title> に一致します
XPath2 アサーションのコントロール パネルのスクリーンショット
XPath2 アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前空間の別名リスト
ドキュメントの解析に使用する名前空間エイリアスのリスト (宣言ごとに 1 行)。次のように指定する必要があります: prefix=namespace。この実装により、古い XPathExtractor バージョンよりも簡単に名前空間を使用できます。
いいえ
XPath2 アサーション
ドキュメント内で照合する XPath。
はい
アサーションを反転
xpath 式が true または一致を返す場合は失敗し、それ以外の場合は成功します
いいえ
名前空間エイリアス リスト
名前空間エイリアスのリスト prefix=full 名前空間 (1 行に 1 つ)
いいえ
^

XML スキーマ アサーション

XML スキーマ アサーションを使用すると、ユーザーは XML スキーマに対して応答を検証できます。

XML スキーマ アサーションのコントロール パネルのスクリーンショット
XML スキーマ アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
ファイル名
XML スキーマ ファイル名の指定
はい
^

JSR223 アサーション

JSR223 アサーションにより、JSR223 スクリプト コードを使用して前のサンプルのステータスを確認できます。

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
言語
使用する JSR223 言語
はい
パラメーター
スクリプトに渡すパラメーター。パラメータは次の変数に格納されます。
  • パラメータ- パラメータを単一の変数として含む文字列
  • args - パラメータを含む文字列配列、空白で分割
いいえ
スクリプトファイル
実行するスクリプトを含むファイル。相対ファイル パスが使用されている場合は、「user.dir」システム プロパティによって参照されるディレクトリからの相対パスになります。
いいえ
スクリプト コンパイルのキャッシュ
使用されている言語がCompilableインターフェイスをサポートしている場合、JMeter がスクリプト コンパイルの結果をキャッシュするために使用するテスト プラン全体で一意の文字列(Groovy はこれらの 1 つですが、java、BeanShell、および JavaScript はサポートしていません)。
このオプションをチェックせずに Groovy を使用している場合は、JSR223 Sampler Java System プロパティの注を参照してください。
いいえ
脚本
実行するスクリプト。
はい(スクリプトファイルが提供されていない場合)

スクリプトで使用するために、次の変数が設定されます。

  • log - ( Logger ) - ログファイルへの書き込みに使用できます
  • Label - 文字列ラベル
  • Filename - スクリプト ファイル名 (存在する場合)
  • Parameters - パラメータ (文字列として)
  • args - 文字列配列としてのパラメーター (空白で分割)
  • ctx - ( JMeterContext ) - コンテキストへのアクセスを提供します
  • vars - ( JMeterVariables ) - 変数への読み取り/書き込みアクセスを提供します。
    vars.get(キー);
    vars.put(キー、値);
    vars.putObject("OBJ1",新しいオブジェクト());
    vars.getObject("OBJ2");
    
  • props - (JMeterProperties - クラスjava.util.Properties ) - 例
    props.get("START.HMS");
    props.put("PROP1","1234");
    
  • SampleResultprev - ( SampleResult ) - 前の SampleResult (存在する場合) へのアクセスを提供します
  • sampler - ( Sampler ) - 現在のサンプラーへのアクセスを提供します
  • OUT - System.out - 例: OUT.println("message")
  • AssertionResult - ( AssertionResult ) - アサーション結果

スクリプトは、SampleResultのさまざまな側面をチェックできます。エラーが検出された場合、スクリプトはAssertionResult.setFailureMessage("message")およびAssertionResult.setFailure(true)を使用する必要があります。

上記の各変数で使用可能なすべてのメソッドの詳細については、Javadoc を確認してください。

^

アサーションの比較

コンペア アサーションは、多くのリソース (メモリと CPU) を消費するため、負荷テスト中に使用しないでください。機能テスト、またはテスト計画のデバッグと検証中にのみ使用してください。
Compare アサーションを使用して、そのスコープ内のサンプル結果を比較できます。コンテンツまたは経過時間のいずれかを比較でき、比較の前にコンテンツをフィルタリングできます。アサーションの比較は、 Comparison Assertion Visualizerで確認できます。
比較アサーションのコントロール パネルのスクリーンショット
比較アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
コンテンツの比較
内容(レスポンスデータ)を比較するかどうか
はい
時間を比較
値が 0 以上の場合、応答時間の差がその値以下であるかどうかを確認します。つまり、値が0の場合、応答時間は正確に等しくなければなりません。
はい
比較フィルター
フィルタを使用して、コンテンツ比較から文字列を削除できます。たとえば、ページにタイムスタンプがある場合、" Time: \d\d​​:\d\d:\d\d " と一致し、ダミーの固定時刻 " Time: HH:MM:に置き換えられます。 SS」。
いいえ
^

SMIME アサーション

SMIME アサーションを使用して、Mail Reader Sampler からのサンプル結果を評価できます。このアサーションは、MIME メッセージの本文が署名されているかどうかを検証します。署名は、特定の署名者証明書に対して検証することもできます。これはほとんどのユーザーが必ずしも必要としない機能であるため、追加の jar をダウンロードしてJMETER_HOME/libに追加する必要があります。
  • bcmail-xxx.jar (BouncyCastle SMIME/CMS)
  • bcprov-xxx.jar (BouncyCastle プロバイダー)
これらは BouncyCastle からダウンロードする必要があります。

Mail Reader Sampler を使用している場合は、 [ MIME (raw) を使用してメッセージを保存する] を選択していることを確認してください。そうしないと、アサーションはメッセージを正しく処理できません。

SMIME アサーションのコントロール パネルのスクリーンショット
SMIME アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
署名の確認
選択した場合、アサーションは、[署名者証明書]ボックスで定義されたパラメーターに従って有効な署名であるかどうかを検証します。
はい
メッセージは署名されていません
メッセージで署名を期待するかどうか
はい
署名者証明書
チェックなし」は、署名検証を実行しないことを意味します。「Check values」は、提供された入力に対して署名を検証するために使用されます。「証明書ファイル」は、特定の証明書ファイルに対して検証を実行します。
はい
メッセージ位置
メール サンプラーは、1 つのサンプルで複数のメッセージを取得できます。このフィールドを使用して、チェックするメッセージを指定します。メッセージには0から番号が付けられるため、0は最初のメッセージを意味します。負の数は LAST メッセージからカウントされます。-1は LAST を意味し、-2は最後から 2 番目などを意味します。
はい
^

JSON アサーション

このコンポーネントを使用すると、JSON ドキュメントの検証を実行できます。まず、JSON を解析し、データが JSON でない場合は失敗します。次に、 Jayway JsonPath 1.2.0の構文を使用して、指定されたパスを検索します。パスが見つからない場合、失敗します。第 3 に、ドキュメント内に JSON パスが見つかり、期待値に対する検証が要求された場合、検証が実行されます。null値の場合、GUI に特別なチェックボックスがあります。パスが配列オブジェクトを返す場合は反復され、期待される値が見つかった場合、アサーションは成功することに注意してください。空の配列を検証するには、[]を使用しますストリング。また、パッチが辞書オブジェクトを返す場合、比較前に文字列に変換されます。

JSON アサーションのコントロール パネルのスクリーンショット
JSON アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
JSON パスが存在することをアサートする
assert の JSON 要素へのパス。
はい
さらに価値を主張する
何らかの値でアサートする場合は、チェックボックスを選択します
いいえ
正規表現として一致
正規表現を使用する場合は、チェックボックスを選択します
いいえ
期待値
assert の値または match の正規表現
いいえ
null を期待する
null が予想される場合は、チェックボックスを選択します
いいえ
アサーションの反転 (上記の条件が満たされた場合は失敗します)
アサーションの反転 (上記の条件が満たされた場合は失敗します)
いいえ
^

JSON JMESPath アサーション

このコンポーネントを使用すると、JMESPathを使用して JSON ドキュメント コンテンツに対してアサーションを実行できます。まず、JSON を解析し、データが JSON でない場合は失敗します。
次に、JMESPath 構文を使用して、指定されたパスを検索します。
パスが見つからない場合、失敗します。
第 3 に、ドキュメント内に JMES パスが見つかり、期待値に対する検証が要求された場合、この追加のチェックが実行されます。nullかどうかを確認する場合は、[ Expect null]チェックボックスを使用します。
式 JMESPath はコンパイルされず、エラーが発生するため、パスを null にすることはできません。空またはヌルの応答が予想される場合でも、有効な JMESPath 式を指定する必要があります。

JSON JMESPath アサーションのコントロール パネルのスクリーンショット
JSON JMESPath アサーションのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
JMESPath が存在することをアサートする
JSON要素へのJMESPathが存在することを確認します
はい
さらに価値を主張する
抽出された JMESPath を予想されるものと照合する場合は、チェックボックスを選択します
いいえ
正規表現として一致
マッチングに正規表現を使用する場合は、チェックボックスを選択します
いいえ
期待値
Match as regular expressionがチェックされている場合、完全一致または正規表現に使用する値
いいえ
null を期待する
値が null であることが予想される場合は、チェックボックスを選択します
いいえ
アサーションの反転 (上記の条件が満たされた場合は失敗します)
アサーションの反転 (上記の条件が満たされた場合は失敗します)
いいえ
^
^

18.6 タイマー

バージョン 3.1 以降、次の機能を提供する新しい機能 (JMeter 3.1 のベータ モードであり、変更される可能性があります) が実装されています。プロパティtimer.factor=float number
を設定することにより、ランダム タイマーによって計算されたスリープ遅延に乗算係数を適用できます。ここで、float number は正の 10 進数です。 JMeter は、この係数に計算されたスリープ遅延を掛けます。この機能は、次の場合に使用できます。
タイマーは、それらが見つかったスコープ内の各サンプラーの前に処理されることに注意してください。同じスコープに複数のタイマーがある場合、すべてのタイマーはサンプラー の前に処理されます。
タイマーは、サンプラーと組み合わせてのみ処理されます。サンプラーと同じスコープにないタイマーはまったく処理されません。
タイマーを単一のサンプラーに適用するには、タイマーをサンプラーの子要素として追加します。タイマーは、サンプラーが実行される前に適用されます。サンプラーの後にタイマーを適用するには、タイマーを次のサンプラーに追加するか、フロー制御アクションサンプラーの子として追加します。

コンスタントタイマー

各スレッドをリクエスト間で同じ時間一時停止させたい場合は、このタイマーを使用します。

コンスタントタイマーのコントロールパネルのスクリーンショット
コンスタントタイマーのコントロールパネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのタイマーのわかりやすい名前。
いいえ
スレッド遅延
一時停止するミリ秒数。
はい
^

ガウスランダムタイマー

このタイマーは、各スレッド要求をランダムな時間だけ一時停止します。ほとんどの時間間隔は、特定の値の近くで発生します。総遅延は、ガウス分布値 (平均0.0および標準偏差1.0 ) に指定した偏差値を掛けたものと、オフセット値の合計です。それを説明する別の方法は、Gaussian Random Timer では、一定のオフセットの周りの変動がガウス曲線分布を持っていることです。

Gaussian Random Timer のコントロール パネルのスクリーンショット
Gaussian Random Timer のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのタイマーのわかりやすい名前
いいえ
偏差
ミリ秒単位の偏差。
はい
一定遅延オフセット
ランダム遅延に加えて一時停止するミリ秒数。
はい
^

一様ランダムタイマー

このタイマーは、発生する確率が同じ時間間隔で、ランダムな時間、各スレッド要求を一時停止します。総遅延は、ランダム値とオフセット値の合計です。

均一ランダムタイマーのコントロールパネルのスクリーンショット
均一ランダムタイマーのコントロールパネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのタイマーのわかりやすい名前。
いいえ
ランダム遅延最大
一時停止する最大乱数ミリ秒。
はい
一定遅延オフセット
ランダム遅延に加えて一時停止するミリ秒数。
はい
^

一定スループットタイマー

このタイマーは、合計スループット (1 分あたりのサンプル数) を特定の数値にできるだけ近づけるために計算された可変の一時停止を導入します。もちろん、サーバーがそれを処理できない場合、または他のタイマーや時間のかかるテスト要素によって処理できない場合、スループットは低下します。

注意: タイマーはコンスタント スループット タイマーと呼ばれますが、スループット値は一定である必要はありません。変数または関数呼び出しに関して定義でき、テスト中に値を変更できます。値はさまざまな方法で変更できます。

  • カウンター変数の使用
  • __jexl3__groovy関数を使用して変化する値を提供する
  • リモート BeanShell サーバーを使用して JMeter プロパティを変更する

詳細については、ベスト プラクティスを参照してください。

テスト中にスループット値を頻繁に変更しないでください。新しい値が有効になるまでに時間がかかります。

コンスタント スループット タイマーのコントロール パネルのスクリーンショット
一定スループット タイマーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのタイマーのわかりやすい名前。
いいえ
目標スループット
タイマーが生成しようとするスループット。
はい
に基づいてスループットを計算します
  • このスレッドのみ- 各スレッドは目標スループットを維持しようとします。全体のスループットは、アクティブなスレッドの数に比例します。
  • 現在のスレッド グループ内のすべてのアクティブなスレッド- ターゲット スループットは、グループ内のすべてのアクティブなスレッド間で分割されます。各スレッドは、最後にいつ実行されたかに基づいて、必要に応じて遅延します。
  • すべてのアクティブなスレッド- ターゲット スループットは、すべてのスレッド グループのすべてのアクティブなスレッドに分割されます。各スレッドは、最後にいつ実行されたかに基づいて、必要に応じて遅延します。この場合、他の各スレッド グループには、同じ設定のコンスタント スループット タイマーが必要になります。
  • 現在のスレッド グループ (共有) 内のすべてのアクティブなスレッド- 上記と同様ですが、各スレッドは、グループ内のいずれかのスレッドが最後に実行された時期に基づいて遅延されます。
  • すべてのアクティブなスレッド (共有) - 上記と同様。各スレッドは、スレッドが最後に実行された時期に基づいて遅延します。
はい

共有アルゴリズムと非共有アルゴリズムはどちらも、目的のスループットを生成することを目的としており、同様の結果が得られます。
共有アルゴリズムは、より正確な全体的なトランザクション レートを生成する必要があります。
非共有アルゴリズムは、スレッド間でより均一なトランザクションの分散を生成する必要があります。

^

正確なスループットタイマー

このタイマーは、合計スループット (例: 1 分あたりのサンプル数) を可能な限り特定の数値に近づけるために計算された可変の一時停止を導入します。もちろん、サーバーがそれを処理できない場合、または他のタイマーが使用されている場合、または十分なスレッドがない場合、または時間のかかるテスト要素がそれを妨げている場合、スループットは低くなります。

タイマーは正確なスループット タイマーと呼ばれますが、テスト中に 1 秒間隔で正確に同じ数のサンプルを生成することを目的としていません。

タイマーは 36000 リクエスト/時間未満のレートで最適に機能しますが、マイレージは異なる場合があります (目標が大きく異なる場合は、以下の監視セクションを参照してください)。

テスト計画における正確なスループット タイマーの最適な位置

ご存知かもしれませんが、タイマーはすべての兄弟要素とその子要素によって継承されます。そのため、 Precise Throughput Timerの最適な場所の 1 つは、テスト ループの最初の要素の下です。たとえば、最初にダミー サンプラーを追加し、そのダミー サンプラーの下にタイマーを配置することができます。

制作スケジュール

正確なスループット タイマーは、ポアソン到着スケジュールをモデル化します。このスケジュールは実際に頻繁に発生するため、それを負荷テストに使用することは理にかなっています。たとえば、自然に近いサンプルが生成される可能性があるため、同時実行の問題が明らかになる可能性があります。Poisson Random Timerを使用して Poisson 到着を生成できたとしても、以下に挙げる問題の影響を受ける可能性があります。たとえば、真のポアソン到着には無限に長い一時停止がある可能性があり、これは負荷テストには実用的ではありません。たとえば、1 秒あたり 1 回の「通常の」ポアソン到着は、60 秒間の長いテストで 50 サンプルになる可能性があります。

一定スループット タイマーは、指定されたレートに収束しますが、サンプルを等間隔で生成する傾向があります。

立ち上げと起動時のスパイク

「ランプアップ」または同様のアプローチを使用して、テスト開始時のスパイクを回避できます。たとえば、スレッド グループを 100 のスレッドを持つように構成し、ランプアップ期間0 (または小さい数) に設定すると、すべてのスレッドが同時に開始され、不要な負荷スパイクが発生します。 . その上、Ramp-up Periodを高く設定しすぎると、必要な負荷を達成するために最初に使用できるスレッドが「少なすぎる」という結果になる可能性があります。

Precise Throughput Timerはランダムな方法で実行をスケジュールするため、一定の負荷を生成するために使用できます 。Ramp-up PeriodDelayの両方を0に設定することをお勧めします。

同時に開始する複数のスレッド グループ

テスト計画に複数のスレッド グループが含まれている場合、ランプアップの問題のバリエーションが発生する可能性があります。その問題を軽減するために、通常、各スレッド グループに「ランダムな」遅延を追加して、スレッドが異なる時間に開始されるようにします。

正確なスループット タイマーは、ランダムな方法で実行をスケジュールするため、この問題を回避します。起動時のスパイクを軽減するためにランダムな遅延を追加する必要はありません

1 時間あたりの反復回数

基本的な要件の 1 つは、M 分ごとに N サンプルを発行することです。1 時間あたり 60 回の反復とします。「ランダムがランダムだったからといって」57回の実行で負荷テストの結果を報告しても、ビジネス顧客は理解できません。1 時間あたり 60 回の反復を生成するには、次のように構成する必要があります (他のパラメーターはデフォルト値のままにしておくことができます)。

  • 目標スループット (サンプル) : 60
  • スループット期間 (秒) : 3600
  • テスト時間 (秒) : 3600

最初の 2 つのオプションは、スループットを設定します。60/3600、30/1800、および 120/7200 はまったく同じ負荷レベルを表しますが、ビジネス要件をより適切に表すものを選択してください。たとえば、要件が「1 時間あたり 60 サンプル」のテストである場合は、60/3600 を設定します。要件が「1 分間に 1 サンプル」をテストすることである場合は、1/60 を設定します。

テスト期間 (秒)があるため、タイマーは特定のテスト期間の正確なサンプル数を保証します。Precise Throughput Timerは、テストの開始時にサンプルのスケジュールを作成します。たとえば、1 時間あたり 60 のスループットで 5 分間のテストを実行する場合は、[テスト期間 (秒)]を 300 に設定します。これにより、ビジネスに適した方法でスループットを構成できます。注:テスト期間 (秒)は、テスト期間を制限しません。タイマーのヒントです。

スレッド数と思考時間

一般的な落とし穴の 1 つは、目的のスループットを実現するために、スレッド数と思考時間を調整することです。うまくいくかもしれませんが、そのアプローチではテストの実行に多くの時間が費やされます。新しいアプリケーション バージョンが到着したときに、スレッドと遅延を再度調整する必要がある場合があります。

正確なスループット タイマーを使用すると、スループットの目標を設定し、アプリケーションのパフォーマンスに関係なく目標を達成できます。そのために、Precise Throughput Timer はテストの開始時にスケジュールを作成し、そのスケジュールを使用してスレッドを解放します。思考時間とスレッド数の主な要因は、何らかの方法でスループットを一致させたいという欲求ではなく、ビジネス要件であるべきです。

たとえば、アプリケーションがコール センターのサポート エンジニアによって使用されているとします。コール センターに 2 人のエンジニアがいて、目標スループットが 1 分あたり 1 人であるとします。エンジニアが Web ページを読んで確認するのに 4 分かかるとします。その場合、グループに 2 つのスレッドを設定し、思考時間の遅延に 4 分を使用し、Precise Throughput Timerで 1 分あたり 1 つを指定する必要があります。もちろん、1 分あたり約 2 サンプル/4 分 = 0.5 という結果になり、このようなテストの結果は、「コール センターでサポート エンジニアをもっと必要としている」または「エンジニアがタスクを遂行するのにかかる時間を短縮する必要がある」ことを意味します。 "。

低レートのテストと反復可能なテスト

低レート (例: 1 時間あたり 60 回) でのテストでは、目的のテスト プロファイルを知る必要があります。たとえば、均等な間隔 (たとえば 60 秒間隔) で負荷を注入する必要がある場合は、Constant Throughput Timerを使用することをお勧めします。ただし、スケジュールをランダム化する必要がある場合 (レポートを実行する実際のユーザーをモデル化する場合など) は、Precise Throughput Timerが役に立ちます。

複数の負荷テストの結果を比較する場合、まったく同じテスト プロファイルを繰り返せると便利です。たとえば、アクション X (「利益レポート」など) がテスト開始の 5 分後に呼び出された場合、その後のテスト実行でそのパターンを複製するとよいでしょう。同じ負荷パターンを再現すると、テスト結果の分析が簡素化されます (CPU% グラフなど)。

ランダム シード (0 からランダムに変更)を使用すると、 Precise Throughput Timerで使用されるシード値を制御できます。デフォルトでは、0で初期化されます。これは、テストの実行ごとにランダム シードが使用されることを意味します。反復可能な負荷パターンが必要な場合は、 ランダム シードをランダムな値に変更します。一般的なアドバイスは、ゼロ以外のシードを使用することであり、「デフォルトで 0」が実装上の制限です。

注: 同じスループット レートとゼロ以外の同じシードを持つ複数のスレッド グループを使用すると、サンプルが同時に発生する可能性があります。

高レートおよび/または長いテスト期間のテスト

Precise Throughput Timerはスケジュールを生成し、メモリに保持します。ほとんどの場合、問題にはなりませんが、スケジュールを 1'000'000 サンプルよりも短くしたい場合があることを覚えておいてください。1'000'000 サンプルのスケジュールを生成するのに約 200 ミリ秒かかり、スケジュールはヒープで 8 メガバイトを消費します。1,000 万エントリのスケジュールの構築には 1 ~ 2 秒かかり、ヒープで 80 メガバイトを消費します。

たとえば、1 時間あたり 5,000 のレートで 2 週間にわたるテストを実行する場合、1 時間あたり正確に 5,000 サンプルが必要になるでしょう。タイマーのタイマーのTest duration (seconds)プロパティを 1 時間に設定できます。次に、タイマーは 1 時間に 5,000 サンプルのスケジュールを作成し、スケジュールが使い果たされると、タイマーは次の 1 時間のスケジュールを生成します。

同時に、テスト期間 (秒)を 2 週間に設定すると、タイマーは 168'000 サンプル = 2 週間 * 5'000 サンプル/時間 = 2*7*24*500のスケジュールを生成します。スケジュールの生成には約 30 ミリ秒かかり、1 メガバイト強を消費します。

バースト負荷

すべてのサンプルをペア、トリプルなどにする必要がある場合があります。特定のケースはSynchronizing Timerで 解決できますが、 Precise Throughput Timerにはパックでリクエストを発行するネイティブな方法があります。この動作はデフォルトで無効になっており、「バッチ出発」設定で制御されます

  • バッチ内のスレッド数 (threads)。バッチ内のサンプル数を指定します。サンプルの総数は依然としてターゲットスループットと一致していることに注意してください
  • バッチ内のスレッド間の遅延 (ミリ秒)。たとえば、42 に設定され、バッチ サイズが 3 の場合、スレッドは x、x+42ms、x+84ms で出発します。

可変負荷率

プロパティ値 (スループットなど) は式で定義できますが、新しい値を適応させるために新しいスケジュールを再計算するには時間がかかるため、テストを通じて値をほぼ同じに保つことをお勧めします。

モニタリング

次のスケジュールが生成されると、Precise Throughput Timerは次のメッセージをjmeter.logに記録します 。 i21) 0 ミリ秒で。First 15 events will be fired at: 1.1869653574244292 (+1.1869653574244292), 1.4691340403043207 (+0.2821686828798915), 3.638151706179226 (+2.169017665874905), 3.836357090410566 (+0.19820538423134026), 4.709330071408575 (+0.8729729809980085), 5.61330076999953 (+0.903970698590955), ... これは、スケジュールの生成に 0 ミリ秒かかったことを示しており、絶対タイムスタンプを秒単位で示しています。上記の場合、レートは 1 秒あたり 1 に設定され、実際のタイムスタンプは 1.2 秒、1.5 秒、3.6 秒、3.8 秒、4.7 秒などになりました。

正確なスループット タイマーのコントロール パネルのスクリーンショット
正確なスループット タイマーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのタイマーのわかりやすい名前
いいえ
ターゲット スループット (「スループット期間」あたりのサンプル数)
影響を受けるすべてのサンプラーから、グループ内のすべてのスレッドを含め、「スループット期間」ごとに取得するサンプルの最大数。
はい
スループット期間 (秒)
スループット期間。たとえば、「スループット」が 42 に設定され、「スループット期間」が 21 秒に設定されている場合、1 秒あたり 2 つのサンプルが取得されます。
はい
テスト時間 (秒)
これは、「テスト期間」の期間中にスループット * 期間のサンプルを確実に取得するために使用されます。
はい
バッチ内のスレッド数 (スレッド)
値が 1 を超えると、複数のスレッドが同時にタイマーから離れます。平均スループットは依然として「スループット」値を満たしています。
はい
バッチ内のスレッド間の遅延 (ミリ秒)
たとえば、42 に設定され、バッチ サイズが 3 の場合、スレッドは x、x+42ms、x+84ms で出発します。
はい
ランダム シード (0 からランダムに変更)
注: タイマーごとに異なるシード値を設定することをお勧めします。定数シードは、タイマーがテスト開始ごとに同じ遅延を生成することを保証します。「0」の値は、タイマーが完全にランダムであることを意味します (ある実行から別の実行への繰り返し不可)。
はい
^

タイマーの同期

SyncTimer の目的は、X 個のスレッドがブロックされるまでスレッドをブロックし、その後、すべてのスレッドを一度に解放することです。したがって、SyncTimer は、テスト計画のさまざまなポイントで大きな即時負荷を作成できます。

同期タイマーのコントロール パネルのスクリーンショット
同期タイマーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのタイマーのわかりやすい名前。
いいえ
グループ化する同時ユーザー数
一度に解放するスレッドの数。0に設定することは、スレッド グループ内のスレッド数に設定することと同じです。
はい
ミリ秒単位のタイムアウト
0に設定すると、Timer はスレッド数が「 Number of Simultaneous Users to Group 」の値に達するまで待機します。0よりも大きい場合、タイマーは最大 "ミリ秒単位のタイムアウト" でスレッド数だけ待機します。タイムアウト間隔が経過しても待機しているユーザー数に達しない場合、タイマーは待機を停止します。デフォルトは0
いいえ
ミリ秒単位のタイムアウトが0に設定され、スレッド数が「グループ化する同時ユーザー数」に達しない場合、テストは無限に一時停止します。強制停止のみが停止します。この場合、タイムアウトをミリ秒単位で設定することを検討してください。
1 つの JVM 内でのみタイマー ブロックを同期するため、分散テストを使用する場合は、「Number of Simultaneous Users to Group by」を、1 つのインジェクターのみを考慮して、それを含む Thread グループのユーザー数よりも大きい値に設定しないでください。
^

BeanShell タイマー

BeanShell タイマーを使用して遅延を生成できます。

BeanShell の使用の詳細については、BeanShell の Web サイトを参照してください。

JSR223 タイマー+Groovyへの移行は、パフォーマンス、新しい Java 機能のサポート、および BeanShell ライブラリの限定的なメンテナンスのために強く推奨されます。

テスト要素は、ThreadListenerメソッドとTestListenerメソッドをサポートしています。これらは初期化ファイルで定義する必要があります。定義の例 については、ファイルBeanShellListeners.bshrcを参照してください。

BeanShell タイマーのコントロール パネルのスクリーンショット
BeanShell タイマーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。名前はスクリプト変数Labelに格納されます
いいえ
各呼び出しの前に bsh.Interpreter をリセットします
このオプションを選択すると、サンプルごとにインタープリターが再作成されます。これは、一部の長時間実行されるスクリプトで必要になる場合があります。詳細については、「ベスト プラクティス - BeanShell スクリプト」を参照してください。
はい
パラメーター
BeanShell スクリプトに渡すパラメーター。パラメータは次の変数に格納されます。
  • パラメータ- パラメータを単一の変数として含む文字列
  • bsh.args - パラメータを含む文字列配列、空白で分割
いいえ
スクリプトファイル
実行する BeanShell スクリプトを含むファイル。ファイル名はスクリプト変数FileNameに格納されます 。戻り値は、待機するミリ秒数として使用されます。
いいえ
脚本
BeanShell スクリプト。戻り値は、待機するミリ秒数として使用されます。
はい(スクリプトファイルが提供されていない場合)

スクリプトを呼び出す前に、いくつかの変数が BeanShell インタープリターに設定されます。

  • log - ( Logger ) - ログファイルへの書き込みに使用できます
  • ctx - ( JMeterContext ) - コンテキストへのアクセスを提供します
  • vars - ( JMeterVariables ) - 変数への読み取り/書き込みアクセスを提供します。
    vars.get(キー);
    vars.put(キー、値);
    vars.putObject("OBJ1",新しいオブジェクト());
    
  • props - (JMeterProperties - クラス java.util.Properties) - 例props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - 前のSampleResult (存在する場合)へのアクセスを提供します

上記の各変数で使用可能なすべてのメソッドの詳細については、Javadoc を確認してください。

プロパティbeanshell.timer.initが定義されている場合、これは、BeanShell スクリプトで使用するメソッドなどを定義するために使用できる初期化ファイルをロードするために使用されます。

^

JSR223 タイマー

JSR223 タイマーは、JSR223 スクリプト言語を使用して遅延を生成するために使用できます。

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
スクリプト言語
使用するスクリプト言語。
はい
パラメーター
スクリプトに渡すパラメーター。パラメータは次の変数に格納されます。
  • パラメータ- パラメータを単一の変数として含む文字列
  • args - パラメータを含む文字列配列、空白で分割
いいえ
スクリプトファイル
実行するスクリプトを含むファイル。相対ファイル パスが使用されている場合は、" user.dir " によって参照されるディレクトリに対して相対的になります。システム プロパティ 戻り値は長整数に変換され、待機するミリ秒数として使用されます。 .
いいえ
スクリプト コンパイルのキャッシュ
使用されている言語がCompilableインターフェースをサポートしている場合、JMeter がスクリプト コンパイルの結果をキャッシュするために使用するテスト プラン全体で一意の文字列(Groovy はこれらの 1 つですが、java、beanshell、および javascript はサポートしていません)。
このオプションをチェックせずに Groovy を使用している場合は、JSR223 Sampler Java System プロパティの注を参照してください。
いいえ
脚本
スクリプト。戻り値は、待機するミリ秒数として使用されます。
はい(スクリプトファイルが提供されていない場合)

スクリプトを呼び出す前に、いくつかの変数がスクリプト インタープリターに設定されます。

  • log - ( Logger ) - ログファイルへの書き込みに使用できます
  • ctx - ( JMeterContext ) - コンテキストへのアクセスを提供します
  • vars - ( JMeterVariables ) - 変数への読み取り/書き込みアクセスを提供します。
    vars.get(キー);
    vars.put(キー、値);
    vars.putObject("OBJ1",新しいオブジェクト());
  • props - (JMeterProperties - クラス java.util.Properties) - 例props.get("START.HMS"); props.put("PROP1","1234");
  • sampler - ( Sampler ) - 現在のサンプラー
  • ラベル- タイマーの名前
  • FileName - ファイル名 (存在する場合)
  • OUT - System.out

上記の各変数で使用可能なすべてのメソッドの詳細については、Javadoc を確認してください。

^

ポアソンランダムタイマー

このタイマーは、各スレッド要求をランダムな時間だけ一時停止します。ほとんどの時間間隔は、特定の値の近くで発生します。総遅延は、ポアソン分布値とオフセット値の合計です。

注: ポアソン到着をモデル化する場合は、代わりに正確なスループット タイマーを使用することを検討してください。

ポアソン ランダム タイマーのコントロール パネルのスクリーンショット
ポアソン ランダム タイマーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのタイマーのわかりやすい名前
いいえ
ラムダ
ミリ秒単位のラムダ値。
はい
一定遅延オフセット
ランダム遅延に加えて一時停止するミリ秒数。
はい
^
^

18.7 プリプロセッサ


プリプロセッサは、スコープ内のサンプラを変更するために使用されます。

この修飾子は、サーバーからの HTML 応答を解析し、リンクとフォームを抽出します。この修飾子を通過する URL テスト サンプルは、直前の応答から抽出されたリンクまたはフォームのいずれかと「一致」するかどうかが調べられます。次に、URL テスト サンプルの値を、一致するリンクまたはフォームからの適切な値に置き換えます。Perl タイプの正規表現は、一致を見つけるために使用されます。

HTML リンク パーサーのコントロール パネルのスクリーンショット
HTML リンク パーサーのコントロール パネルのスクリーンショット
一致は、プロトコルホストパス、およびパラメータ名を使用して実行されます。ターゲット サンプラーには、応答リンクにないパラメーターを含めることはできません。
分散テストを使用している場合は、モードを切り替えて ( jmeter.propertiesを参照)、ストリッピング モードにならないようにしてください。Bug 56376 を参照してください
スパイダーの例

簡単な例を考えてみましょう: サーバーから返された HTML から解析されたリンクを次から次へとヒットさせて、JMeter にサイトを「スパイダー」させたいとしましょう (これは実際には最も有用なことではありませんが、良い例として役立ちます)。 . Simple Controllerを作成し、それに「HTML Link Parser」を追加します。次に、HTTP リクエストを作成し、ドメインを「.*」に設定し、パスも同様に設定します。これにより、テスト サンプルは、返されたページで見つかったリンクと一致します。スパイダリングを特定のドメインに制限したい場合は、ドメインの値を必要な値に変更します。次に、そのドメインへのリンクのみがたどられます。

投票の例

より便利な例: Web ポーリング アプリケーションの場合、ユーザーが選択できるラジオ ボタンとしていくつかのポーリング オプションを含むページがあるとします。投票オプションの値が非常に動的であるとしましょう - おそらくユーザーが生成したものです。JMeter でポーリングをテストする場合は、ハードコードされた値を選択してテスト サンプルを作成するか、HTML リンク パーサーにフォームを解析させて、ランダム ポーリング オプションを URL テスト サンプルに挿入することができます。これを行うには、上記の例に従ってください。ただし、Web テスト コントローラーの URL オプションを構成するときは、メソッドとして「 POST 」を必ず選択してください。domainpath、およびその他のフォーム パラメータにハードコードされた値を入力します。次に、実際のラジオ ボタンのパラメーターとして、名前を入力します (そうしましょう。poll_choice ")、そしてそのパラメーターの値の " .* "。修飾子がこの URL テスト サンプルを調べると、それが投票フォームに「一致」していることがわかります (そして、それが与えられた場合、他のフォームと一致するべきではありません)。 URL テスト サンプルの他のすべての側面を指定しました)、フォーム パラメータをフォームの一致するパラメータに置き換えます. 正規表現 " .* " は何にでも一致するため、修飾子にはおそらくリストがあります。選択するラジオ ボタンの数. ランダムに選択され、URL テスト サンプルの値が置き換えられます. テストのたびに、新しいランダム値が選択されます.

図 18 - オンライン投票の例
図 18 - オンライン投票の例
覚えておくべき重要なことの 1 つは、動的テスト サンプルに関連するリンクとフォームを含む HTML ページを返す直前にテスト サンプルを作成する必要があることです。
^

HTTP URL 書き換え修飾子

この修飾子は HTML リンク パーサーと同様に機能しますが、HTML リンク パーサーよりも使いやすく、より効率的な特定の目的があることを除きます。URL 書き換えを使用して Cookie の代わりにセッション ID を保存する Web アプリケーションの場合、この要素はHTTP Cookie Managerと同様に ThreadGroup レベルでアタッチできます。セッション ID パラメーターの名前を指定するだけで、ページ上でそれが検出され、その ThreadGroup のすべての要求に引数が追加されます。

または、この修飾子を選択したリクエストにアタッチすると、それらのみが変更されます。賢いユーザーは、この修飾子を使用して、 HTML リンク パーサーを逃れる値を取得できると判断することさえあり ます。

HTTP URL 書き換え修飾子のコントロール パネルのスクリーンショット
HTTP URL 書き換え修飾子のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
テスト ツリーでこの要素に付けられたわかりやすい名前。
いいえ
セッション引数名
前の応答から取得するパラメーターの名前。この修飾子は、ページ上に存在する任意の場所にあるパラメーターを検索し、HREF であるかフォームであるかに関係なく、それに割り当てられた値を取得します。
はい
パス拡張
一部の Web アプリは、セミコロンとセッション ID パラメーターを追加して URL を書き換えます。その場合は、このボックスにチェックを入れてください。
いいえ
パスの拡張子に等号を使用しないでください
一部の Web アプリは、パラメーター名と値の間に「=」記号を使用せずに URL を書き換えます (Intershop Enfinity など)。
いいえ
パス拡張子に疑問符を使用しないでください
クエリ文字列がパス拡張子 (Intershop Enfinity など) で終わるのを防ぎます。
いいえ
セッション ID をキャッシュしますか?
セッション ID が存在しない場合、後で使用するためにセッション ID の値を保存する必要がありますか?
はい
URL エンコード
パラメータ書き込み時のURLエンコード値
いいえ
分散テストを使用する場合は、モードを切り替えて ( jmeter.propertiesを参照)、ストリッピング モードにならないようにしてください( Bug 56376を参照) 。
^

ユーザーパラメータ

ユーザーは、個々のスレッドに固有のユーザー変数の値を指定できます。

ユーザー変数はテスト計画でも指定できますが、個々のスレッドに固有ではありません。このパネルでは、任意のユーザー変数に一連の値を指定できます。スレッドごとに、一連の値のいずれかが変数に順番に割り当てられます。値よりも多くのスレッドがある場合、値は再利用されます。たとえば、これを使用して、各スレッドで使用される個別のユーザー ID を割り当てることができます。ユーザー変数は、任意の JMeter コンポーネントの任意のフィールドで参照できます。

変数を指定するには、パネルの下部にある[変数の追加] ボタンをクリックし、[名前: ] 列に変数名を入力します。シリーズに新しい値を追加するには、[ユーザーの追加]ボタンをクリックし、新しく追加された列に目的の値を入力します。

関数構文${variable}を使用して、同じスレッド グループ内の任意のテスト コンポーネントで値にアクセスできます。

多数のパラメーターに適したCSV Data Set Config要素も参照してください。

ユーザー パラメータのコントロール パネルのスクリーンショット
ユーザー パラメータのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
反復ごとに 1 回更新
ユーザー パラメータ要素が反復ごとに 1 回だけ変数を更新する必要があるかどうかを示すフラグ。関数を UP に埋め込む場合は、変数の値が更新される頻度をより詳細に制御する必要がある場合があります。UP の親コントローラーを介して毎回値が更新されるようにするには、このボックスをオンのままにします。チェックボックスをオフにすると、UP はスコープ内で行われたすべてのサンプル リクエストのパラメータを更新します。
はい
^

BeanShell プリプロセッサ

BeanShell PreProcessor を使用すると、サンプルを取得する前に任意のコードを適用できます。

BeanShell の使用の詳細については、BeanShell の Web サイトを参照してください。

JSR223 PreProcessor + Groovyへの移行は、パフォーマンス、新しい Java 機能のサポート、および BeanShell ライブラリの限定的なメンテナンスのために強く推奨されます。

テスト要素は、ThreadListenerメソッドとTestListenerメソッドをサポートしています。これらは初期化ファイルで定義する必要があります。定義の例 については、ファイルBeanShellListeners.bshrcを参照してください。

BeanShell PreProcessor のコントロール パネルのスクリーンショット
BeanShell PreProcessor のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。名前はスクリプト変数Labelに格納されます
いいえ
各呼び出しの前に bsh.Interpreter をリセットします
このオプションを選択すると、サンプルごとにインタープリターが再作成されます。これは、一部の長時間実行されるスクリプトで必要になる場合があります。詳細については、「ベスト プラクティス - BeanShell スクリプト」を参照してください。
はい
パラメーター
BeanShell スクリプトに渡すパラメーター。パラメータは次の変数に格納されます。
  • パラメータ- パラメータを単一の変数として含む文字列
  • bsh.args - パラメータを含む文字列配列、空白で分割
いいえ
スクリプトファイル
実行する BeanShell スクリプトを含むファイル。ファイル名はスクリプト変数FileNameに格納されます
いいえ
脚本
BeanShell スクリプト。戻り値は無視されます。
はい(スクリプトファイルが提供されていない場合)

スクリプトを呼び出す前に、いくつかの変数が BeanShell インタープリターに設定されます。

  • log - ( Logger ) - ログファイルへの書き込みに使用できます
  • ctx - ( JMeterContext ) - コンテキストへのアクセスを提供します
  • vars - ( JMeterVariables ) - 変数への読み取り/書き込みアクセスを提供します。
    vars.get(キー);
    vars.put(キー、値);
    vars.putObject("OBJ1",新しいオブジェクト());
  • props - (JMeterProperties - クラス java.util.Properties) - 例props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - 前の SampleResult (存在する場合) へのアクセスを提供します
  • sampler - ( Sampler )- 現在のサンプラーへのアクセスを提供します

上記の各変数で使用可能なすべてのメソッドの詳細については、Javadoc を確認してください。

プロパティbeanshell.preprocessor.initが定義されている場合、これは、BeanShell スクリプトで使用するメソッドなどを定義するために使用できる初期化ファイルをロードするために使用されます。

^

JSR223 プリプロセッサ

JSR223 PreProcessor を使用すると、サンプルを取得する前に JSR223 スクリプト コードを適用できます。

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
言語
使用する JSR223 言語
はい
パラメーター
スクリプトに渡すパラメーター。パラメータは次の変数に格納されます。
  • パラメータ- パラメータを単一の変数として含む文字列
  • args - パラメータを含む文字列配列、空白で分割
いいえ
スクリプトファイル
実行するスクリプトを含むファイル。相対ファイル パスが使用されている場合は、「user.dir」システム プロパティによって参照されるディレクトリからの相対パスになります。
いいえ
スクリプト コンパイルのキャッシュ
使用されている言語がCompilableインターフェースをサポートしている場合、JMeter がスクリプト コンパイルの結果をキャッシュするために使用するテスト プラン全体で一意の文字列(Groovy はこれらの 1 つですが、java、beanshell、および javascript はサポートしていません)。
このオプションをチェックせずに Groovy を使用している場合は、JSR223 Sampler Java System プロパティの注を参照してください。
いいえ
脚本
実行するスクリプト。
はい(スクリプトファイルが提供されていない場合)

次の JSR223 変数は、スクリプトで使用するために設定されています。

  • log - ( Logger ) - ログファイルへの書き込みに使用できます
  • Label - 文字列ラベル
  • FileName - スクリプト ファイル名 (存在する場合)
  • Parameters - パラメータ (文字列として)
  • args - 文字列配列としてのパラメーター (空白で分割)
  • ctx - ( JMeterContext ) - コンテキストへのアクセスを提供します
  • vars - ( JMeterVariables ) - 変数への読み取り/書き込みアクセスを提供します。
    vars.get(キー);
    vars.put(キー、値);
    vars.putObject("OBJ1",新しいオブジェクト());
    vars.getObject("OBJ2");
  • props - (JMeterProperties - クラス java.util.Properties) - 例props.get("START.HMS"); props.put("PROP1","1234");
  • sampler - ( Sampler )- 現在のサンプラーへのアクセスを提供します
  • OUT - System.out - 例: OUT.println("message")

上記の各変数で使用可能なすべてのメソッドの詳細については、Javadoc を確認してください。

^

JDBC プリプロセッサ

JDBC PreProcessor を使用すると、サンプルを実行する直前に SQL ステートメントを実行できます。これは、JDBC サンプルがデータベースにあるデータを必要とし、セットアップ スレッド グループでこれを計算できない場合に役立ちます。詳細については、JDBC リクエストを参照してください。

次のテスト計画を参照してください。

リンクされたテスト プランの " Create Price Cut-Off " では、JDBC PreProcessor がストアド プロシージャを呼び出して、データベースに Price Cut-Off を作成します。これは、" Calculate Price Cut-off" で使用されます。

値下げプリプロセッサの作成
値下げプリプロセッサの作成
^

正規表現ユーザーパラメーター

正規表現を使用して、別の HTTP 要求から抽出された HTTP パラメーターの動的な値を指定できます。RegEx ユーザー パラメータは、個々のスレッドに固有です。

このコンポーネントを使用すると、HTTP 要求パラメーターの名前と値を抽出する正規表現の参照名を指定できます。パラメータの名前とパラメータの値には、正規表現グループ番号を指定する必要があります。置換は、名前が一致するこの正規表現ユーザー パラメータを使用するサンプラーのパラメータに対してのみ行われます

RegEx ユーザー パラメータのコントロール パネルのスクリーンショット
RegEx ユーザー パラメータのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
正規表現参照名
正規表現への参照の名前
はい
パラメータ名の正規表現グループ番号
パラメータ名の抽出に使用する正規表現のグループ番号
はい
パラメータ値の正規表現グループ番号
パラメータ値の抽出に使用する正規表現のグループ番号
はい
正規表現の例

3 つの入力パラメータを持つフォームを返すリクエストがあり、そのうちの 2 つの値を抽出して次のリクエストに挿入したいとします。

  1. 最初の HTTP リクエストに対してポスト プロセッサの正規表現を作成する
    • refName - 正規表現の名前を設定する Expression ( listParams )
    • 正規表現- 入力名と入力値の属性を抽出する式
      例: input name="([^"]+?)" value="([^"]+?)"
    • テンプレート- 空になります
    • match nr - -1 (可能なすべての一致を繰り返すため)
  2. 2 番目の HTTP 要求のプリプロセッサ RegEx ユーザー パラメータを作成する
    • refName - 正規表現の同じ参照名を設定します。この例ではlistParamsになります。
    • パラメータ名グループ番号- パラメータ名の正規表現のグループ番号。この例では1になります。
    • パラメータ値のグループ番号- パラメータ値の正規表現のグループ番号。この例では2になります。

パラメーターの名前と値を抽出するために使用される、 Regular Expression Extractor要素も参照してください。

^

サンプルタイムアウト

このプリプロセッサは、完了までに時間がかかりすぎる場合にサンプルを中断するタイマー タスクをスケジュールします。ゼロまたは負の場合、タイムアウトは無視されます。これが機能するには、サンプラーが Interruptible を実装する必要があります。次のサンプラーがそうすることが知られています:
AJP、BeanShell、FTP、HTTP、Soap、AccessLog、MailReader、JMS Subscriber、TCPSampler、TestAction、JavaSampler

テスト要素は、接続タイムアウトや応答タイムアウトなどの個々のタイムアウトが不十分な場合、またはサンプラーがタイムアウトをサポートしていない場合に使用することを目的としています。タイムアウトは、通常のテストでトリガーされないように十分に長く設定する必要がありますが、スタックしているサンプルを中断できるように十分に短く設定する必要があります。

[デフォルトでは、JMeter は Callable を使用してサンプラーを中断します。これはタイマーと同じスレッドで実行されるため、割り込みに時間がかかると、後続のタイムアウトの処理が遅れる可能性があります。これは問題になるとは思われませんが、必要に応じて、プロパティInterruptTimer.useRunnableをtrueに 設定して、Callable の代わりに別の Runnable スレッドを使用できます。]

サンプルタイムアウトのコントロールパネルのスクリーンショット
サンプルタイムアウトのコントロールパネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこのタイマーのわかりやすい名前。
いいえ
サンプルタイムアウト
サンプルの完了に時間がかかる場合は、中断されます。
はい
^
^

18.8 ポストプロセッサ

名前が示すように、ポスト プロセッサはサンプラーの後に適用されます。これらは同じスコープ内のすべてのサンプラーに適用されることに注意してください。そのため、ポストプロセッサーが特定のサンプラーにのみ適用されるようにするには、サンプラーの子として追加します。

注: 特に記載がない限り、ポスト プロセッサはサブサンプル (子サンプル) には適用されず、親サンプルにのみ適用されます。JSR223 および BeanShell ポストプロセッサの場合、スクリプトはメソッド prev.getSubResults()を使用してサブサンプルを取得できます。このメソッドは SampleResultsの配列を返します。何もない場合、配列は空になります。

ポストプロセッサはアサーションの前に実行されるため、アサーション結果にアクセスすることはできず、サンプル ステータスにアサーションの結果が反映されることもありません。アサーション結果へのアクセスが必要な場合は、代わりにリスナーを使用してみてください。また、すべてのアサーションが実行された後 、変数JMeterThread.last_sample_okが「 true」または「false 」に設定されることにも注意してください。

正規表現エクストラクタ

ユーザーが Perl タイプの正規表現を使用してサーバーの応答から値を抽出できるようにします。ポストプロセッサとして、この要素はスコープ内の各 Sample リクエストの後に実行され、正規表現を適用し、リクエストされた値を抽出し、テンプレート文字列を生成し、結果を指定された変数名に保存します。

正規表現エクストラクタのコントロール パネルのスクリーンショット
正規表現エクストラクタのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
適用先:
これは、サブサンプルを生成できるサンプラー (埋め込みリソースを含む HTTP サンプラー、メール リーダー、またはトランザクション コントローラーによって生成されたサンプルなど) で使用するためのものです。
  • メイン サンプルのみ- メイン サンプルのみに適用されます
  • サブサンプルのみ- サブサンプルのみに適用されます
  • メインサンプルとサブサンプル- 両方に適用されます。
  • 使用する JMeter 変数名- 抽出は名前付き変数の内容に適用されます
照合は、すべての適格なサンプルに順番に適用されます。たとえば、メイン サンプルと 3 つのサブサンプルがあり、それぞれに正規表現の 1 つの一致が含まれている場合 (つまり、合計で 4 つの一致)。一致番号 = 3、サブサンプルのみの場合、エクストラクタは 3番目のサブサンプルと一致します。一致番号 = 3、メイン サンプルとサブサンプルの場合、エクストラクタは 2番目のサブサンプルと一致します (最初の一致はメイン サンプルです)。一致番号 = 0または負の場合、すべての適格なサンプルが処理されます。一致数 > 0の場合、十分な数の一致が見つかるとすぐに一致が停止します。
はい
チェックするフィールド
次のフィールドを確認できます。
  • Body - 応答の本文、たとえば Web ページのコンテンツ (ヘッダーを除く)
  • 本文 (エスケープなし) - すべての Html エスケープ コードが置き換えられた応答の本文。Html エスケープはコンテキストに関係なく処理されるため、誤った置換が行われる可能性があることに注意してください。
    このオプションはパフォーマンスに大きく影響するため、絶対に必要な場合にのみ使用し、その影響に注意してください。
  • Body as a Document - Apache Tika を介してさまざまなタイプのドキュメントからテキストを抽出します (結果ツリーの表示ドキュメント ビュー セクションを参照)。
    Body as a Document オプションはパフォーマンスに影響を与える可能性があるため、テストに問題がないことを確認してください。
  • リクエスト ヘッダー- HTTP 以外のサンプルには存在しない場合があります
  • 応答ヘッダー- HTTP 以外のサンプルには存在しない場合があります
  • URL
  • 応答コード- 例: 200
  • 応答メッセージ- 例: OK
ヘッダーは HTTP サンプルに役立ちます。他のサンプル タイプには存在しない場合があります。
はい
作成した変数の名前
結果を格納する JMeter 変数の名前。また、各グループは[refname]_g#として保存されることにも注意してください。[refname]は参照名として入力した文字列、#はグループ番号です。ここで、グループ0は一致全体、グループ1は一致からの一致です。括弧の最初のセットなど
はい
正規表現
応答データの解析に使用される正規表現。これには、グループ$0$を使用しない限り、文字列の一部をキャプチャするために、少なくとも 1 組の括弧 " () " が含まれている必要があります。/ / -で式を囲まないでください。もちろん、これらの文字も一致させたい場合を除きます。
はい
テンプレート
見つかった一致から文字列を作成するために使用されるテンプレート。これは、正規表現内のグループを参照する特別な要素を持つ任意の文字列です。グループを参照する構文は次のとおりです。' $1$ ' はグループ1を参照し、' $2$ ' はグループ2を参照します。$0$は、式全体が一致するものを参照します。
はい
マッチ番号 (ランダムの場合は 0)
使用する一致を示します。正規表現は複数回一致する場合があります。
  • JMeter がランダムに一致を選択する必要があることを示すには、ゼロの値を使用します。
  • 正の数 N は、n番目の一致を選択することを意味します。
  • 負の数は、 ForEach コントローラーと組み合わせて使用​​されます。以下を参照してください。
はい
デフォルト値
正規表現が一致しない場合、参照変数はデフォルト値に設定されます。これは、テストのデバッグに特に役立ちます。デフォルトが指定されていない場合、正規表現が一致しなかったのか、RE 要素が処理されなかったのか、間違った変数が使用されたのかを判断するのは困難です。

ただし、同じ変数を設定する複数のテスト要素がある場合、式が一致しない場合は、変数を変更しないでおくことができます。この場合、デバッグが完了したらデフォルト値を削除します。

いいえ、しかし推奨されます
空のデフォルト値を使用
チェックボックスがオンでデフォルト値が空の場合、JMeter は変数を設定しないのではなく、空の文字列に設定します。したがって、たとえばテスト計画で${var} (参照名が var の場合) を使用する場合、抽出された値が見つからない場合、 ${var}は ${ var}を含む代わりに空の文字列と等しくなります。抽出された値がオプションの場合に役立ちます。
いいえ

一致番号が負でない数に設定され、一致が発生した場合、変数は次のように設定されます。

  • refName - テンプレートの値
  • refName_g nn = 012 - 一致するグループ
  • refName_g - 正規表現のグループ数 ( 0を除く)

一致するものがない場合、refName変数はデフォルトに設定されます (これがない場合を除く)。また、次の変数が削除されます。

  • refName_g0
  • refName_g1
  • refName_g

一致数が負の数に設定されている場合、サンプラー データ内のすべての可能な一致が処理されます。変数は次のように設定されます。

  • refName_matchNr - 見つかった一致の数。0になる可能性があります
  • refName_ nn = 123など - テンプレートによって生成された文字列
  • refName_ n _g m、ここでm = 0 , 1 , 2 - マッチnのグループ
  • refName - 常にデフォルト値に設定
  • refName_g n - 未設定

この場合、 refName変数は常にデフォルト値に設定され、関連するグループ変数は設定されない ことに注意してください。

修飾子の指定方法の例、およびJMeter 正規表現の詳細については、 Response Assertionも参照してください。

^

CSS セレクター エクストラクタ (旧: CSS/JQuery エクストラクタ)

ユーザーが CSS セレクター構文を使用して、サーバーの HTML 応答から値を抽出できるようにします。ポストプロセッサとして、この要素はスコープ内の各サンプル リクエストの後に実行され、CSS/JQuery 式を適用し、リクエストされたノードを抽出し、ノードをテキストまたは属性値として抽出し、結果を指定された変数名に保存します。

CSS Selector Extractor のコントロール パネルのスクリーンショット
CSS Selector Extractor のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
適用先:
これは、サブサンプルを生成できるサンプラー (埋め込みリソースを含む HTTP サンプラー、メール リーダー、またはトランザクション コントローラーによって生成されたサンプルなど) で使用するためのものです。
  • メイン サンプルのみ- メイン サンプルのみに適用されます
  • サブサンプルのみ- サブサンプルのみに適用されます
  • メインサンプルとサブサンプル- 両方に適用されます。
  • 使用する JMeter 変数名- 抽出は名前付き変数の内容に適用されます
照合は、すべての適格なサンプルに順番に適用されます。たとえば、メイン サンプルと 3 つのサブサンプルがあり、それぞれに正規表現の 1 つの一致が含まれている場合 (つまり、合計で 4 つの一致)。一致番号 = 3、サブサンプルのみの場合、エクストラクタは 3番目のサブサンプルと一致します。一致番号 = 3、メイン サンプルとサブサンプルの場合、エクストラクタは 2番目のサブサンプルと一致します (最初の一致はメイン サンプルです)。一致番号 = 0または負の場合、すべての適格なサンプルが処理されます。一致数 > 0の場合、十分な数の一致が見つかるとすぐに一致が停止します。
はい
CSS セレクターの実装
2 CSS/JQuery ベースの構文の実装がサポートされています。 セレクターが空に設定されている場合、デフォルトの実装 (JSoup) が使用されます。
間違い
作成した変数の名前
結果を格納する JMeter 変数の名前。
はい
CSS/JQuery 式
応答データからノードを選択するために使用される CSS/JQuery セレクター。セレクター、セレクターの組み合わせ、疑似セレクターがサポートされています。例:
  • E[foo] - 「 foo」属性を持つE要素
  • 祖先の子- 祖先から派生した子要素。たとえば、.body pは、クラス「 body」を持つブロックの下の任意の場所にあるp 個の要素を検索します
  • :lt(n) - 兄弟インデックス (つまり、親に対する DOM ツリー内の位置) がnより小さい要素を検索します。例: td:lt(3)
  • :contains(text) - 指定されたtextを含む要素を検索します。検索では大文字と小文字が区別されません。例p:contains(jsoup)
構文の詳細については、次を参照してください。
はい
属性
セレクターに一致したノードから抽出する (HTML 構文による) 属性の名前。空の場合、この要素とそのすべての子を結合したテキストが返されます。
属性が設定されている場合、これはJSoupのElement#attr(name)関数と同等です。
属性値が設定された CSS Extractor
属性値が設定された CSS Extractor

空の場合、属性に値が設定されていない場合、これは JSoup のElement#text()関数と同等です。
属性が設定されていない CSS Extractor
属性が設定されていない CSS Extractor
間違い
マッチ番号 (ランダムの場合は 0)
使用する一致を示します。CSS/JQuery セレクターは複数回一致する場合があります。
  • JMeter がランダムに一致を選択する必要があることを示すには、ゼロの値を使用します。
  • 正の数Nは、n番目の一致を選択することを意味します。
  • 負の数は、 ForEach コントローラーと組み合わせて使用​​されます。以下を参照してください。
はい
デフォルト値
式が一致しない場合、参照変数はデフォルト値に設定されます。これは、テストのデバッグに特に役立ちます。デフォルトが指定されていない場合、式が一致しなかったのか、CSS/JQuery 要素が処理されなかったのか、間違った変数が使用されたのかを判断するのは困難です。

ただし、同じ変数を設定する複数のテスト要素がある場合、式が一致しない場合は、変数を変更しないでおくことができます。この場合、デバッグが完了したらデフォルト値を削除します。

いいえ、しかし推奨されます
空のデフォルト値を使用
チェックボックスがオンでデフォルト値が空の場合、JMeter は変数を設定しないのではなく、空の文字列に設定します。したがって、たとえばテスト計画で${var} (参照名が var の場合) を使用する場合、抽出された値が見つからない場合、 ${var}は ${ var}を含む代わりに空の文字列と等しくなります。抽出された値がオプションの場合に役立ちます。
いいえ

一致番号が負でない数に設定され、一致が発生した場合、変数は次のように設定されます。

  • refName - テンプレートの値

一致するものがない場合、refName変数はデフォルトに設定されます (これがない場合を除く)。

一致数が負の数に設定されている場合、サンプラー データ内のすべての可能な一致が処理されます。変数は次のように設定されます。

  • refName_matchNr - 見つかった一致の数。0になる可能性があります
  • refName_n、ここでn = 123など - テンプレートによって生成された文字列
  • 参照名 - 常にデフォルト値に設定

refName に注意してください。変数は常にデフォルト値に設定される

^

XPath2 エクストラクタ

このテスト要素により、ユーザーは XPath2 クエリ言語を使用して、構造化された応答 (XML または (X)HTML) から値を抽出できます。
XPath2 Extractor のコントロール パネルのスクリーンショット
XPath2 Extractor のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
適用先:
これは、サブサンプルを生成できるサンプラー (埋め込みリソースを含む HTTP サンプラー、メール リーダー、またはトランザクション コントローラーによって生成されたサンプルなど) で使用するためのものです。
  • メイン サンプルのみ- メイン サンプルのみに適用されます
  • サブサンプルのみ- サブサンプルのみに適用されます
  • メインサンプルとサブサンプル- 両方に適用されます。
  • 使用する JMeter 変数名- 抽出は名前付き変数の内容に適用されます
XPath マッチングは、該当するすべてのサンプルに順番に適用され、一致するすべての結果が返されます。
はい
テキスト コンテンツではなく、XPath フラグメント全体を返しますか?
選択すると、テキスト コンテンツではなくフラグメントが返されます。
たとえば、//titleは " Apache JMeter " ではなく" <title>Apache JMeter</title> "を返します。 この場合、//title/text()は " Apache JMeterを返します。
ます。
はい
作成した変数の名前
結果を格納する JMeter 変数の名前。
はい
XPath クエリ
XPath 2.0 言語の要素クエリ。複数の一致を返すことができます。
はい
マッチ番号 (ランダムの場合は 0)
XPath パス クエリで多くの結果が得られる場合は、変数として抽出するものを選択できます。
  • 0 : ランダムを意味します (デフォルト値)
  • -1はすべての結果を抽出することを意味し、<変数名> _N ( Nは 1 から結果の数まで)という名前が付けられます。
  • X : X番目の結果を抽出することを意味します。この X thが一致数より大きい場合、何も返されません。デフォルト値が使用されます
いいえ
デフォルト値
一致が見つからない場合に返されるデフォルト値。ノードに値がなく、フラグメント オプションが選択されていない場合にも返されます。
はい
名前空間の別名リスト
ドキュメントの解析に使用する名前空間エイリアスのリスト (宣言ごとに 1 行)。次のように指定する必要があります: prefix=namespace。この実装により、古い XPathExtractor バージョンよりも簡単に名前空間を使用できます。
いいえ

ForEach コントローラーでの使用を許可するには、上記の XPath Extractor とまったく同じように機能します

XPath2 Extractor は、改善された構文や最初のバージョンよりもはるかに多くの機能など、いくつかの興味深いツールを提供します。

以下にいくつかの例を示します。

abs(/本/ページ[2])
本からページの2番目の絶対値を抽出します
avg(/図書館/本/ページ)
ライブラリ内のすべての書籍から平均ページ数を抽出します
比較(/本[1]/ページ[2],/本[2]/ページ[2])
最初の本の 2ページ目と 2番目の本の2ページが等しい場合は 0 に等しい整数値を返し、そうでない場合は-1 を返します。

これらの関数の詳細については、xPath2 関数を確認してください。

^

XPath エクストラクタ

このテスト要素により、ユーザーは XPath クエリ言語を使用して、構造化された応答 (XML または (X)HTML) から値を抽出できます。
JMeter 5.0 以降では、XPath2 Extractorを使用する必要があります。XPath2 Extractor は、名前空間の管理が改善され、より簡単になり、パフォーマンスが向上し、XPath 2.0 がサポートされるためです。
XPath Extractor のコントロール パネルのスクリーンショット
XPath Extractor のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
適用先:
これは、サブサンプルを生成できるサンプラー (埋め込みリソースを含む HTTP サンプラー、メール リーダー、またはトランザクション コントローラーによって生成されたサンプルなど) で使用するためのものです。
  • メイン サンプルのみ- メイン サンプルのみに適用されます
  • サブサンプルのみ- サブサンプルのみに適用されます
  • メインサンプルとサブサンプル- 両方に適用されます。
  • 使用する JMeter 変数名- 抽出は名前付き変数の内容に適用されます
XPath マッチングは、該当するすべてのサンプルに順番に適用され、一致するすべての結果が返されます。
はい
Tidy (寛容なパーサー) を使用する
チェックすると、Tidy を使用して HTML 応答を XHTML に解析します。
  • HTML 応答の場合は、 「Use Tidy」をオンにする必要があります。このような応答は、Tidy を使用して有効な XHTML (XML 互換 HTML) に変換されます。
  • " Use Tidy " は、XHTML または XML 応答 (RSS など) の両方でオフにする必要があります。
HTML の場合、CSS Selector Extractor が適切で実行可能なソリューションです。HTML 抽出に XPath を使用しないでください。
はい
静かな
Tidy Quiet フラグを設定します
Tidyを選択した場合
エラーの報告
Tidy エラーが発生した場合は、それに応じてアサーションを設定します
Tidyを選択した場合
警告を表示
Tidy showWarnings オプションを設定します
Tidyを選択した場合
名前空間を使用する
オンにすると、XML パーサーは名前空間の解決を使用します (下の名前空間に関する注を参照)。現在、ルート要素で宣言されている名前空間のみが認識されることに注意してください。追加のワークスペース名のユーザー定義については、以下を参照してください。
Tidy が選択されていない場合
XML を検証する
ドキュメントをそのスキーマと照らし合わせてチェックしてください。
Tidy が選択されていない場合
空白を無視
要素の空白を無視します。
Tidy が選択されていない場合
外部 DTD を取得する
選択すると、外部 DTD がフェッチされます。
Tidy が選択されていない場合
テキスト コンテンツではなく、XPath フラグメント全体を返しますか?
選択すると、テキスト コンテンツではなくフラグメントが返されます。
たとえば、//titleは " Apache JMeter " ではなく" <title>Apache JMeter</title> "を返します。 この場合、//title/text()は「 Apache JMeter 」を返します。
はい
作成した変数の名前
結果を格納する JMeter 変数の名前。
はい
XPath クエリ
XPath 言語での要素クエリ。複数の一致を返すことができます。
はい
マッチ番号 (ランダムの場合は 0)
XPath パス クエリで多くの結果が得られる場合は、変数として抽出するものを選択できます。
  • 0 : ランダムを意味します
  • -1はすべての結果を抽出することを意味し (デフォルト値)、名前は<変数名> _N ( Nは 1 から結果の数まで) となります。
  • X : X番目の結果を抽出することを意味します。この X thが一致数より大きい場合、何も返されません。デフォルト値が使用されます
いいえ
デフォルト値
一致が見つからない場合に返されるデフォルト値。ノードに値がなく、フラグメント オプションが選択されていない場合にも返されます。

ForEach Controllerで使用できるようにするために、戻り時に次の変数が設定されます。

  • refName - 最初の (または唯一の) 一致に設定します。一致しない場合は、デフォルトに設定します
  • refName_matchNr - 一致数に設定 ( 0の場合もある)
  • refName_n - n = 123など。1番目、2番目、 3番目の一致など に設定します。
注: 次のrefName_n変数はnullに設定されます。たとえば、一致するものが 2 つある場合はrefName_3がnullに設定され、一致しない場合はrefName_1がnullに設定されます。

XPath は、主に XSLT 変換を対象としたクエリ言語です。ただし、構造化データの汎用クエリ言語としても役立ちます。詳細については 、 XPath リファレンスまたはXPath 仕様を参照してください。以下にいくつかの例を示します。

/html/head/タイトル
HTML レスポンスからタイトル要素を抽出します
/本/ページ[2]
本から2ページ目を抽出します
/本/ページ
本からすべてのページを抽出します
//form[@name='countryForm']//select[@name='country']/option[text()='Czech Republic'])/@value
name 属性 ' countryForm 'を持つフォーム内のname 属性 ' country 'を持つ select 要素内のテキスト ' Czech Republic 'と一致する option 要素の value 属性を抽出します
Use Tidy」がオンになっている場合 - 結果の XML ドキュメントは、元の HTML 応答とわずかに異なる場合があります。
  • すべての要素と属性名は小文字に変換されます
  • Tidy は、不適切にネストされた要素を修正しようとします。例 - 元の (間違った) ul/font/liは正しいul/li/fontになります
詳しくはTidyのホームページをご覧ください。

名前空間 Xalan XPath パーサー (JMeter のベースとなる実装) の名前空間の制限に対する回避策として、次のことを行う必要があります
  • 名前空間プレフィックスのマッピングを含む プロパティ ファイルを提供します (たとえば、ファイルの名前がnamespaces.propertiesの場合)。
    prefix1=http\://foo.apache.org
    prefix2=http\://toto.apache.org
    …
    
  • 次のプロパティを使用して 、 user.propertiesファイルでこのファイルを参照します。
    xpath.namespace.config=namespaces.properties

//mynamespace:タグ名
//*[local-name()='tagname' and namespace-uri()='uri-for-namespace']
uri-for-namespace mynamespace
^

JSON JMESPath エクストラクタ

このテスト要素により、ユーザーは JMESPath クエリ言語を使用して、構造化された応答 (XML または (X)HTML) から値を抽出できます。
JSON JMESPath Extractor のコントロール パネルのスクリーンショット
JSON JMESPath Extractor のコントロール パネルのスクリーンショット
XPATH エクストラクタでは、複数の xpath の同時抽出をサポートしていますが、JMES エクストラクタでは、一度に入力できる JMES 式は 1 つだけです。

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
適用先:
これは、サブサンプルを生成できるサンプラー (埋め込みリソースを含む HTTP サンプラー、メール リーダー、またはトランザクション コントローラーによって生成されたサンプルなど) で使用するためのものです。
  • メイン サンプルのみ- メイン サンプルのみに適用されます
  • サブサンプルのみ- サブサンプルのみに適用されます
  • メインサンプルとサブサンプル- 両方に適用されます。
  • 使用する JMeter 変数名- 抽出は名前付き変数の内容に適用されます
はい
作成した変数の名前
結果を格納する JMeter 変数の名前。
はい
JMESPath 式
JMESPath クエリ言語の要素クエリ。一致した結果を返すことができます。
はい
マッチ番号 (ランダムの場合は 0)
JMESPath クエリで多くの結果が得られる場合は、変数として抽出するものを選択できます。
  • 0 : ランダムを意味します
  • -1はすべての結果を抽出することを意味し (デフォルト値)、名前は<変数名> _N ( Nは 1 から結果の数まで) となります。
  • X : X番目の結果を抽出することを意味します。この X thが一致数より大きい場合、何も返されません。デフォルト値が使用されます
いいえ
デフォルト値
一致が見つからない場合に返されるデフォルト値。ノードに値がなく、フラグメント オプションが選択されていない場合にも返されます。

JMESPath は JSON のクエリ言語です。これは、完全な仕様を持つ ABNF 文法で記述されています。これにより、言語構文が正確に定義されます。詳細については、 JMESPath リファレンスを参照してください。JMESPath Exampleにもいくつかの例があります。

^

結果ステータス アクション ハンドラ

このテスト要素により、関連するサンプラーが失敗した場合、ユーザーはスレッドまたはテスト全体を停止できます。
結果ステータス アクション ハンドラのコントロール パネルのスクリーンショット
結果ステータス アクション ハンドラのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
サンプラ エラー後のアクション
サンプル自体が失敗したか、アサーションが失敗したためにサンプラー エラーが発生した場合にどうなるかを決定します。可能な選択肢は次のとおりです。
  • 続行- エラーを無視してテストを続行します
  • 次のスレッド ループを開始- 現在の反復でエラーが発生したサンプラーに続くサンプラーを実行せず、次の反復でループを再開します。
  • スレッドの停止- 現在のスレッドが終了します
  • テストの停止- 現在のサンプルが終了すると、テスト全体が停止します。
  • 今すぐテストを停止 - テスト全体が突然停止します。可能であれば、現在のサンプラーはすべて中断されます。
いいえ
^

BeanShell ポストプロセッサ

BeanShell PreProcessor を使用すると、サンプルを取得した後に任意のコードを適用できます。

BeanShell ポスト プロセッサは、結果データの長さがゼロのサンプルを無視しなくなりました

BeanShell の使用の詳細については、BeanShell の Web サイトを参照してください。

JSR223 PostProcessor + Groovyへの移行は、パフォーマンス、新しい Java 機能のサポート、および BeanShell ライブラリの限定的なメンテナンスのために強く推奨されます。

テスト要素は、ThreadListenerメソッドとTestListenerメソッドをサポートしています。これらは初期化ファイルで定義する必要があります。定義の例 については、ファイルBeanShellListeners.bshrcを参照してください。

BeanShell PostProcessor のコントロール パネルのスクリーンショット
BeanShell PostProcessor のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。名前はスクリプト変数Labelに格納されます
いいえ
各呼び出しの前に bsh.Interpreter をリセットします
このオプションを選択すると、サンプルごとにインタープリターが再作成されます。これは、一部の長時間実行されるスクリプトで必要になる場合があります。詳細については、「ベスト プラクティス - BeanShell スクリプト」を参照してください。
はい
パラメーター
BeanShell スクリプトに渡すパラメーター。パラメータは次の変数に格納されます。
  • パラメータ- パラメータを単一の変数として含む文字列
  • bsh.args - パラメータを含む文字列配列、空白で分割
いいえ
スクリプトファイル
実行する BeanShell スクリプトを含むファイル。ファイル名はスクリプト変数FileNameに格納されます
いいえ
脚本
BeanShell スクリプト。戻り値は無視されます。
はい(スクリプトファイルが提供されていない場合)

次の BeanShell 変数は、スクリプトで使用するために設定されています。

  • log - ( Logger ) - ログファイルへの書き込みに使用できます
  • ctx - ( JMeterContext ) - コンテキストへのアクセスを提供します
  • vars - ( JMeterVariables ) - 変数への読み取り/書き込みアクセスを提供します。
    vars.get(キー);
    vars.put(キー、値);
    vars.putObject("OBJ1",新しいオブジェクト());
  • props - (JMeterProperties - クラス java.util.Properties) - 例props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - 前の SampleResult へのアクセスを提供します
  • data - (バイト [])- 現在のサンプル データへのアクセスを提供します

上記の各変数で使用可能なすべてのメソッドの詳細については、Javadoc を確認してください。

プロパティbeanshell.postprocessor.initが定義されている場合、これは、BeanShell スクリプトで使用するメソッドなどを定義するために使用できる初期化ファイルをロードするために使用されます。

^

JSR223 ポストプロセッサ

JSR223 PostProcessor を使用すると、サンプルを取得した後に JSR223 スクリプト コードを適用できます。

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
言語
使用する JSR223 言語
はい
パラメーター
スクリプトに渡すパラメーター。パラメータは次の変数に格納されます。
  • パラメータ- パラメータを単一の変数として含む文字列
  • args - パラメータを含む文字列配列、空白で分割
いいえ
スクリプトファイル
実行するスクリプトを含むファイル。相対ファイル パスが使用されている場合は、「user.dir」システム プロパティによって参照されるディレクトリからの相対パスになります。
いいえ
スクリプト コンパイルのキャッシュ
使用されている言語がCompilableインターフェースをサポートしている場合、JMeter がスクリプト コンパイルの結果をキャッシュするために使用するテスト プラン全体で一意の文字列(Groovy はこれらの 1 つですが、java、beanshell、および javascript はサポートしていません)。
このオプションをチェックせずに Groovy を使用している場合は、JSR223 Sampler Java System プロパティの注を参照してください。
いいえ
脚本
実行するスクリプト。
はい(スクリプトファイルが提供されていない場合)

スクリプトを呼び出す前に、いくつかの変数が設定されます。これらは JSR223 変数であることに注意してください。つまり、スクリプトで直接使用できます。

  • log - ( Logger ) - ログファイルへの書き込みに使用できます
  • Label - 文字列ラベル
  • FileName - スクリプト ファイル名 (存在する場合)
  • Parameters - パラメータ (文字列として)
  • args - 文字列配列としてのパラメーター (空白で分割)
  • ctx - ( JMeterContext ) - コンテキストへのアクセスを提供します
  • vars - ( JMeterVariables ) - 変数への読み取り/書き込みアクセスを提供します。
    vars.get(キー);
    vars.put(キー、値);
    vars.putObject("OBJ1",新しいオブジェクト());
    vars.getObject("OBJ2");
  • props - (JMeterProperties - クラス java.util.Properties) - 例props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - 前の SampleResult (存在する場合) へのアクセスを提供します
  • sampler - ( Sampler )- 現在のサンプラーへのアクセスを提供します
  • OUT - System.out - 例: OUT.println("message")

上記の各変数で使用可能なすべてのメソッドの詳細については、Javadoc を確認してください。

^

JDBC ポストプロセッサ

JDBC PostProcessor を使用すると、サンプルの実行直後に SQL ステートメントを実行できます。これは、JDBC サンプルが一部のデータを変更し、状態を JDBC サンプル実行前の状態にリセットしたい場合に役立ちます。

リンクされたテスト プランでは、" JDBC PostProcessor " JDBC PostProcessor がストアド プロシージャを呼び出して、PreProcessor によって作成された Price Cut-Off をデータベースから削除します。

JDBC ポストプロセッサー
JDBC ポストプロセッサー
^

JSON エクストラクタ

JSON PostProcessor を使用すると、JSON-PATH 構文を使用して JSON 応答からデータを抽出できます。このポスト プロセッサは、正規表現エクストラクタに非常に似ています。HTTP サンプラーまたは応答を持つ他のサンプラーの子として配置する必要があります。非常に簡単な方法でテキスト コンテンツを抽出できます。 JSON パス構文を参照してください。

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
作成した変数の名前
JSON-PATH 式の結果を含む変数のセミコロン区切りの名前 (JSON-PATH 式の数と一致する必要があります)
はい
JSON パス式
セミコロンで区切られた JSON-PATH 式 (変数の数と一致する必要があります)
はい
デフォルト値
JSON-PATH 式が結果を返さない場合のセミコロン区切りのデフォルト値 (変数の数と一致する必要があります)
いいえ
マッチ番号 (ランダムの場合は 0)
JSON パス クエリで多くの結果が得られる場合は、変数として抽出するものを選択できます。
  • 0 : ランダムを意味します (デフォルト値)
  • -1はすべての結果を抽出することを意味し、<変数名> _N ( Nは 1 から結果の数まで)という名前が付けられます。
  • X : X番目の結果を抽出することを意味します。この X thが一致数より大きい場合、何も返されません。デフォルト値が使用されます
いいえ
連結変数の計算
多くの結果が見つかった場合、プラグインは「,」セパレータを使用してそれらを連結し、 <変数名> _ALLという名前の var に保存します。
いいえ
JSON ポストプロセッサ
JSON ポストプロセッサ
^

境界抽出器

ユーザーが左右の境界を使用してサーバーの応答から値を抽出できるようにします。ポストプロセッサとして、この要素はスコープ内の各サンプル リクエストの後に実行され、境界をテストし、リクエストされた値を抽出し、テンプレート文字列を生成し、結果を指定された変数名に保存します。

Boundary Extractor のコントロール パネルのスクリーンショット
Boundary Extractor のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
適用先:
これは、サブサンプルを生成できるサンプラー (埋め込みリソースを含む HTTP サンプラー、メール リーダー、またはトランザクション コントローラーによって生成されたサンプルなど) で使用するためのものです。
  • メイン サンプルのみ- メイン サンプルのみに適用されます
  • サブサンプルのみ- サブサンプルのみに適用されます
  • メインサンプルとサブサンプル- 両方に適用されます。
  • 使用する JMeter 変数名- アサーションは名前付き変数の内容に適用されます
照合は、すべての適格なサンプルに順番に適用されます。たとえば、メイン サンプルと 3 つのサブサンプルがあり、それぞれに 1 つの一致テストが含まれている場合 (つまり、合計で 4 つの一致)。一致番号 = 3、サブサンプルのみの場合、エクストラクタは 3番目のサブサンプルと一致します。一致番号 = 3、メイン サンプルとサブサンプルの場合、エクストラクタは 2番目のサブサンプルと一致します (最初の一致はメイン サンプルです)。一致番号 = 0または負の場合、すべての適格なサンプルが処理されます。一致数 > 0の場合、十分な数の一致が見つかるとすぐに一致が停止します。
はい
チェックするフィールド
次のフィールドを確認できます。
  • Body - 応答の本文、たとえば Web ページのコンテンツ (ヘッダーを除く)
  • 本文 (エスケープなし) - すべての Html エスケープ コードが置き換えられた応答の本文。Html エスケープはコンテキストに関係なく処理されるため、誤った置換が行われる可能性があることに注意してください。
    このオプションはパフォーマンスに大きく影響するため、絶対に必要な場合にのみ使用し、その影響に注意してください。
  • Body as a Document - Apache Tika を介してさまざまなタイプのドキュメントからテキストを抽出します (結果ツリーの表示ドキュメント ビュー セクションを参照)。
    Body as a Document オプションはパフォーマンスに影響を与える可能性があるため、テストに問題がないことを確認してください。
  • リクエスト ヘッダー- HTTP 以外のサンプルには存在しない場合があります
  • 応答ヘッダー- HTTP 以外のサンプルには存在しない場合があります
  • URL
  • 応答コード- 例: 200
  • 応答メッセージ- 例: OK
ヘッダーは HTTP サンプルに役立ちます。他のサンプル タイプには存在しない場合があります。
はい
作成した変数の名前
結果を格納する JMeter 変数の名前。また、各グループは[refname]_g#として保存されることにも注意してください。[refname]は参照名として入力した文字列、#はグループ番号です。ここで、グループ0は一致全体、グループ1は一致からの一致です。括弧の最初のセットなど
はい
左境界
検索する値の左境界
いいえ
右境界
検索する値の右境界
いいえ
マッチ番号 (ランダムの場合は 0)
使用する一致を示します。境界は複数回一致する場合があります。
  • JMeter がランダムに一致を選択する必要があることを示すには、ゼロの値を使用します。
  • 正の数 N は、n番目の一致を選択することを意味します。
  • 負の数は、 ForEach コントローラーと組み合わせて使用​​されます。以下を参照してください。
はい
デフォルト値
境界が一致しない場合、参照変数はデフォルト値に設定されます。これは、テストのデバッグに特に役立ちます。デフォルトが指定されていない場合、境界が一致しなかったのか、間違った変数が使用されているのかを判断するのは困難です。

ただし、同じ変数を設定する複数のテスト要素がある場合、式が一致しない場合は、変数を変更しないでおくことができます。この場合、デバッグが完了したらデフォルト値を削除します。

いいえ、しかし推奨されます

一致番号が負でない数に設定され、一致が発生した場合、変数は次のように設定されます。

  • refName - 抽出の値

一致するものがない場合、refName変数はデフォルトに設定されます (これがない場合を除く)。

一致数が負の数に設定されている場合、サンプラー データ内のすべての可能な一致が処理されます。変数は次のように設定されます。

  • refName_matchNr - 見つかった一致の数。0になる可能性があります
  • refName_ nn = 123など - テンプレートによって生成された文字列
  • refName_ n _g m、ここでm = 0 , 1 , 2 - マッチnのグループ
  • refName - 常にデフォルト値に設定

この場合、 refName変数は常にデフォルト値に設定され、関連するグループ変数は設定されない ことに注意してください。

左右の境界が両方とも null の場合、スコープで選択されたデータ全体が返されます
^

18.9 その他の機能


テスト計画

テスト計画は、テストの全体的な設定が指定される場所です。

静的変数は、サーバー名など、テスト全体で繰り返される値に対して定義できます。たとえば、変数SERVERをwww.example.comとして定義し、残りのテスト計画でそれを${SERVER}として参照できます。これにより、後で名前を簡単に変更できます。

複数のユーザー定義変数構成要素 の 1 つで同じ変数名が再利用されて いる場合、値はテスト計画の最後の定義に設定されます (上から下に読み取ります)。このような変数は、テストの実行中に変更される可能性があるが、テストの実行中は同じままである項目に使用する必要があります。

テスト計画は、それが定義する変数を参照できないことに注意してください。
テスト計画変数から他の変数を作成する必要がある場合は、ユーザー定義変数テスト要素を使用します。

Functional Testing を選択すると、追加のサンプル情報 (応答データとサンプラー データ) をすべての結果ファイルに保存するよう JMeter に指示します。これにより、テストの実行に必要なリソースが増加し、JMeter のパフォーマンスに悪影響を与える可能性があります。特定のサンプラーだけにさらにデータが必要な場合は、それにリスナーを追加し、必要に応じてフィールドを構成します。

このオプションは、現在そのような情報を保存できない CSV 結果ファイルには影響しません。

また、JMeter にスレッド グループを並列ではなくシリアルに実行するように指示するオプションもあります。

メイン スレッドのシャットダウン後に、tearDown スレッド グループを実行します。選択すると、メイン スレッドの正常なシャットダウン後に、tearDown グループ (存在する場合) が実行されます。テストが強制的に停止された場合、tearDown スレッドは実行されません。

テスト計画は、特定のテスト計画にクラスパス設定を追加する簡単な方法を提供するようになりました。この機能は追加的です。つまり、jar ファイルまたはディレクトリを追加できますが、エントリを削除するには JMeter を再起動する必要があります。

JMeter GUI プラグインは以前に処理されているため、これを使用して追加することはできません。
ただし、JDBC ドライバーなどのユーティリティ jar には役立ちます。jar は、システム クラス ローダーではなく、JMeter ローダーの検索パスにのみ追加されます。

JMeter プロパティは、追加のクラスパスをロードするためのエントリも提供します。jmeter.propertiesで、「 user.classpath」または「plugin_dependency_paths 」を編集して、追加のライブラリを含めます詳細については、 JMeter のクラスパスと JMeter の構成を参照してください。

テスト計画のコントロール パネルのスクリーンショット
テスト計画のコントロール パネルのスクリーンショット
^

スレッドグループ

スレッド グループは、サーバーに対して特定のテスト ケースを実行するユーザーのプールを定義します。スレッド グループ GUI では、シミュレートされるユーザー数 (スレッド数)、ランプアップ時間 (すべてのスレッドを開始するのにかかる時間)、テストの実行回数、およびオプションで開始を制御できます。テストの時間を停止します。

「 tearDown スレッド グループ」および「 setUp スレッドグループ 」も参照してください。

スケジューラを使用すると、JMeter は、ループ数に達するか、期間/終了時間に達するまで、スレッド グループを実行します。条件はサンプル間でのみチェックされることに注意してください。終了条件に達すると、そのスレッドは停止します。JMeter は、応答を待っているサンプラーを中断しないため、終了時間が任意に遅れる場合があります。

スレッド グループのコントロール パネルのスクリーンショット
スレッド グループのコントロール パネルのスクリーンショット

JMeter 3.0 以降では、スレッド グループを選択して右クリックすることで、選択したスレッド グループを実行できます。ポップアップ メニューが表示されます。

スレッド グループの選択を開始するためのポップアップ メニュー
スレッド グループの選択を開始するためのポップアップ メニュー

スレッド グループの選択を実行するための 3 つのオプションがあることに注意してください。
始める
選択したスレッド グループのみを開始します
一時停止なしで開始
タイマーを実行せずに、選択したスレッド グループのみを開始します
検証
検証モードのみを使用して、選択したスレッド グループを開始します。デフォルトでは、スレッド グループが検証モードで実行されます (以下を参照)。
検証モード:このモードでは、1 つのスレッド、1 つの反復、タイマーなし、 起動遅延なしを0に設定し
てスレッド グループを実行することにより、スレッド グループの迅速な検証が可能になります。user.propertiesで設定することにより、いくつかのプロパティで動作を変更できます。
testplan_validation.nb_threads_per_thread_group
スレッド グループの検証に使用するスレッドの数。デフォルトは1
testplan_validation.ignore_timers
プランのスレッド グループを検証するときにタイマーを無視します。デフォルトは1です。
testplan_validation.number_iterations
スレッド グループの検証に使用する反復回数
testplan_validation.tpc_force_100_pct
パーセンテージが 100 % であるかのようにパーセンテージ モードでスループット コントローラーを強制的に実行するかどうか。デフォルトはfalse

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
サンプラ エラー後のアクション
サンプル自体が失敗したか、アサーションが失敗したためにサンプラー エラーが発生した場合にどうなるかを決定します。可能な選択肢は次のとおりです。
  • 続行- エラーを無視してテストを続行します
  • 次のスレッド ループを開始- エラーを無視し、次のループを開始してテストを続行します。
  • スレッドの停止- 現在のスレッドが終了します
  • テストの停止- 現在のサンプルが終了すると、テスト全体が停止します。
  • 今すぐテストを停止 - テスト全体が突然停止します。可能であれば、現在のサンプラーはすべて中断されます。
いいえ
スレッド数
シミュレートするユーザーの数。
はい
ランプアップ期間
JMeter がすべてのスレッドを開始するのにかかる時間。10 個のスレッドがあり、ランプアップ時間が 100 秒の場合、各スレッドは前のスレッドが開始されてから 10 秒後に開始され、合計 100 秒でテストが完全に高速化されます。
最初のスレッドは常に直接開始されるため、 1 つのスレッドを構成した場合、起動時間は事実上ゼロになります。同じ理由で、上記の例の 10 番目のスレッドは、実際には 100 秒ではなく 90 秒後に開始されます。
はい
ループ回数
テスト ケースを実行する回数。または、「無限」を選択して、手動で停止するか、スレッドの有効期間が終了するまでテストを実行することもできます。
はい、無限が選択されていない限り
必要になるまでスレッドの作成を遅らせる
選択した場合、適切な割合のランプアップ時間が経過した場合にのみスレッドが作成されます。これは、1 つのスレッドを実行する時間よりも大幅に長いランプアップ時間を伴うテストに最適です。つまり、後のスレッドが開始する前に、前のスレッドが終了する場所です。
選択されていない場合、テストの開始時にすべてのスレッドが作成されます (その後、適切な割合のランプアップ時間の間一時停止します)。これは元のデフォルトであり、ほとんどのテストでスレッドがアクティブなテストに適しています。
はい
スレッドの有効期間を指定する
選択した場合、スレッド操作時間を指定された境界に制限します
はい
期間 (秒)
スケジューラのチェックボックスが選択されている場合、相対的な終了時間を選択できます。JMeter はこれを使用して終了時間を計算します。
いいえ
起動遅延 (秒)
スケジューラのチェックボックスが選択されている場合、相対的な起動遅延を選択できます。JMeter はこれを使用して開始時間を計算します。
いいえ
^

ワークベンチ

^

SSLマネージャー

SSL マネージャーは、Public Key Infrastructure (PKI) を使用するアプリケーションをテストできるように、クライアント証明書を選択する方法です。適切なシステム プロパティを設定していない場合にのみ必要です。

クライアント証明書認証をテストする場合は、キーストアの構成を参照してください。
クライアント証明書の選択

クライアント証明書には、Java Key Store (JKS) 形式のキー ストア、または Public Key Certificate Standard #12 (PKCS12) ファイルを使用できます。キーに少なくとも 6 文字のパスワードが必要な JSSE ライブラリの機能があります (少なくとも JDK に付属の keytool ユーティリティの場合)。

クライアント証明書を選択するには、メニュー バーから[オプション]  →  [ SSL マネージャー] を選択します。デフォルトで PKCS12 ファイルを検索するファイル ファインダーが表示されます。SSL Manager が PKCS12 ファイルとして認識するには、PKCS12 ファイルに拡張子「.p12 」が必要です。その他のファイルは、平均的な JKS キー ストアのように扱われます。JSSE が正しくインストールされている場合は、パスワードの入力を求められます。この時点では、入力した文字はテキスト ボックスに隠れません。現在の実装では、キーストアのパスワードが、認証するクライアントの秘密鍵のパスワードでもあると想定しています。

または、適切なシステム プロパティを設定できます。system.propertiesファイルを参照してください。

次にテストを実行すると、SSL マネージャーはキー ストアを調べて、使用可能なキーが少なくとも 1 つあるかどうかを確認します。キーが 1 つしかない場合は、SSL Manager がそれを選択します。複数のキーがある場合、現在は最初のキーが選択されます。現在、キーストア内の他のエントリを選択する方法がないため、目的のキーが最初にある必要があります。

注意事項

JDK に同梱されている 5 つの CA 証明書のいずれかによって署名されていない場合は、認証局 (CA) 証明書を正しくインストールする必要があります。これをインストールする 1 つの方法は、CA 証明書を JKS ファイルにインポートし、その JKS ファイルに「jssecacerts」という名前を付けることです。ファイルを JRE の lib/securityフォルダーに配置します。このファイルは、同じディレクトリにある " cacerts " ファイルの前に読み込まれます。「 jssecacerts」ファイルが存在する限り、「 cacerts」にインストールされた証明書は使用されないことに注意してください。これにより、問題が発生する可能性があります。CA 証明書を "CA証明書を「 cacerts" ファイルを使用すると、インストールされているすべての CA 証明書に対して認証を行うことができます。

^

HTTP(S) Test Script Recorder (旧: HTTP Proxy Server )

HTTP(S) Test Script Recorder を使用すると、通常のブラウザで Web アプリケーションを閲覧しているときに、JMeter がアクションを傍受して記録できます。JMeter はテスト サンプル オブジェクトを作成し、テスト計画に直接保存します (作成中にサンプルをインタラクティブに表示できます)。このwiki ページ
を 読んで、JMeter を正しくセットアップしてください。

レコーダーを使用するには、HTTP(S) Test Script Recorder 要素を追加します。テスト計画要素を右クリックして追加メニューを取得します (追加 → 非テスト要素 →  HTTP(S) テスト スクリプト レコーダー )。

レコーダーは、HTTP(S) プロキシ サーバーとして実装されます。すべての HTTP および HTTPS リクエストにプロキシを使用するブラウザを設定する必要があります。

JMeter は他のタイプのリクエスト (FTP など) のプロキシとして使用しないでください。JMeter はそれらを処理できません。

セッションを記録するときは、プライベート ブラウジング モードを使用するのが理想的です。これにより、ブラウザは Cookie を保存せずに起動し、特定の変更が保存されなくなります。たとえば、Firefox では、証明書のオーバーライドを永続的に保存することはできません。

HTTPS の記録と証明書

HTTPS 接続では、証明書を使用してブラウザと Web サーバー間の接続を認証します。HTTPS 経由で接続する場合、サーバーは証明書をブラウザーに提示します。証明書を認証するために、ブラウザーは、組み込みのルート CA の 1 つにリンクされている認証局 (CA) によってサーバー証明書が署名されていることを確認します。

ブラウザーは、証明書が正しいホストまたはドメインのものであること、および証明書が有効で期限切れでないことも確認します。
ブラウザー チェックのいずれかが失敗した場合、接続を許可するかどうかを決定できるユーザーにプロンプ​​トが表示されます。

JMeter は独自の証明書を使用して、ブラウザからの HTTPS 接続をインターセプトできるようにする必要があります。事実上、JMeter はターゲット サーバーのふりをする必要があります。

JMeter は独自の証明書を生成します。これらは、プロパティproxy.cert.validityで定義された有効期間、デフォルトの 7 日間、およびランダムなパスワードで生成されます。JMeter は、Java 8 以降で実行されていることを検出すると、次のプロパティが定義されていない限り、必要に応じて各ターゲット サーバーの証明書を生成します (動的モード)。 proxy.cert.dynamic_keys=false. 動的モードを使用する場合、証明書は正しいホスト名用であり、JMeter によって生成された CA 証明書によって署名されます。デフォルトでは、この CA 証明書はブラウザによって信頼されませんが、信頼できる証明書としてインストールできます。これが完了すると、生成されたサーバー証明書がブラウザによって受け入れられます。これには、埋め込まれた HTTPS リソースでさえ傍受できるという利点があり、新しいサーバーごとにブラウザー チェックを上書きする必要はありません。

ブラウザは埋め込みリソースを要求しません。そのため、以前のバージョンでは、埋め込みリソースは、ブラウザーに既に「認識されている」サーバーに対してのみダウンロードされます。

キーストアが提供されていない場合 (およびプロパティproxy.cert.aliasを定義していない場合)、JMeter は keytool アプリケーションを使用してキーストア エントリを作成する必要があります。JMeter には、さまざまな標準的な場所を調べて keytool が使用可能であることを確認するコードが含まれています。JMeter が keytool アプリケーションを見つけられない場合、エラーが報告されます。必要に応じて、システム プロパティkeytool.directoryを使用して、keytool の場所を JMeter に伝えることができます。これは、ファイルsystem.propertiesで定義する必要があります。

[開始] ボタンが押されると 、JMeter 証明書が生成されます (必要な場合) 。

証明書の生成には時間がかかる場合があり、その間、GUI は応答しなくなります。
この間、カーソルは砂時計に変わります。証明書の生成が完了すると、ルート CA の証明書の詳細を含むポップアップ ダイアログが GUI に表示されます。この証明書は、JMeter によって生成されたホスト証明書を受け入れるためにブラウザによってインストールされる必要があります。詳細については、以下を参照してください。

必要に応じて、JMeter ディレクトリからキーストア ファイルproxyserver.jksを削除することにより、JMeter にキーストア (およびエクスポートされた証明書 - ApacheJMeterTemporaryRootCA[.usr|.crt] ) を強制的に再生成させることができます。

この証明書は、ブラウザーが通常信頼する証明書の 1 つではなく、正しいホストに対するものではありません。
結果として:

  • ブラウザーに、証明書を受け入れるかどうかを尋ねるダイアログが表示されます。例えば:
    1) サーバーの名前 " www.example.com " が証明書の名前と一致しません
       " _ 記録用 JMeter ルート CA (INSTALL IF IT S YOURS) ". 誰かがあなたのことを盗聴しようとしている可能性があります。
    2) " _ JMeter Root CA for recording (INSTALL ONLY IF IT S YOURS) " の証明書は、不明な認証局によって署名されています。
       " _ 記録用 JMeter ルート CA (INSTALL IF IT S YOURS) ". これが有効な証明書であることを確認することはできません。
    
    JMeter プロキシが SSL トラフィックを傍受して記録できるようにするには、証明書を受け入れる必要があります。ただし、この証明書を永続的に受け入れないでください。一時的にのみ受け付けます。ブラウザーは、メイン URL の証明書に対してのみこのダイアログを表示します。ページにロードされたリソース (保護された外部 CDN でホストされている画像、CSS、または JavaScript ファイルなど) に対しては表示しません。そのようなリソースがある場合 (gmail など)、JMeter の証明書を受け入れるために、最初にこれらの他のドメインを手動で参照する必要があります。証明書を登録する必要がある安全なドメインについて は、 jmeter.logを確認してください。
  • ブラウザーがこのドメインの検証済み証明書を既に登録している場合、ブラウザーは JMeter をセキュリティ違反として検出し、ページの読み込みを拒否します。その場合、ブラウザのキーストアから信頼できる証明書を削除する必要があります。

2.10 以降のバージョンの JMeter はこのメソッドを引き続きサポートしており、次のプロパティを定義すると引き続きサポートされます。 proxy.cert.alias 次のプロパティを使用して、使用される証明書を変更できます。

  • proxy.cert.directory - 証明書を見つけるディレクトリ (デフォルト = JMeter bin/ )
  • proxy.cert.file - キーストア ファイルの名前 (デフォルトは " proxyserver.jks ")
  • proxy.cert.keystorepass - キーストアのパスワード (デフォルトの " password ") [JMeter 証明書を使用する場合は無視されます]
  • proxy.cert.keypassword - 証明書キーのパスワード (デフォルトは " password ") [JMeter 証明書を使用する場合は無視されます]
  • proxy.cert.type - 証明書の種類 (デフォルトは " JKS ") [JMeter 証明書を使用する場合は無視されます]
  • proxy.cert.factory - ファクトリ (デフォルト " SunX509 ") [JMeter 証明書を使用する場合は無視されます]
  • proxy.cert.alias - 使用するキーのエイリアス。これが定義されている場合、JMeter は独自の証明書を生成しようとしません。
  • proxy.ssl.protocol - 使用するプロトコル (デフォルトは " SSLv3 ")
ブラウザが現在プロキシを使用している場合 (たとえば、企業のイントラネットがすべての外部要求をプロキシ経由でルーティングしている場合)、 JMeter を起動する前に、コマンドライン オプション-Hおよび-Pを使用して、そのプロキシを使用するように JMeter に指示する必要があります。この設定は、生成されたテスト計画を実行するときにも必要になります。

HTTPS 記録用の JMeter CA 証明書のインストール

前述のように、Java 8 で実行すると、JMeter は各サーバーの証明書を生成できます。これがスムーズに機能するには、JMeter が使用するルート CA 署名証明書がブラウザによって信頼されている必要があります。初めてレコーダを起動すると、必要に応じて証明書が生成されます。ルート CA 証明書は、現在の起動ディレクトリにあるApacheJMeterTemporaryRootCAという名前のファイルにエクスポートされます。証明書が設定されると、JMeter は現在の証明書の詳細を示すダイアログを表示します。この時点で、以下の手順に従って、証明書をブラウザにインポートできます。

ルート CA 証明書が信頼された CA としてインストールされると、ブラウザーはそれによって署名されたすべての証明書を信頼することに注意してください。証明書の有効期限が切れるか、ブラウザから証明書が削除されるまで、証明書が信頼されていることをユーザーに警告しません。そのため、キーストアとパスワードを取得できる人は誰でも、証明書を使用して証明書を生成できます。この証明書は、JMeter ルート CA 証明書を信頼するブラウザーで受け入れられます。このため、キーストアと秘密鍵のパスワードはランダムに生成され、短い有効期間が使用されます。パスワードは、ローカル設定領域に保存されます。信頼できるユーザーのみがキーストアを使用してホストにアクセスできるようにしてください。

Recorder を起動すると表示されるポップアップは、情報ポップアップです。
レコーダー インストール証明書ポップアップ
レコーダー インストール証明書ポップアップ
[OK] をクリックして先に進みます。
Firefox への証明書のインストール

次のオプションを選択します。

  • ツール / オプション
  • 高度/証明書
  • 証明書を表示
  • 当局
  • 輸入 …
  • JMeter 起動ディレクトリを参照し、ファイルApacheJMeterTemporaryRootCA.crtをクリックして、[開く] をクリックします。
  • [表示]をクリックし、証明書の詳細が JMeter テスト スクリプト レコーダーによって表示されるものと一致することを確認します。
  • OK の場合は、[ Web サイトを識別するためにこの CA を信頼する] を選択し、[OK ]を押します。
  • 必要に応じて [ OK ] を押してダイアログを閉じます
Chrome または Internet Explorer への証明書のインストール

Chrome と Internet Explorer はどちらも、証明書に同じトラスト ストアを使用します。

  • JMeter 起動ディレクトリを参照し、ファイルApacheJMeterTemporaryRootCA.crtをクリックして開きます。
  • [詳細] タブをクリックし、証明書の詳細が JMeter テスト スクリプト レコーダーによって表示されるものと一致することを確認します。
  • OK の場合は、[全般] タブに戻り、[証明書のインストール... ] をクリックして、ウィザードのプロンプトに従います。
Opera への証明書のインストール
  • ツール / 設定 / 詳細設定 / セキュリティ
  • 証明書の管理…
  • 「中間」タブを選択し、「インポート…」をクリックします。
  • JMeter 起動ディレクトリを参照し、ファイルApacheJMeterTemporaryRootCA.usrをクリックして開きます。
HTTP(S) Test Script Recorder のコントロール パネルのスクリーンショット
HTTP(S) Test Script Recorder のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
ポート
HTTP(S) テスト スクリプト レコーダーがリッスンするポート。 8888がデフォルトですが、変更できます。
はい
HTTPS ドメイン
HTTPS のドメイン (またはホスト) 名のリスト。これを使用して、記録するすべてのサーバーの証明書を事前に生成します。
例: *.example.com,*.subdomain.example.com
ワイルドカード ドメインは 1 つのレベルにのみ適用されることに注意してください。つまり、abc.subdomain.example.comは* .subdomain.example.comと一致しますが、*.example.com とは一致しません。
いいえ
ターゲット コントローラー
プロキシが生成されたサンプルを保存するコントローラー。デフォルトでは、Recording Controller が検索され、どこにでも保存されます。
はい
グループ化
1 回の「クリック」からのリクエスト (大幅な時間間隔なしで受信したリクエスト) のサンプラーをグループ化するかどうか、および記録でそのグループ化を表す方法:
  • サンプラーをグループ化しない- 記録されたすべてのサンプラーを、グループ化せずに順番に保存します。
  • グループ間にセパレーターを追加- 「 -------------- 」という名前のコントローラーを追加して、グループ間に視覚的な分離を作成します。それ以外の場合、サンプラーはすべて順番に格納されます。
  • 各グループを新しいコントローラーに入れる- グループごとに新しいシンプル コントローラーを作成し、そのグループのすべてのサンプラーをそこに格納します。
  • 各グループの最初のサンプラーのみを保存 - 各グループ最初のリクエストのみが記録されます。これらのサンプラーでは、「Follow Redirects」および「Retrieve All Embedded Resources …」フラグがオンになります。
  • 各グループを新しいトランザクション コントローラーに配置します。グループごとに新しいトランザクション コントローラーを作成し、そのグループのすべてのサンプラーをそこに格納します。
プロパティproxy.pauseは、JMeter が要求を個別の「クリック」として処理するために要求間に必要な最小ギャップを決定します。デフォルトは5000 (ミリ秒)、つまり 5 秒です。グループ化を使用している場合は、クリックの間に必要な間隔を空けてください。
はい
HTTP ヘッダーのキャプチャ
プランにヘッダーを追加する必要がありますか? 指定すると、ヘッダー マネージャーが各 HTTP サンプラーに追加されます。プロキシ サーバーは常に、生成されたヘッダー マネージャーから Cookie ヘッダーと Authorization ヘッダーを削除します。デフォルトでは、If-Modified-SinceヘッダーとIf-None-Matchヘッダーも削除されます。これらは、ブラウザのキャッシュ項目が最新かどうかを判断するために使用されます。記録するときは、通常、すべてのコンテンツをダウンロードする必要があります。削除する追加ヘッダーを変更するには、JMeter プロパティproxy.headers.remove をヘッダーのコンマ区切りリストとして定義します。
はい
アサーションを追加
各サンプラーに空のアサーションを追加しますか?
はい
正規表現マッチング
変数を置換するときに正規表現一致を使用しますか? チェック付き置換の場合、単語境界が使用されます。つまり、単語の一部ではなく、変数の値に一致する単語のみが置き換えられます。単語境界は Perl5 の定義に従い、 \bと同等です。「ユーザー定義変数の置換」に関する段落の詳細については、以下を参照してください。
はい
プレフィックス/トランザクション名
録音中にサンプラー名にプレフィックスを追加します (プレフィックス モード)。または、サンプラー名をユーザーが選択した名前 (トランザクション名) に置き換えます
いいえ
命名スキーム
録音中のサンプラー名の命名方式を選択します。デフォルトはトランザクション名です
いいえ
命名形式
ネーミング スキームとして [フォーマット文字列を使用]が選択されている場合は、フリースタイルのフォーマットを指定できます。トランザクション名、パス、カウンターのプレースホルダーは、#{name}#{path}#{counter}で指定できます。単純な形式は " #{name}-#{counter} " であり、これは番号付きのデフォルトの命名スキームと同等です。より複雑な書式設定には、" #{counter,number,000}: #{name}-#{path} " のように MessageFormat の Java 書式設定を使用できます。この場合、最大 3 つのゼロで満たされたカウンターが出力されます。デフォルトは空の文字列です。
いいえ
カウンター開始値
カウンターを特定の値にリセットするために使用できます。次のサンプルは最初にインクリメントしてから値を使用することに注意してください。最初のサンプラーを1で開始する必要がある場合は、カウンターを0にリセットします。
いいえ
リクエスト後の新しいトランザクションの作成 (ミリ秒)
2 つの別々のグループでそれらを考慮する必要がある 2 つの要求間の非アクティブ時間。
いいえ
タイプ
生成するサンプラーのタイプ (HTTPClient のデフォルトまたは Java)
はい
自動リダイレクト
生成されたサンプラーで自動的にリダイレクトを設定しますか?
はい
リダイレクトに従う
生成されたサンプラーでフォロー リダイレクトを設定しますか?
注: 重要な情報については、以下の「記録とリダイレクト」セクションを参照してください。
はい
キープアライブを使用する
生成されたサンプラーで Use Keep-Alive を設定しますか?
はい
すべての埋め込みリソースを取得する
生成されたサンプラーですべての埋め込みリソースを取得しますか?
はい
コンテンツ タイプ フィルタ
content-type に基づいてリクエストをフィルタリングします。例: " text/html [;charset=utf-8 ] "。フィールドは、content-typeに含まれているかどうかを確認するためにチェックされる正規表現です。[フィールド全体に一致する必要はありません]。最初に包含フィルターがチェックされ、次に除外フィルターがチェックされます。フィルターで除外されたサンプルは保存されません。
注: このフィルタリングは、応答のコンテンツ タイプに適用されます。
いいえ
含めるパターン
サンプリングされた完全な URL に対して照合される正規表現。記録されたリクエストのフィルタリングを許可します。すべてのリクエストが通過しますが、Include / Excludeフィールドの要件を満たすリクエストのみが記録されます。IncludeExcludeの両方を空のままにすると、すべてが記録されます (イメージ、スタイルシートなどが記録されるため、ページごとに数十のサンプルが記録される可能性があります)。
[ Include]フィールドに少なくとも 1 つのエントリがある場合、1 つ以上の[ Include]パターンに一致するリクエストのみが記録されます
.
いいえ
除外するパターン
サンプリングされた URL に対して照合される正規表現。
1 つ以上の除外パターンに一致するリクエストは記録されません
.
いいえ
フィルタリングされたサンプラーを子リスナーに通知する
フィルタリングされたサンプラーを子リスナーに通知する
1 つ以上の除外パターンに一致する応答は子リスナーに配信されません(結果ツリーを表示)
.
いいえ
スタートボタン
プロキシ サーバーを起動します。JMeter は、プロキシ サーバーが起動し、要求を受け取る準備ができると、次のメッセージをコンソールに書き込みます: " Proxy up and running! "。
なし
停止ボタン
プロキシ サーバーを停止します。
なし
再起動ボタン
プロキシ サーバーを停止して再起動します。これは、包含/除外フィルター式を変更/追加/削除する場合に役立ちます。
なし

記録とリダイレクト

記録中、ブラウザーはリダイレクト応答に従い、追加の要求を生成します。プロキシは、元のリクエストとリダイレクトされたリクエストの両方を記録します (除外が構成されている場合)。生成されたサンプルでは、​​デフォルトで [ リダイレクトに従う]が選択されています。

リダイレクトは元のリクエストに依存する場合があるため、最初に記録されたサンプルの繰り返しが常に機能するとは限りません。

JMeter がリプレイ中にリダイレクトに従うように設定されている場合、元のリクエストを発行してから、記録されたリダイレクト リクエストをリプレイします。この重複リプレイを回避するために、JMeter は、サンプルが以前のリダイレクトの結果である場合を検出しようとします。現在の応答がリダイレクトの場合、JMeter はリダイレクト URL を保存します。次のリクエストが受信されると、保存されたリダイレクト URL と比較され、一致する場合、JMeter は生成されたサンプルを無効にします。また、リダイレクト チェーンにコメントを追加します。これは、リダイレクト チェーン内のすべてのリクエストが、介在するリクエストなしで相互に続くことを前提としています。リダイレクト検出を無効にするには、プロパティproxy.redirect.disabling=falseを設定します。

含めるものと除外するもの

包含パターンと除外パターンは正規表現として扱われます (Jakarta ORO を使用)。これらは、各ブラウザー要求のホスト名、ポート (実際または暗黙)、パス、およびクエリ (存在する場合) と照合されます。閲覧している URL が
http://localhost/jmeter/index.html?username=xxxx」の
場合、正規表現は文字列
localhost:80/jmeter/index.html?username=xxxx 」に対してテストされます。 "。したがって、すべての.html
ファイル を含めたい場合 、正規表現は次のようなり ますまたは、クエリ文字列のない html ページのみが必要です。

インクルード パターンがある場合、URLは少なくとも 1 つのパターンに一致する必要があります。一致しない場合は記録されません。除外パターンがある場合、URL はどのパターンにも一致してはなりません。一致しない場合は記録されません。包含と除外を組み合わせて使用​​すると、関心のあるものを記録し、関心のないものをスキップできるはずです。

注: 正規表現によって一致する文字列は、ホスト + パス文字列全体 と同じである必要があります。
したがって、" \.html " はlocalhost:80/index.htmlと一致しません。

バイナリ POST データのキャプチャ

JMeter は、バイナリ POST データをキャプチャできます。バイナリとして扱われるコンテンツ タイプを構成するには、JMeter プロパティproxy.binary.typesを更新します。デフォルト設定は次のとおりです。

# これらのコンテンツ タイプは、リクエストをファイルに保存することで処理されます。
proxy.binary.types=application/x-amf,application/x-java-serialized-object
# ファイルは次のディレクトリに保存されます。
proxy.binary.directory=user.dir
# ファイルは、このファイルの filesuffix で作成されます:
proxy.binary.filesuffix=.binary

タイマーの追加

記録されたスクリプトにプロキシーにタイマーを追加させることもできます。これを行うには、HTTP(S) Test Script Recorder コンポーネント内でタイマーを直接作成します。プロキシは、記録する各サンプルにこのタイマーのコピーを配置するか、グループ化を使用している場合は各グループの最初のサンプルに配置します。このコピーは、そのプロパティで変数${T}の出現をスキャンされ、そのような出現は、記録された前のサンプラーからの時間間隔 (ミリ秒単位) に置き換えられます。

開始する準備ができたら、「開始」を押します。

ブラウザのプロキシ設定を編集して、適切なサーバーとポートを指すようにする必要があります。サーバーは JMeter が実行されているマシンであり、ポート番号は上記のプロキシ コントロール パネルからのものです。

サンプルはどこに記録されますか?

JMeter は、選択したターゲット コントローラに記録されたサンプルを配置します。デフォルトのオプション「 Use Recording Controller 」を選択すると、テスト オブジェクト ツリーで見つかった最初の Recording Controller に保存されます (そのため、記録を開始する前に必ず Recording Controller を追加してください)。

プロキシがサンプルを記録していないように見える場合は、ブラウザが実際にプロキシを使用していないことが原因である可能性があります。これに該当するかどうかを確認するには、プロキシを停止してみてください。それでもブラウザがページをダウンロードする場合は、プロキシ経由でリクエストを送信していません。ブラウザのオプションを再確認してください。同じホストで実行されているサーバーから記録しようとしている場合は、ブラウザが「ローカル アドレスに対してプロキシ サーバーをバイパスする」に設定されていないことを確認してください(この例は IE7 のものですが、他のブラウザにも同様のオプションがあります)。JMeter がhttp://localhost/http://127.0.0.1/などのブラウザ URL を記録しない場合は、 http://myhost/http://192.168など、非ループバック ホスト名または IP アドレスを使用してみてください。 0.2/ .

HTTP リクエストのデフォルトの処理

HTTP(S) テスト スクリプト レコーダーが、サンプルが保存されているコントローラー内で直接、またはその親コン​​トローラー内で直接、有効なHTTP 要求の既定値を検出した場合、記録されたサンプルには、指定した既定値の空のフィールドが含まれます。HTTP(S) Test Script Recorder 内に HTTP Request Defaults 要素を直接配置することで、この動作をさらに制御できます。空白以外の値は、他の HTTP Request Defaults の値をオーバーライドします。詳細については、HTTP(S) テスト スクリプト レコーダーのベスト プラクティスを参照してください。

ユーザー定義変数の置換

同様に、HTTP(S) Test Script Recorder がユーザー定義変数(UDV) を、サンプルが保存されているコントローラー内で直接、またはその親コン​​トローラーのいずれかで直接検出した場合、記録されたサンプルにはそれらの変数の値が出現します。対応する変数に置き換えられます。ここでも、ユーザー定義変数を HTTP(S) テスト スクリプト レコーダー内に直接配置して、置き換える値をオーバーライドできます。詳細について は、テスト スクリプト レコーダーのベスト プラクティスを参照してください。

マッチングでは大文字と小文字が区別されることに注意してください。

変数による置換: デフォルトでは、プロキシ サーバーは UDV 値のすべての出現を探します。たとえば、変数WEBを値wwwで定義すると、文字列wwwはどこでも${WEB}に置き換えられます。これがどこでも発生しないようにするには、「正規表現一致」チェックボックスを設定します。これは、値を正規表現として扱うようにプロキシ サーバーに指示します (ORO が提供する perl5 互換の正規表現マッチャーを使用します)。

「正規表現マッチング」が選択されている場合、すべての変数は \b(および)\bで囲まれた perl 互換の正規表現にコンパイルされます。そうすれば、各一致は単語境界で開始および終了します。

境界文字は、一致するグループの一部ではないことに注意してください。たとえば、n.*はnameと一致します。 You can call me 'name' .

正規表現をこれらの境界マッチャーで囲みたくない場合は、正規表現を括弧で囲む必要があります

変数はランダムな順序でチェックされます。そのため、潜在的な一致が重複しないようにしてください。重複するマッチャーは.* (すべてに一致) とwww ( wwwのみに一致) です。重複しないマッチャーは、a + ( aのシーケンスに一致) およびb+ ( bのシーケンスに一致) です。

文字列全体のみに一致させたい場合は、( ^thus$)のように(^$)で囲みます。通常追加される境界文字は^$の一致を妨げるため、括弧が必要です。

文字列の先頭のみで/imagesと一致させたい場合は、値(^/images)を使用します。Jakarta ORO はゼロ幅の先読みもサポートしているため、/images/…と一致できますが、 (^/images(?=/))を使用して出力 の末尾の/を保持できます。

Jakarta ORO の現在のバージョンは、後読み(?<=…)または(?<!…) をサポートしていないことに注意してください。

重複するマッチャーに注意してください。たとえば、regex という名前の変数の正規表現としての値. * は 、以前に置き換えられた変数と部分的に一致し、 ${{regex}のような結果になりますが 、これはおそらく望ましい結果ではありません。

変数をパターンとして解釈する際に問題がある場合、これらはjmeter.logで報告されるため、UDV が期待どおりに機能しない場合は、必ずこれを確認してください。

テスト サンプルの記録が完了したら、プロキシ サーバーを停止します ( [停止] ボタンをクリックします)。ブラウザのプロキシ設定を忘れずにリセットしてください。ここで、テスト スクリプトの並べ替えと並べ替え、タイマー、リスナー、Cookie マネージャーなどの追加が必要になる場合があります。

サーバーの応答も記録するにはどうすればよいですか?

View Results Treeリスナーを HTTP(S) Test Script Recorder の子として配置するだけで、応答が表示されます。また、応答をファイルに保存する応答をファイルに保存するポスト プロセッサを 追加することもできます。

リクエストとレスポンスの関連付け

プロパティproxy.number.requests=trueを定義すると、 JMeter は各サンプラーと各応答に番号を追加します。除外または包含が使用されている場合、サンプラーよりも多くの応答がある可能性があることに注意してください。除外された応答には、[] で囲まれたラベルが付けられます([23 /favicon.ico] など)。

クッキーマネージャー

テスト対象のサーバーが Cookie を使用している場合は、記録が完了したら、テスト計画にHTTP Cookie Managerを追加することを忘れないでください。記録中、ブラウザーはすべての Cookie を処理しますが、JMeter は、テスト実行中に Cookie を処理するために Cookie Manager を必要とします。JMeter プロキシ サーバーは、記録中にブラウザーから送信されたすべての Cookie を渡しますが、実行ごとに変更される可能性が高いため、それらをテスト計画に保存しません。

承認マネージャー

HTTP(S) Test Script Recorder は「Authentication」ヘッダーを取得し、認証ポリシーを計算しようとします。承認マネージャーがターゲット コントローラーに手動で追加された場合、HTTP(S) テスト スクリプト レコーダーはそれを見つけて承認を追加します (一致するものは削除されます)。それ以外の場合、Authorization Manager は、Authorization オブジェクトを使用してターゲット コントローラーに追加されます。記録後に自動的に計算された値を修正する必要がある場合があります。

ファイルのアップロード

一部のブラウザー (Firefox や Opera など) では、ファイルのアップロード時にファイルの完全な名前が含まれません。これにより、JMeter プロキシ サーバーが失敗する可能性があります。1 つの解決策は、ファイルを JMeter 作業ディレクトリにコピーするか、ファイルを含むディレクトリで JMeter を起動して、アップロードするすべてのファイルが JMeter 作業ディレクトリにあることを確認することです。

JMeter でネイティブに使用できない HTTP ベースの非テキスト プロトコルの記録

デフォルトでは JMeter によって処理されない HTTP プロトコルを記録する必要がある場合があります (カスタム バイナリ プロトコル、Adobe Flex、Microsoft Silverlight など)。JMeter はこれらのプロトコルを記録するためのネイティブ プロキシ実装を提供していませんが、カスタムSamplerCreatorを実装することでこれらのプロトコルを記録できます。この Sampler Creator は、バイナリ形式をJMeter テスト ケースに追加できるHTTPSamplerBaseサブクラスに変換します。詳細については、「JMeter の拡張」を参照してください。

^

HTTP ミラーサーバー

HTTP ミラー サーバーは非常に単純な HTTP サーバーです。送信されたデータを単純にミラーリングします。これは、HTTP リクエストの内容を確認するのに役立ちます。

デフォルトのポート8081を使用します。

HTTP ミラー サーバーのコントロール パネルのスクリーンショット
HTTP ミラー サーバーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
ポート
ミラー サーバーがリッスンするポート。既定値は8081です。
はい
スレッドの最大数
値 > 0に設定すると、リクエストを処理するスレッドの数は構成された数に制限されます。値 ≤ 0に設定すると、 各受信リクエストを処理するために新しいスレッドが作成されます。デフォルトは0
いいえ
最大キュー サイズ
スレッドプールによって実行される前にタスクを保持するために使用されるキューのサイズ。スレッドプールを超えると、着信要求はこのキューに保持され、このキューがいっぱいになると破棄されます。このパラメーターは、スレッドの最大数が0より大きい場合にのみ使用されます。デフォルトは25です
いいえ
次の名前と値のペアを持つ HTTP ヘッダー マネージャーを追加することで、応答をより細かく制御できることに注意してください。

パラメータ

属性
説明
必須
Xスリープ
応答を送信する前にスリープする時間 (ミリ秒)
いいえ
X-SetCookie
応答時に設定される Cookie
いいえ
X-ResponseStatus
応答ステータスについては、HTTP ステータス応答を参照してください。例 200 OK、500 内部サーバー エラーなど。
いいえ
X-レスポンスの長さ
応答のサイズ。これは、要求されたサイズが合計サイズより小さい場合に応答をトリミングします
いいえ
X-SetHeaders
ヘッダーのパイプ区切りリスト。例:
headerA: valueA|headerB: valueBは、 headerAを valueA に設定し、headerBvalueBに設定します
いいえ

次のクエリ パラメータも使用できます。

パラメータ

属性
説明
必須
リダイレクト
指定された場所で 302 (一時的なリダイレクト) を生成します (例: ?redirect=/path )。
いいえ
状態
?status=404 Not Foundなど、デフォルトのステータス リターンをオーバーライドします。
いいえ
v
詳細フラグ。指定されている場合、最初の行やリダイレクト先など、一部の詳細を標準出力に書き込みます。
いいえ
^

プロパティ表示

プロパティ表示には、システムまたは JMeter プロパティの値が表示されます。値は、[値] 列に新しいテキストを入力して変更できます。

プロパティ表示のコントロール パネルのスクリーンショット
プロパティ表示のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
^

サンプラーのデバッグ

Debug Sampler は、すべての JMeter 変数および/またはプロパティの値を含むサンプルを生成します。

値は、[View Results Tree Listener Response Data] ペインで確認できます。

デバッグ サンプラーのコントロール パネルのスクリーンショット
デバッグ サンプラーのコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
JMeter プロパティ
JMeter プロパティを含めますか?
はい
JMeter 変数
JMeter 変数を含めますか?
はい
システムプロパティ
システム プロパティを含めますか?
はい
^

ポストプロセッサのデバッグ

Debug PostProcessor は、以前の Sampler プロパティ、JMeter 変数、プロパティ、および/またはシステム プロパティの詳細を含む subSample を作成します。

値は、[View Results Tree Listener Response Data] ペインで確認できます。

Debug PostProcessor のコントロール パネルのスクリーンショット
Debug PostProcessor のコントロール パネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
いいえ
JMeter プロパティ
JMeter プロパティを表示するかどうか (デフォルトはfalse )。
はい
JMeter 変数
JMeter 変数を表示するかどうか (デフォルトはfalse )。
はい
サンプラーのプロパティ
Sampler プロパティを表示するかどうか (デフォルトはtrue )。
はい
システムプロパティ
システム プロパティを表示するかどうか (デフォルトはfalse )。
はい
^

テストフラグメント

Test Fragment は、 Include ControllerおよびModule Controllerと 組み合わせて使用​​されます。

テストフラグメントのコントロールパネルのスクリーンショット
テストフラグメントのコントロールパネルのスクリーンショット

パラメータ

属性
説明
必須
名前
ツリーに表示されるこの要素のわかりやすい名前。
はい
Module Controllerで Test Fragment を使用する場合は、Test Fragment を無効にして、Test Fragment 自体の実行を回避してください。これは、JMeter 2.13 以降、デフォルトで行われます。
^

スレッドグループの設定 ¶

テスト前のアクションを実行するために利用できる特殊なタイプの ThreadGroup。これらのスレッドの動作は、通常のスレッド グループ要素とまったく同じです。違いは、これらのタイプのスレッドは、テストが通常のスレッド グループの実行に進む前に実行されることです。

setUp スレッド グループのコントロール パネルのスクリーンショット
setUp スレッド グループのコントロール パネルのスクリーンショット
^

ティアダウン スレッド グループ

テスト後のアクションを実行するために利用できる特殊なタイプの ThreadGroup。これらのスレッドの動作は、通常のスレッド グループ要素とまったく同じです。違いは、これらのタイプのスレッドは、テストが通常のスレッド グループの実行を終了した後に実行されることです。

ティアダウン スレッド グループのコントロール パネルのスクリーンショット
TearDown スレッド グループのコントロール パネルのスクリーンショット
デフォルトでは、テストが正常にシャットダウンされている場合は実行されないことに注意してください。この場合に実行する場合は、テスト計画要素のオプション「メイン スレッドのシャットダウン後に TearDown スレッド グループを実行する」をオンにしてください。Test Plan が停止している場合、オプションがチェックされていても、tearDown は実行されません。
図 1 - メイン スレッドのシャットダウン後に、tearDown スレッド グループを実行する
図 1 - メイン スレッドのシャットダウン後に、tearDown スレッド グループを実行する
^
^
Go to top