サーチ…


前書き

パラメータ化は、同じテストスクリプト内の異なるユーザ用に異なるデータセットを作成することです。たとえば、同じスクリプト内の異なる資格情報を持つ複数のユーザーを実行します。これにより、パフォーマンステスト作成の主要な側面の1つになります。

外部ファイルを使用したパラメータ化

パフォーマンススクリプトをパラメータ化する一般的な方法の1つは、CSVファイルを使用することです。 CSV入力ファイルの使用例として、ログインプロセスがあります。異なるユーザー間でアプリケーションをテストする場合は、ユーザーの資格情報のリストを提供する必要があります。

1人の特定のユーザーに対して動作するログイン要求があるとします。 ここに画像の説明を入力

外部のCSVファイルを使用し、異なるユーザー間でスクリプトを実行することで、その要求を簡単にパラメータ化することができます。 CSVパラメータ設定を追加するには:

ログイン要求を右クリック - >追加 - >設定要素 - > CSVデータセット設定

ここに画像の説明を入力

「CSVデータセット設定」パラメータの簡単な説明:

  • 名前 - JMeterツリーで使用される要素名
  • Filename - 入力ファイルの名前。相対ファイル名は、アクティブなテスト計画のパスに基づいて解決されます。絶対ファイル名もサポートされています
  • ファイルエンコーディング - 入力ファイルのエンコーディング(プラットフォームのデフォルトでない場合)
  • 変数名 - 解析された値のコンテナとして使用される分離された変数名のリスト。空の場合、ファイルの最初の行は変数名のリストとして解釈されます
  • デリミタ - 解析された値を入力ファイルから分割するために使用されるデリミタ
  • 引用されたデータを許可しますか? - 二重引用符を無視して、そのような要素に区切り文字が含まれるようにする場合はtrueです。
  • EOFでリサイクル? - ファイルテスト計画がファイルに対して複数回反復する必要がある場合はtrueです。 JMeterにファイルの先頭にカーソルを移動するよう指示します
  • EOFのスレッドを停止しますか? - CDCファイルに対するループ反復の場合はfalse、ファイル全体を読み取った後にスレッドを停止したい場合はtrue
  • 共有モード:
    • すべてのスレッド - ファイルはすべての仮想ユーザー間で共有されます(デフォルト)
    • 現在のスレッドグループ - スレッドグループごとに1回ファイルが開きます
    • 現在のスレッド - 各ファイルはスレッドごとに別々に開きます
    • 識別子 - 同じ識別子を共有するすべてのスレッドも同じファイルを共有する

名前とパスワードの異なるユーザーを含むcsvファイルを作成しましょう。 ここに画像の説明を入力

このファイルをCSVデータセットの設定で使用できるようになりました。私たちの場合、 "Filename"と "Variables Names"の設定値を追加すれば十分です: ここに画像の説明を入力

最後に、CSV変数を使用してログインリクエストをパラメータ化する必要があります。これは、以下のように、CSVデータセット構成の「変数名」構成フィールドから適切な変数を初期値に置き換えることによって行うことができます。 ここに画像の説明を入力テストスクリプトを実行すると、JMeterはこれらの変数を 'TestUsers.csv'ファイルの値に置き換えます。各JMeterの仮想ユーザーは、次のcsvファイルラインから資格情報を受け取ります。

最初のユーザーによるログイン要求:

ここに画像の説明を入力

第2のユーザによるログイン要求: ここに画像の説明を入力

データベースを使用したパラメータ化

パフォーマンススクリプトをパラメータ化する別の方法は、JDBCを使用してデータベースデータを使用することです。 JDBCは、クライアントがデータベースにアクセスする方法を定義するアプリケーションプログラミングインターフェイスです。

まず、データベースにJDBCドライバをダウンロードします(データベースベンダーを参照)。たとえば、mysqlドライバはここにあります。次に、以下のフォームを使用してテスト計画に.jarファイルを追加して追加することができます。

ここに画像の説明を入力

しかし、libフォルダにJarファイルを追加し、JMeterを再起動する方が良いでしょう。

その後、 'JDBC Connection Configuration'要素を使用してデータベース接続を設定します。このように: スレッドグループ - >追加 - >構成要素 - > JDBC接続構成を右クリックします。

ここに画像の説明を入力

'JDBC Connection Configuration'パラメータ:

  • 名前 - スレッドグループツリーに表示される接続設定の名前
  • Variable Name - db接続の一意の識別子として使用される名前です(複数の接続を使用でき、それぞれ異なる名前に結び付けられます)
  • 最大接続数 - 接続プールで許可される接続の最大数。 0の場合、各スレッドは1つの接続を持つ独自のプールを取得します
  • Max Wait(ms) - db接続中に指定されたタイムアウトを超えた場合にプールがエラーをスローします。
  • エビクション実行間の時間(ミリ秒) - dbプールから未使用の接続を排除するスレッドの実行の間に一時停止するミリ秒数。
  • Auto Commit - 関連するdb接続の自動コミットを有効にする場合はyes
  • テスト中アイドル - 有効な要求が検出される前に、アイドル状態の接続をチェックします。詳細:BasicDataSource.html#getTestWhileIdle
  • Soft Min Evictable Idle Time(ms) - 指定された接続が退去する前にDBプール内でアイドル状態になる可能性のある期間。詳細:BasicDataSource.html#getSoftMinEvictableIdleTimeMillis
  • Validation Query - データベースがまだ応答しているかどうかを確認するために使用されるhealthcheckクエリ
  • データベースURL - データベースのJDBC接続文字列。例はこちら
  • JDBCドライバクラス - ドライバクラスの適切な名前(各dbに固有)。たとえば、「com.mysql.jdbc.Driver」(MySql dbの場合)
  • ユーザー名 - データベースのユーザー名
  • パスワードデータベースのパスワード(テストプランに暗号化されていない状態で保存されます)

私たちの場合、必須フィールドのみを設定する必要があります:

  • 変数名プールにバインドされます。
  • データベースのURL
  • JDBCドライバクラス
  • ユーザー名
  • パスワード

画面の残りのフィールドはデフォルトのままにすることができます: ここに画像の説明を入力

テストユーザーの資格情報をデータベースに格納すると仮定します。 ここに画像の説明を入力

データベース接続が設定されたら、JDBCリクエスト自体を追加し、そのクエリーを使用してデータベースからすべての資格情報を取得することができます: スレッドグループ - >追加 - >サンプル - > JDBCリクエスト

'Select Statement'クエリと 'Variable Names'を使用することで、カスタム変数に対する応答を解析できます。

ここに画像の説明を入力

これ以降のリクエストでさらに使用できるJMeter変数が用意されます。指定された変数は、増分接尾辞(email_1、email_2、email_3 ... ..)で作成されます。

これらの変数を 'ログイン要求'で使用するには、JDBCクエリ応答から正しい値にアクセスするために使用されるカウンタを追加する必要があります。 JMeterで 'Counter'要素を追加するには: スレッドグループ - >追加 - >構成要素 - >カウンタを右クリックします。

ここに画像の説明を入力

その後、__V関数を使用して「ログイン要求」を更新することができます。これは、変数名式を評価した結果を返し、ネストされた変数参照を評価するために使用できます。

ここに画像の説明を入力

指定された構成では、データベース値を使用して、さまざまなユーザー間でスクリプトを実行できます。 ここに画像の説明を入力 ここに画像の説明を入力

'Parameterized Controller'プラグインを使用したパラメータ化

異なるパラメータで同じアクションの繰り返しシーケンスを実行する必要がある場合は、 JMeter-Pluginsプロジェクトの「Parameterized Controller」サードパーティ製プラグインを使用します。

最初にこのプラグインをインストールする必要があります。

ログイン・ワークフローをパラメータ化すると仮定します。

ここに画像の説明を入力

まず、JMeterコアには含まれていないため、「Parameterized Controller」プラグインをインストールする必要があります。そのプロセスのインストール手順はここで見つけることができます。

「Login Request」を別のコントローラに移動して無効にしてください(右クリックして「無効」を選択してください)。これは、テスト計画の中にモジュールコンテナを持ち、そのようなコンテナとしてWorkbenchを使用しないようにする最も好ましい方法です。インストールが終了したら、異なるユーザ認証情報を持つ2つの「パラメータ化コントローラ」コントローラを追加できます: スレッドグループ - >追加 - >ロジックコントローラ - >パラメータ化コントローラを右クリックします

ここに画像の説明を入力

パラメータ化されたコントローラには、パラメータを指定できる「ユーザ定義の変数」セクションがあります。最初のユーザーの資格情報を最初のパラメーター化されたコントローラーに入れ、2番目のユーザー資格情報を2番目のパラメーター化されたコントローラーに入れます。 ここに画像の説明を入力

両方のパラメータ化されたコントローラ内で、「再利用可能なコントローラ」への参照を追加して、異なるパラメータで「ログイン要求」を呼び出します。このようにすることができます:

'Parameterized Controller' - > 'Add' - > 'Logic Controller' - > 'Module Controller'を右クリックし、

ここに画像の説明を入力

スクリプトを実行すると、パラメータ化されたコントローラのそれぞれが別々に「ログイン要求」によってトリガされることがわかります。入力パラメータのさまざまな組み合わせに応じてスクリプトを実行する必要がある場合に便利です。

ここに画像の説明を入力



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow