技術共有

プリプロセッサの正規表現ユーザーパラメータに関する簡単な説明

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

プリプロセッサの正規表現ユーザーパラメータに関する簡単な説明

正規表現ユーザーパラメータ(RegEx User Parameters)は、ユーザーが正規表現に基づいて応答データから値を抽出して適用し、それらの値をパラメータとして後続のパラメータに渡すことを可能にするプリプロセッサ(Pre-Processor)です。HTTPリクエストまたは他の場所が必要です。この機能は、動的コンテンツ、セッション ID、トークンなどを処理するための柔軟性が高く、自動テスト スクリプトを実装するための重要なコンポーネントです。

使用するシーン

  1. 動的パラメータ処理: ターゲット システムが各リクエストで異なる動的パラメータ (セッション ID、タイムスタンプなど) を生成する場合、後続のパラメータを抽出し、これらのパラメータを使用して後続のリクエストを続行する必要があります。
  2. テスト データのパーソナライゼーション: 後続のプロファイル クエリ リクエストのログイン応答からユーザー ID を抽出するなど、応答の内容に基づいて後続のリクエストのパラメータをパーソナライズします。
  3. データの反復: 応答に複数の一致セットが含まれている場合、抽出をループして抽出を複数のリクエストに適用するようにプロセッサを構成でき、テスト リストや検索結果ページに適しています。

設定手順

  1. 正規表現ユーザーパラメータを追加します。
    ○ JMeter のワークベンチまたはテスト計画で、パラメータ化する必要がある HTTP リクエストまたはその他のサンプラーを選択します。
    ○ 右クリックして、「追加」>「プリプロセッサ」>「正規表現ユーザーパラメータ」を選択します。
  2. 設定パラメータ:
    ○ 正規表現参照名: 正規表現エクストラクター内の変数名は、正規表現と一致している必要があります。
    ○ パラメータ名の正規表現グループ番号: 次の例で詳しく説明するパラメータ名のグループ番号。
    ○ パラメータ値の正規表現グループ番号: 次の例で詳しく説明する、パラメータ名グループの対応する値。

SpringBoot を使用して次のインターフェイス コードを記述します。

 @PostMapping(value = "/login",produces = "application/json;charset=UTF-8")
    public String authenticate(@RequestBody JSONObject request) {

        String validUsername = "admin";
        String validPassword = "password";
        String response = "{"total":2,"data":[{"id":123,"name":"John Doe","email":"[email protected]","phone":"123-456-7890","address":{"street":"123 Main St","city":"New York","state":"NY","zip":"10001"},"interests":["sports","music","travel"]},{"id":456,"name":"Jane Smith","email":"[email protected]","phone":"987-654-3210","address":{"street":"456 Elm St","city":"Los Angeles","state":"CA","zip":"90001"},"interests":["reading","cooking","hiking"]}]}";


        if (request.getString("username").equals(validUsername) && request.getString("password").equals(validPassword)) {
            return response;
        } else {
            return response;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

次に、次のスクリプトを書きます
ここに画像の説明を挿入します
スレッドグループ: デフォルトのまま
HTTP リクエスト 1: プロトコル http、サーバー名または IP127.0.0.1、ポート番号 8091、メソッド POST、パス/ログイン、コンテンツ エンコード utf-8、メッセージ本文データ

{
    "username": "admin",
    "password": "password"
    }
  • 1
  • 2
  • 3
  • 4

正規表現の抽出器:设置的参数为引用名称var,正则表达式"id"😦.?)、"名前":"(。?)"、"email" (サンプル コードの内容からわかります)、目的は ID と名前を抽出することです。一致する番号は -1 に設定され、デフォルト値は NotFound です。
この時点で、まず HTTP リクエスト 2 と正規表現ユーザー パラメータを無効にしてから、スクリプトを実行して結果ツリーのデバッグ サンプラーを表示できます。応答データの応答本文に次の結果が表示されます。

JMeter変数:
JMeterThread.last_sample_ok=false
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@4fa1cf1
START.HMS=165132
START.MS=1720515092259
START.YMD=20240709
テスト開始.MS=1720578466746
_jm__threadgroup__idx=0
_jmeter.U_T
=スレッドグループ1-1
var=見つかりません
var_1=
var_1_g=2
var_1_g0=“id”:123,“name”:“John Doe”,“email”
var_1_g1=123
var_1_g2=ジョン・ドゥ
var_2=
var_2_g=2
var_2_g0=“id”:456,“name”:“ジェーン・スミス”,“email”
var_2_g1=456
var_2_g2=ジェーン・スミス
var_matchNr=2

上記の内容から、対応する正規表現によって抽出された var 変数の値を確認できます。この時点で、正規表現ユーザー パラメーター プリプロセッサの適用を引き続き検証し、他のコンポーネント パラメーターを設定し続けることができます。
HTTP リクエスト 2: プロトコル http、サーバー名または IP127.0.0.1、ポート番号 8091、メソッド POST、パス/ログイン、コンテンツ エンコード utf-8、次に 2 つのパラメーターをパラメーターに追加し、それぞれ名前 123、456 を入力します。今は使わないでください 具体的な意味はともかく、まずは試してみましょう。
正規表現ユーザーパラメータ: 正規表現の参照名は var に設定され、ここでのパラメータ名は上記の正規表現のパラメータ名と一致する必要があります。パラメータ名は正規表現グループ番号が 1 に設定され、パラメータ値は正規表現グループ番号が設定されます2 に、なぜこのように設定するのですか?このように理解できます。HTTP リクエスト 2 で 123 と 456 を設定しました。パラメータ名の正規表現グループ番号を 1 に設定すると、var パラメータに var_1_g1 と var_2_g1 のパラメータが取られると理解できます。 HTTP リクエスト 2 でパラメータがここのパラメータと一致したら、パラメータとデータの関係に対応させて、パラメータ値の正規表現グループ番号を 2 に設定する道を開きます。パラメータ値がいつ設定されるかがよくわかります。正規表現グループ番号を 2 に設定すると、取得されるパラメータは var_1_g2 と var_2_g2 になります。
次のステップでは、結果ツリーで HTTP リクエスト 2 のリクエスト本文のデータを表示する結果を確認します。しかし、必要なものを確認しただけなので問題ありません。結果は関係ありません。

POST http://127.0.0.1:8091/ログイン
POSTデータ:
123=ジョン+ドウ&456=ジェーン+スミス
[クッキーなし]

上記のPOSTデータから、該当するデータがリクエストに反映されていることがわかります。

予防

● スコープ: 正規表現ユーザー パラメーターは、次の HTTP リクエストまたはサンプラーにのみ有効です。グローバルに適用する必要がある場合は、変数と組み合わせて「正規表現エクストラクター」を使用することを検討してください。
● デバッグ: 「結果ツリーの表示」リスナーを使用して正規表現の一致をチェックし、データが正しく抽出されていることを確認します。

要約する

正規表現ユーザー パラメータは JMeter の強力な機能であり、動的データの処理を簡素化し、テスト スクリプトの柔軟性と自動化を向上させます。この機能を適切に構成して利用すると、複雑なシステムのパフォーマンス テストのニーズを効果的に処理できます。