[JMeter] 4 つのパラメーター化された実装メソッドとは何ですか?

  1 パラメトリック解釈

パラメータ化とは何ですか? 文字通り、スクリプトにハード的にデータを記述するのではなく、事前にデータ (広義には特定のデータ値またはデータ生成ルール) を準備し、実行時に準備されたデータから値を取得することです。スクリプトが実行されます。

パラメータ化: 自動テスト スクリプトの一般的な手法です。スクリプト内の一部の入力をパラメータで置き換えることができます。たとえば、ログイン中に GET/POST リクエストによってパラメータが渡されるシナリオでは、パラメータの値の範囲を指定できます。スクリプトの実行時とルール。スクリプトの実行時に、必要に応じて異なるパラメーター値が入力として選択されるこの方法はデータ駆動テスト (Data Driven Test) と呼ばれ、パラメーターの値の範囲はデータ プール (Data Pool) と呼ばれます。

JMeter はさまざまなパラメータ化メソッドを提供しており、次の 4 つが一般的に使用されます。

該当シーン

CSV データセット構成

通常、パラメータ化を指します。データはファイルに保存され、パラメータ化された値の範囲が広く、柔軟性が高い

ユーザーパラメータ

パラメータ値の範囲が狭い場合に適用可能

関数ヘルパー

_Random およびその他の関数。乱数とランダム文字列を生成してパラメータ化を実現します。

ユーザー定義変数

ユーザー定義変数、グローバル変数の設定に関する詳細

2 パラメトリック実装

2.1 CSV データセット構成

JMeter でのパラメータ化というと、デフォルトでは CSV Data Set Config (以下、CSV) を思い浮かべますが、CSV はファイル内のデータを読み取り、JMeter スクリプトで参照できる変数を生成してパラメータ化を実現します。詳しく見てみましょう。

CSV入門

スレッド グループを右クリック –> 追加 –> 構成コンポーネント –> CSV データ セット構成を選択して CSV を作成します。インターフェイスは次のようになります。

パラメータについては、次のように詳しく説明します。

パラメータ

説明

しなければならない

名前

スクリプト内に表示されるこのコンポーネントのわかりやすい名前

はい

ファイル名

ファイル名。読み取るファイルの名前。絶対パスまたは相対パス(bin ディレクトリからの相対パス)を記述できますが、ファイル名を直接記述する場合は、ファイルは bin ディレクトリに配置されます。分散テストの場合、ホストとリモート マシンの対応するディレクトリに同じ CSV ファイルが存在する必要があります。

はい

ファイルエンコーディング

ファイルのエンコーディング。ファイルを読み取るときのエンコード形式。入力されていない場合は、オペレーティング システムのエンコード形式が使用されます。

いいえ

変数名

変数名。複数の変数名は区切り文字で区切る必要があります。この項目が空の場合、ファイルの最初の行が読み取られ、列名のリストとして解析されます。

いいえ

最初の行を無視する

一行目は無視されるのでしょうか?CSV ファイルにヘッダーがない場合は false を選択します

はい

デリミタ

デリミタ。データ行を複数の変数に区切ります。デフォルトはカンマで、「\t」も使用できます。データ行が変数名で定義された変数よりも少ない値で区切られている場合、これらの変数は以前の値 (存在する場合) を保持します。

はい

引用されたデータを許可しますか?

変数に二重引用符は使用できますか? 変数は、許可されている場合は二重引用符で囲むことができ、これらの変数名には区切り文字を含めることができます。

いいえ

EOF でリサイクルしますか?

ファイルの終わりの文字が見つかったときに再度ループしますか? デフォルトはtrueです

はい

EOF でスレッドを停止しますか?

ファイルの終わり文字に遭遇するとスレッドは停止しますか? デフォルトはtrueです

はい

EOF でリサイクルしますか?

Recycle on EOF が False の場合、スレッドを停止します。 Recycle on EOF が True の場合、この項目は無意味で、デフォルトは false です

はい

共有モード

スレッド共有モード。1. すべてのスレッド (デフォルト): スレッド グループ内で、各スレッド (ユーザー) は一意のシーケンスで値を取得します; 2. 現在のスレッド: スレッド グループ内で、各スレッド (ユーザー) は順番に値を取得します; 3 . スレッド グループは独立していますが、各スレッド グループ内の各スレッド (ユーザー) は固有の順序で値を受け取ります。

はい

強調する必要があるのは、Sharing modeこれがスレッド共有モードであるということです。スレッド共有モードは、複数のスレッドがファイル データの値を取得する順序モー​​ドを指します。JMeter には 3 つのモードがあります。

  1. All threads: すべてのスレッド。スクリプトに複数のスレッド グループがある場合、このモードでは、各スレッド グループ内のすべてのスレッドも一意の順序で値を取得する必要があります。たとえば、スクリプトには 2 つのスレッド グループがあり、それぞれに 2 つのスレッドがあり、ファイルには 5 行のデータがあります。スクリプトの実行中は、次の図に示すように値を繰り返し取得します。

  1. Current thread group: 現在のスレッド グループ。各スレッドグループは独立しており、スレッドグループ内のスレッド順序は一意の値を持ちます。

  1. 現在のスレッド: 現在のスレッド。このモードでは、各スレッドは独立しており、連続して一意の値になります。

CSVインスタンス

例を見てみましょう。まず、 bin ディレクトリにuserInfo.txt ファイルがあり、その内容は次のとおりです。

  • ファイル名: ファイルは bin ディレクトリにあり、相対ディレクトリを使用します。
  • 変数名: 2 つのデータ列は、それぞれ mobile とpassword の 2 つの変数に属します。
  • 区切り文字: カンマで区切る

HTTP リクエストで CSV 生成の変数を参照する方法は${变量名}次のとおりです。

スクリプトを実行して、結果のツリーを確認します。

ご覧のとおり、ファイル内のデータはスクリプトによって正常に参照されています。CSV を使用した JMeter のパラメータ化は非常に簡単です。

予防

CSV の使用に関する最も一般的な問題の 1 つは、ファイル パスが正しくないことです。この種の問題が発生した場合、スクリプトの実行時に明確なプロンプトが表示されないため、多くの人は問題が発生した後非常に混乱し、問題がどこにあるのか分からなくなります。実際、注意深く観察すると、右上隅の黄色の三角形の数字が増加していることがわかります。この領域をクリックしてログを開くと、対応するエラーがログに記録されます。これは、パラメータ化が正しく行われていないことを意味しますFile userInfo2.txt must exist and be readable。ファイルが存在しないか、パスに到達できません。

2.2 ユーザーパラメータ

ユーザーパラメータ、つまりユーザーパラメータもパラメータ化できます。

作成方法: HTTP リクエストを右クリック –> 追加 –> プリプロセッサ (プリプロセッサ) –> ユーザーパラメータ。

[変数の追加] でモバイルとパスワードの 2 つの変数を追加し、[ユーザーの追加] で 3 セットのデータを追加します。

HTTP リクエストでパラメータ化されたデータを参照します。

スクリプトを実行すると、設定したデータが正常に参照されます。

この方法は比較的単純ですが、データ範囲は限られており、適用できるシナリオはほとんどありません。さらに、各スレッドは常にデータのセットを使用します。たとえば、4 つのスレッドが同時に設定されている場合、スレッド サイクルの数に関係なく、スレッド 1 は user_1 のデータを使用し、スレッド 2 は user_2 のデータを使用し、スレッド 3 は user_3 のデータを使用し、スレッド 4 は user_1 のデータを使用します。二流。

2.3 ユーザー定義変数

ユーザー定義変数によりリクエストパラメータのパラメータ化も実現できます。

作成方法:スレッドグループを右クリック→configure要素(config要素)→ユーザー定義変数。

上に示したように、使用方法も非常に簡単で、変数名と対応する値を追加するだけです。参照変数は以前と同じ方法で使用されます${mobile}

[ユーザー定義変数] は通常、HTTP リクエストをパラメータ化するために使用されるのではなく、パラメータ化されたファイル パス、ホスト、URL などのグローバル変数を定義するために使用されます。

[ユーザー定義変数]を[スレッドグループ]に作成した場合はスレッドグループ内で有効になり、[テスト計画]で作成した場合はすべてのスレッドグループに有効になります。

2.4 ランダム

関数ヘルパーの Random 関数、

作成方法: [ツール] –> [関数アシスタント] ダイアログ –> 関数の選択 –> [_Random]:

上の図では、次の式が生成されています。${__Random(8000,9000,)}この式を使用して、次の図の価格変数など、パラメータ化したい変数値を置き換えます。

スクリプトを実行し、結果ツリーを確認すると、その効果がわかります。

この方法は、価格や数量など、一定の間隔で値が不規則でランダムな変数のパラメータ化には適していますが、携帯電話番号などの強いルールを持つ変数のパラメータ化には適していません。

テストを受けている友達が参加してコミュニケーションをとることができ、グループは学習資料や面接の質問、プロジェクトの履歴書などを大量にまとめています。

おすすめ

転載: blog.csdn.net/xiao1542/article/details/131754900