プロセッサー搭載 JMeter: プリプロセッサとポストプロセッサ

⚡ スマートサマリー

プロセッサー搭載 JMeter サンプラーのリクエストを、実行前または実行後に変更します。プリプロセッサはリクエストデータを準備し、ポストプロセッサは実行します。tracts はテストフローの値と制御を行い、相関関係、動的なパラメータ設定、および信頼性の高いパフォーマンス テスト動作を実現します。

  • ⚙️ コア定義: プロセッサは、要求の前または応答の後に実行される、自身のスコープ内のサンプラーを変更します。
  • 🔍 プリプロセッサの役割: プリプロセッサは変数を設定し、書き換えます URLサンプラーが実行される前に、HTMLリンクを解析し、ユーザーパラメータを適用します。
  • 📤 ポストプロセッサーの役割: ポストプロセッサはレスポンスを読み取ります。trac動的な値を変数に格納し、実行中のテストを続行するかどうかを決定します。
  • 🧩 Extrac選択: 正規表現、境界、JSON、CSS/jQuery、XPathなどtracそれぞれの回答形式に適した回答形式が異なります。
  • 🛑 フロー制御: 結果ステータスアクションハンドラは、サンプラーが失敗した場合に、1つのスレッドまたはテスト全体を停止します。
  • 🧪 実践的なウォークスルー: 無効なパスがサーバーエラーを返した時点で自動的に停止するプランを構築するには、6つのステップが必要です。

プロセッサー搭載 JMeter

プロセッサ Apache JMeter これは、スコープ内のサンプラーを変更するテストプラン要素です。リクエストが送信される直前に自動的に実行されます。 JMeter または応答が到着した直後、これは動的データを処理する主要なメカニズムとなります。 性能テスト.

プロセッサには 2 種類あります。

  1. プリプロセッサ
  2. ポストプロセッサ

スコープはプロセッサがどこまで届くかを決定します。プロセッサは、 テスト計画 スレッドグループは、その下のすべてのサンプラーに適用されますが、単一のサンプラー内にネストされたプロセッサは、そのリクエストのみに影響します。このルールを理解することで、このページのトラブルシューティングセクションで説明されているような設定ミスを防ぐことができます。

プリプロセッサ

プリプロセッサが何らかのアクションを実行する サンプラーリクエストを作成します。

簡単な例を考えてみましょう。 JMeter テスト対象の Web サイトを介して「スパイダー」する、 パーズ リンク (ページ上のすべてのリンクを確認してください) および return HTML。 HTTP リクエストを作成する前に、「HTML リンク パーサー」などのアクションをコントローラーに追加します。

プリプロセッサ

上の図は、コントローラと送信リクエストの間にプリプロセッサが配置されていることを示しています。プリプロセッサは最初に実行されるため、リクエストデータを構築するのに適切な場所です。タイムスタンプの生成、CSV 列からの値の読み取り、セッション識別子の書き換えなどを行います。 URLまたは、各仮想ユーザーに異なる認証情報を割り当てる。

ポストプロセッサ

ポストプロセッサは、サンプラーリクエストを行った後に何らかのアクションを実行します。

簡単な例を考えてみましょう。 JMeter HTTP リクエストをテスト対象の Web サーバー (など) に送信します。 www.google.com) 応答を取得します。あなたが欲しいのは JMeter サーバーからの応答がエラーだった場合にテストを停止します。上記のタスクを実行するには、ポストプロセッサを次のように使用できます。

ポストプロセッサ

2 番目の図に示すように、ポストプロセッサはサンプラーが完了した後に応答を読み取ります。これは相関関係に対する標準的な回答でもあります。サーバーが実行ごとに変化するトークン、セッション ID、または注文番号を返すと、ポストプロセッサはその値をキャプチャします。 JMeter 次のサンプラーが再利用できるように変数として保存します。

プリプロセッサの種類 JMeter

Apache JMeter コンパクトなプリプロセッサセットが付属しています。それぞれのプリプロセッサはサンプラーを異なる方法で準備するため、適切な要素を選択することで、テストプランの可読性と保守性を維持できます。

  • サンプルタイムアウト: リクエストの最大実行時間を定義します。設定された値よりも長く実行されたサンプラーは、失敗としてマークされます。
  • ユーザーパラメーター: 仮想ユーザーごとに変数に特定の値を割り当てることで、各スレッドが独自のデータセットを送信するようにします。
  • HTMLリンクパーサー: テスト対象のページをクロールし、見つけたリンクを解析して、次のHTTPリクエストに渡します。
  • HTTP URL 書き換え修飾子: セッション識別子を挿入します URL アプリケーション向け tracクッキーなしでkセッション。
  • 正規表現のユーザーパラメータ: 以前のレスポンスから正規表現で取得した値を使用して、リクエストパラメータを設定します。
  • JDBCプリプロセッサ: サンプラーの前にSQL文を実行します。これは、データベースレコードのシード設定やリセットに役立ちます。
  • JSR223プリプロセッサ: を実行します Groovy or Java あらゆるカスタム準備ロジックに対応するスクリプトです。従来のBeanShell PreProcessorに代わるもので、負荷がかかった状態でのパフォーマンスが大幅に向上しています。

💡ヒント: JSR223プリプロセッサを優先します Groovy BeanShell上で動作する言語。 Groovy スクリプトはコンパイルされてキャッシュされるため、数千のスレッドが並列実行される場合でも、CPU使用率は大幅に低下します。

ポストプロセッサの種類 JMeter

ポストプロセッサは2つのグループに分類されます。tracレスポンスから値を取り出すメソッドと、サンプラーの結果に反応するハンドラーがあります。以下の表は、各要素に最適なレスポンス形式を示しています。

ポストプロセッサ 最適な 典型的な使用
正規表現の例tracタ テキストでの回答 HTMLやプレーンテキストからトークンやIDを取得する
境界例tracタ テキストでの回答 正規表現全体ではなく、左右の境界を使用して値をキャプチャする
JSONの例tracタ JSONレスポンス RESTペイロードからフィールドを読み取る APIテスト
CSS/jQueryの例tracタ HTMLレスポンス CSSセレクタによる要素の選択
XPath の例tracタ XMLおよびXHTMLレスポンス 構造化されたドキュメントツリーのナビゲーション
JDBCポストプロセッサ データベースの結果 リクエスト後に行を検証またはクリーンアップする
JSR223 ポストプロセッサ 何らかの回答 カスタムスクリプトによる解析とアサーション
結果ステータスアクションハンドラ 何らかの回答 Force Stopping サンプラーが失敗した場合、スレッドまたはテスト全体が停止する。

境界Extracトーアが到着しました JMeter 4.0 は、値のすぐ左と右のテキストのみを要求するため、多くの場合、最も高速な書き込みオプションです。正規表現 Extracレスポンスごとに周囲のマークアップが異なる場合、torの方がより柔軟な選択肢となる。

プリプロセッサとポストプロセッサの違い

どちらの要素も同じスコープ規則を共有していますが、解決する問題は正反対です。以下の比較表は、具体的な例題の前に、その違いをまとめたものです。

プリプロセッサ ポストプロセッサ
実行時間 サンプラーがリクエストを送信する前に実行されます サンプラーが応答を受け取った後に実行されます。
主な目的 リクエストデータを準備および変更する 応答データを読み取り、それに応じて反応する
典型的な要素 ユーザーパラメータ、HTMLリンクパーサー、JSR223プリプロセッサ 正規表現の例tractor、JSON Extractor、結果ステータスアクションハンドラー
フローへの影響 テストを停止することはできません。リクエストの形状を変更することのみ可能です。 スレッドまたはテスト実行全体を停止できます
共通の目標 パラメータ化 相関関係とエラー処理

実際には、この2つはペアで動作します。PostProcessorはログイン応答からセッショントークンを取得し、次のリクエストのPreProcessorは呼び出し前にそのトークンを挿入します。以下の例は、このパターンのPostProcessor側の動作を示しています。

ポストプロセッサの例

このチュートリアルでは、ポストプロセッサの使用方法を段階的に説明します。 JMeter。簡単なテスト スクリプトから始めましょう。

  1. JMeter テスト対象の Web サーバーに HTTP リクエストを送信します www.google.com.
  2. JMeter から応答を受け取ります Google サーバー。
  3. サーバー応答が エラー, JMeter 意志 stop テスト。
  4. サーバー応答の場合 OK (エラーなし)、 JMeter 意志 続ける テスト。

ここにある ロードマップ この例の:

ポストプロセッサの例

前提条件:

We 再利用 記事のステップ 1 とステップ 2 JMeter 性能試験。 場合 JMeter まだインストールされていないので、 JMeter インストールガイド 最初。

ステップ 1) スレッドグループを追加する

上の右クリック テスト計画 新しいスレッド グループを追加します。 追加 -> スレッド (ユーザー) -> スレッドグループ

ただし、スレッド グループ コントロール パネルで、次のように [スレッド プロパティ] を入力します。

スレッドグループの追加

この設定により、 JMeter 作ります 10 ユーザーからのリクエスト http://www.google.com 10 回。

ステップ 2) 追加 JMeter 要素は

  • HTTPリクエストのデフォルトを追加
  • HTTPリクエストを追加

私たちはまだ作っています JMeter リクエストを送信 http://www.google.com 〜へ Google サーバー。

ステップ 3) ポストプロセッサ要素を追加する

右クリック スレッドグループ -> 追加 -> ポストプロセッサ -> 結果ステータスアクションハンドラ

結果ステータスアクションハンドラ ユーザーリクエストが失敗した場合に、ユーザーがスレッドまたはテスト全体を停止できるようにします。

ポストプロセッサ要素の追加

[結果ステータス アクション ハンドル] ペインで、 今すぐテストを停止。この選択により、次の場合にテストが停止します。 JMeter サーバーの応答からエラーを取得します。

ポストプロセッサ要素の追加

ステップ 4) HTTP リクエストを構成する

HTTPリクエストパネルを開きます。 入力 「abc」 パスフィールドに入力します。

HTTPリクエストを構成する

入るとき 「abc」 道に向かって、 JMeter を作成します URL 要求する Google サーバー: http://www.google.com/abc。 URL 存在しません Google サーバーです。 間違った URL リクエストなので Google サーバーはエラーを返します。

ステップ 5) ビュー結果ツリーを追加する

右クリック スレッドグループ -> 追加 -> リスナー -> 結果ツリーの表示

ビュー結果ツリーの追加

ステップ 6) テストの実行

「View Result Tree」を選択し、メニューバーの「Run」ボタンを押します。 が表示されます。 エラー からの返答 Google サーバーが停止し、テストが終了します 外に 100 スレッドが完了しました。

テストを実行する

ステップ 4 に戻り、HTTP リクエスト ペインを開き、「」と入力します。カレンダー” をペインに追加します。させる JMeter 作ります URL 要求 https://calendar.google.com/calendar/u/0/r から Google サーバー。これは 正しい URL リクエストなので Google サーバーはOK(エラーなし)を返します。

テストを実行する

「View Result Tree」を選択し、メニューバーの「Run」ボタンを押します。 が表示されます。 OK からの返答 Google サーバーはテストを開始し、100個のスレッドすべてが完了するまでテストは継続されます。

テストを実行する

追加 アサーション 結果ステータスアクションハンドラと併用することでチェックがより厳格になります。なぜなら、HTTP 200を返したが間違ったコンテンツを配信したサンプラーの場合、アサーションが失敗する可能性があるからです。

トラブルシューティング

上記のシナリオの実行中に問題が発生した場合は、次の操作を行ってください。

  1. プロキシ経由でインターネットに接続しているかどうかを確認してください。 「はい」の場合は、プロキシを削除します。
  2. Jmeterの新しいインスタンスを開く
  3. Video Cloud Studioで ProcessorTestPlan.jmx Jmeterで
  4. Double- スレッドグループをクリック -> 結果ツリーの表示
  5. テストを実行する

ポストプロセッサが何も動作しないように見える場合は、まずその位置を確認してください。対象とするサンプラーのスコープ外に配置されたポストプロセッサは決して実行されず、これが空のエクスポートの最も一般的な原因です。tracted変数。関連要素としては、 コントローラ (NAIST) と 分散テスト 同じスコープロジックに従う。

よくあるご質問

プリプロセッサは、リクエストが送信される前にその内容を変更します。タイマーは、定義された時間だけスレッドを一時停止します。どちらもサンプラーの前に実行されますが、タイマーはリクエストデータを変更することはありません。

extractor は値を JMeter 定義した変数名。同じスレッド内の後続のサンプラーは、パス、ヘッダー、またはリクエストボディ内で、${variableName}構文を使用してその変数名を参照します。

はい。現在、複数のAIアシスタントが録音された応答を読み取り、相関関係を示す正規表現または境界ペアを提案するようになっています。ただし、AIはどの値が実際に動的なのかを判断できないため、提案内容の検証は依然として必要です。

はい。AIアシスタントは生の応答をexと比較します。tractor 表現と esca の不一致を指摘するping、 グループpingまたはスコープ。ロード実行で信頼する前に、結果ツリーの表示内で修正を確認してください。

プロセッサは、そのスコープ内でサンプラーが実行されるたびに一度実行されます。10個のスレッドでping 5回実行されると、そのサンプラーに接続されたプロセッサが50回実行され、各スレッドは独自の変数値を保持します。