Jmeter(9)-エントリーからマスタリーまで-JMeterロジックコントローラー-パート1(詳細なチュートリアル)

コンテンツ

1はじめに

2.ロジックコントローラの分類

3.ロジックコントローラファミリをプレビューします

4.一般的なロジックコントローラの詳細な説明

5.まとめ


1はじめに

Jmeterの公式Webサイトでのロジックコントローラーの説明は、「ロジックコントローラーはサンプラーが処理される順序を決定します。」です。

つまり、ロジックコントローラはサンプラーの実行順序を制御できます。コントローラーはサンプラーと一緒に使用する必要があることがわかります。そうしないと、コントローラーは無意味になります。コントローラの下に配置されたすべてのサンプラーは全体として扱われ、実行時に一緒に実行されます。

JMeterロジックコントローラは、要素の実行ロジックを制御できます。ワンタイムコントローラに加えて、他のタイプのロジックコントローラをネストすることができます。

2.ロジックコントローラの分類

JMeterのロジックコントローラーは、次の2つのカテゴリに分類されます。

(1)テストプランの実行中にノードの論理実行シーケンスを制御します。たとえば、ループコントローラー、Ifコントローラーなどです。(2)JMeterが実行結果をカウントして制御できるように、テストプラン内のスクリプトをグループ化します。スクリプトの実行時間など。たとえば、スループットコントローラー、トランザクションコントローラー。

3.ロジックコントローラファミリをプレビューします

まず、JMeterのロジックコントローラー、パスを見てみましょう:スレッドグループ(ユーザー)->追加->ロジックコントローラー(ロジックコントローラー);JMeter5には17のロジックコントローラーがあることがはっきりとわかります。次の図:

上の写真がはっきりと見えない場合は、次の図に示すように、Hong兄弟がJMeter5のロジックコントローラーのタイプに関するマインドマップを要約しました。

上記の理解により、ロジックコントローラの一般的な理解と理解が得られます。以下では、Hong兄弟が、小さなパートナーや子供靴の仕事で通常使用されるいくつかのロジックコントローラーを共有して説明します。

4.一般的なロジックコントローラの詳細な説明

  このセクションでは、Hong兄弟が一般的に使用されるロジックコントローラを上からに詳しく説明します。時間の制約のため、ホン兄弟はこの部分を上、中、下の3つの部分に分けました。

4.1ifコントローラー

実際の作業では、Jmeterをインターフェーステストやパフォーマンステストに使用する場合、さまざまな条件に応じてさまざまな操作を実行する必要がある場合があります。この問題を解決するために、JmeterはIFコントローラーを提供します。名前が示すように、IFコントローラーはコードにIFの機能を実装し、式のTrue/Falseを判断して対応する操作を実行するかどうかを決定します。以下のノードが実行されているかどうかの条件で判断されます。

1.次の図に示すように、コントローラーがどのように見えるかを見てみましょう。パス:スレッドグループ>追加>ロジックコントローラー> If(if)コントローラー。

2.主要なパラメータは次のとおりです。

名前:名前。自由に設定できます。空にすることもできます。

コメント:コメントは、自由に設定でき、空にすることができます。

式(trueまたはfalseに評価する必要があります):式(値はtrueまたはfalseである必要があります)、つまり、右側のテキストボックスに入力される条件値はtrueまたはfalseである必要があります(デフォルト)

条件を変数式として解釈しますか?:デフォルトのティックオプションは、条件を変数式として解釈します(__jexl3または__groovy式を使用する必要があります)

すべての子供を評価しますか?:条件は各サブアイテムに適用され(具体的な理解のために、ホン兄弟は実際の戦闘の章で例を示します)、条件がすべての子供を対象としているかどうかを判断します。デフォルトでは、チェックされていません。そしてそれはifコントローラーの入り口で一度だけ判断されます。

注:黒板をノックしてください!頭をノック!

1.テキストボックスの黄色の感嘆符は、パフォーマンスを向上させるために__jexl3または__groovy式を使用することをお勧めすることを示しています。これはデフォルトの方法です。

2. ifコントローラーは、その下のサブアイテムにのみ作用できます

4.1.1デフォルトの使用法

1.デフォルトの使用法は__jexl3または__groovy式を使用することです。コントローラーにBeijingHonggeのブログガーデンのホームページにアクセスするサンプラーがある場合、サンプラーはif条件が満たされた場合にのみ実行されます。デフォルトでは、条件'Beijing Hongge'=='BeijingHongge'が__jexl3式に入れられます。以下に示すように:

2.式の使用方法がわからない場合は、Jmeterの関数アシスタントを使用できます。関数アシスタントアイコン>_jexl3を選択>値入力ボックスに「BeijingHongge」==「BeijingHongge」と入力>「」をクリックします。生成'>すべて以下に示すように、Ctrl+Cを選択してコピー>Ctrl+Vを選択して式にます。

3.構成後、次の図に示すように、JMeterを実行し、HTMLを選択して、結果ツリーを表示します。

 4.1.2直接入力条件

1.直接入力の場合は、「条件を変数式として解釈しますか? 」の前にあるチェックボックスを外し、条件を直接入力します:'Beijing Hongge'=='BeijingHongge'北京ホンゲのブログガーデンのホームページにアクセスするサンプラーを実行します。以下に示すように:

2.構成後、次の図に示すように、JMeterを実行し、HTMLを選択して、結果ツリーを表示します。

4.13条件での変数の使用

日常業務の多くのテストシナリオでは、特定のサンプラーを実行するかどうかを決定するために、ユーザー変数または前のサンプラーの戻り値に基づいて条件付きの判断を行う必要があります。

1.最初に、ユーザー変数BeijingHonggeを追加します。条件: Beijing HonggeがHonggeの場合、Beijing HonggeBlogParkのホームページにアクセスするサンプラーが実行されます。以下に示すように:

次の図に示すように、ユーザー変数と構成:

2. IFコントローラーと構成、または次の式を使用できます:添え字{Beijing Hongge}'==' Hongge'、)}の開いた中括弧がありません。以下に示すように:

 4.1.4すべての子供に対するEvaluateの使用法は?

1.ホン兄弟は、上記のセクションの条件で変数を使用する方法を説明し、共有しました。テストシナリオを想定しています。ifコントローラーの下のサンプラーの後に変数の値が変更された場合、後続のサンプラーは引き続き実行されます。 ?ブラザーホンをフォローして、次のコラムをご覧ください。

2.次の図に示すように、変数「BeijingHongge」の値を「BeijingHongge」に変更します。

3. JMeter実行プロセスの論理分析:

(1)ifコントローラーの下に3つのサンプラーがあり、変数Beijing Honggeの初期値はHonggeであり、ifコントローラーの条件は次のとおりです。{__ jexl3( "

(2)実行開始時に条件が満たされている場合、ブログガーデンのホームページ、北京ホンゲホンゲの記事の3つのサンプラーを実行する必要があります。

(3)ただし、 Beijing Honggeのブログガーデンのホームページにアクセスすると BeijingHonggeのがBeijingHonggeに変更され、 「${BeijingHongge}」=="Hongge"の条件を満たすことができなくなります。

(4 Hong GeのJMeterシリーズの記事にアクセスしてください。このサンプラーは、実行されません。

4.次の図に示すように、JMeterを実行し、結果ツリーを表示して、操作の結果をHonggeによって分析された結果と比較します。

5.この時点で、[すべての子の評価]のチェックを外すと、どうなりますか。自分で試すことができます。変更を加えたら、忘れずに[保存]をクリックしてください。以下は、次の図に示すように、Hong兄弟の実行結果です。

さらに、文字列で引用符を使用する必要がある場合、変数は次のような文字列の形式であると見なされます。下付き文字の開き中括弧がありません。

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

  トランザクションの応答時間は、ビジネスパフォーマンスを測定するための主要な指標です。トランザクションコントローラーは、他のノードの下にあるサンプラーの実行時間を累積して、簡単に統計を行うことができます。同時に、各サンプラーの実行時間がカウントされます。トランザクションコントローラーの下に複数のサンプラーがある場合、すべてのサンプラーが正常に実行された場合にのみ、トランザクションコントローラー全体によって定義されたトランザクションが成功したと見なされます。これは、テスト計画の特定の部分をトランザクションに編成するために使用されます。JMeterでのトランザクションの役割は、トランザクションの応答時間、スループットなどをカウントすることです。たとえば、ユーザー操作でシミュレートするために複数のサンプラーが必要になる場合があります。この場合、トランザクションコントローラーを使用して、応答時間などのユーザー操作のより正確なパフォーマンス指標を取得できます。この時間には、サンプラーだけでなく、このコントローラーのスコープ内のすべての処理時間が含まれます。

これはとても便利です。トランザクションの概念については前に説明しましたが、単一のリクエストの応答時間ではなく、関連するリクエストのグループの全体的な応答時間を気にする場合があります。それをカウントするにはどうすればよいですか。この要求のグループをトランザクションコントローラーの下に置くには、トランザクションの概念を使用する必要があります。

1.次の図に示すように、このトランザクションコントローラーがどのように見えるかを見てみましょう。パス:スレッドグループ>追加>ロジックコントローラー>トランザクションコントローラー。

2.主要なパラメータは次のとおりです。

名前:名前。自由に設定できます。空にすることもできます。

コメント:コメントは、自由に設定でき、空にすることができます。

親サンプルを生成する:親サンプラーを生成するかどうかを選択します。

生成されたサンプルにタイマーとプリポストプロセッサの期間を含める:タイマーを含めるかどうかを選択すると、サンプラーの前後に遅延が追加されます。(Brother Hongは、チェックしないことをお勧めします。チェックしないと、統計がより厄介になり、遅延を差し引く必要があります)

4.2.1親サンプルの使用法を生成する

1.ブラザーホンはテストシナリオを列挙します。ブログパークのホームページと北京ホンゲのブログパークのホームページにアクセスする2つのリクエストに対する1つのリクエストの応答時間を知る必要があるので、以下を見てみましょう。例。

(1)次の図に示すように、単一の要求の場合は、親サンプルの生成をチェックしないでください。

2.次の図に示すように、JMeterを実行して、集約されたレポートで単一の要求の応答時間を表示します。

1.ブラザーホンはテストシナリオをリストします:ブログパークのホームページと北京ホンゲのブログパークのホームページにアクセスするための2つのリクエストの応答時間を一連のリクエストとして理解する必要があるので、次の例。

(1)要求のグループについて、次の図に示すように、親サンプルの生成をチェックします。

2.次の図に示すように、JMeterを実行して、集約されたレポートで要求のグループの応答時間を表示します。

4.3ループコントローラー

ループコントローラーは、ノードの下にある要素の実行時間を制御できます。これは、特定の数値または変数にすることができます。

1.まず、このループコントローラーがどのように見えるかを見てみましょう。デフォルトでは1回ループします。パス:次の図に示すように、スレッドグループ>追加>ロジックコントローラー>ループコントローラー。

2.主要なパラメータは次のとおりです。

名前:名前。自由に設定できます。空にすることもできます。

コメント:コメントは、自由に設定でき、空にすることができます。

永遠に:この項目をチェックすることは、サイクルが続くことを意味します。

注:黒板をノックし、頭蓋骨をノックしてください!

スレッドグループのループ数とループコントローラのループ数が同時に設定されている場合、ループコントローラの子ノードが実行される回数は、2つの値を乗算した結果になります。

4.3.1スレッドグループとループコントローラーの違い

1.これで、Honggeは2つのリクエストを準備し、1つのスレッドと5つのループでスレッドグループを設定します。以下のリクエストがあります。BeijingHonggeのブログパークのホームページ、ループコントローラー(2つのループを設定)にアクセスします。以下のリクエスト: BlogGardenHomeにアクセス

(1)次の図に示すように、スレッドグループ:

(2)次の図に示すように、ループコントローラー。

2. JMeterを実行し、結果ツリーを表示します。結果を明確に表示するために、Hong兄弟は、次の図に示すように、最初のリクエストが失敗するように意図的に構成します。

上記の結果から、次のことがわかります。

(1)スレッドグループのループ数とループコントローラのループ数を同時に設定した場合、ループコントローラの子ノードの実行回数は、2つの値を掛け合わせた結果になります。

(2)実行順序は、最初にスレッドグループでループを実行し、次にループコントローラーでループを実行することです。

4.4Whileコントローラー

While条件コントローラー、そのノードの下の要素は、While条件がfalseになるまで実行されます。

1.まず、このWhileControllerがどのように見えるかを見てみましょう。デフォルトでは1回ループします。パス:スレッドグループ>追加>ロジックコントローラー>コントローラー中、以下に示すように:

2.主要なパラメータは次のとおりです。

名前:名前。自由に設定できます。空にすることもできます。

コメント:コメントは、自由に設定でき、空にすることができます。

条件:変数式と変数を受け入れます。条件がFlaseの場合、Whileループがジャンプアウトします。それ以外の場合、Whileコントローラーの下のコンポーネントは常に実行されます。

3.Whileコントローラーは3つの定数を提供します

(1)空白:ループ内の最後のサンプラーに障害が発生したときに停止します

(2)最後:サイクルの前にサンプラーに障害が発生した場合は、サイクルに入らないでください

(3)その他:判定条件が偽の場合、ループを停止します

4.4.1空白

1.記入しないでください(空白):次の図に示すように、Whileコントローラーの下の最後のサンプルの実行が失敗すると、ループから飛び出します。

2. JMeterを実行し、結果ツリーを表示します(最後に失敗したサンプラーをマウスでドラッグできます。最初または2番目の位置に移動すると、JMeterを実行した後、常に実行されていることがわかります)。次の図に示されています。

4.4.2LAST

LAST: Whileコントローラーの下の最後のサンプルが実行に失敗したときにループからジャンプします。Whileコントローラーの前のサンプルが実行に失敗した場合、Whileループに入りません。つまり、Whileコントローラーの下のサンプルは実行されません。実行されます。

1.サンプラーツリーはまだ上記の位置と順序にあります。今回は、次の図に示すように、Whileコントローラー式:LASTを入力します。

2. JMeterを実行し、結果ツリーを表示します(最後に失敗したサンプラーをマウスでドラッグできます。最初または2番目の位置に移動すると、JMeterを実行した後、常に実行されていることがわかります)。ループは1回だけ実行され、満たされない場合の結果は次の図に示すものと同じであることがわかります。

3.ただし、LASTを入力すると、結果も発生します。つまり、Whileコントローラーの前の例が実行に失敗した場合、Whileコントローラーには入りません。

Whileコントローラーの前に2つのサンプラーを追加します。サンプラー1はBaiduにアクセスし、サンプラー2は北京紅鴿にアクセスします。サンプラー2は北京紅鴿にアクセスします。実行は失敗します。サンプラー2はWhileコントローラーの前にある必要があり、実行に失敗します。以下に示すように:

4. JMeterを実行し、結果ツリーを確認して、サンプラー1とサンプラー2が実行されているが、次の図に示すように、Whileコントローラーに入っていないことを確認します。

4.4.3それ以外の場合

カスタム条件:TrueまたはFalseの値を持つ関数/変数/属性式。前述のIFコントローラーと同様に、Hong兄弟はここで猫と虎の例を取り上げます。

1.ユーザー定義変数、変数名:Beijing Hongge、変数値:true、次の図に示すように:

2.コントローラーの構成中に、変数の値を取得します:$ {Beijing Hongge}、次の図に示すように、式の代わりに入力します。

3. JMeter実行プロセスの論理分析:

(1)Beijing Honggeユーザー(スレッドグループ)の下にユーザー定義変数があり、変数Beijingtrueであり、Whileコントローラーの条件は次のとおりです。 ${BeijingHongge}によって取得される値は常にtrue

(2)したがって、常に条件が満たされると、常に実行する必要があるのは当然ですブログガーデンのホームページにアクセスし、北京ホンゲのブログガーデンのホームページにアクセスして、ホンゲのJMeterの3つのサンプラーにアクセスしてください。シリーズ記事。

4. JMeterを実行し、結果ツリーを確認し(JMeterを実行した後、常に実行されていることがわかります)、それを比較して、次の図に示すように、Hong兄弟の分析と非常に一致しているかどうかを確認します。

5.まとめ

さて、ロジックコントローラに関する今日の最後の記事はここにあります。この記事は主にIFコントローラトランザクションコントローラループコントローラ、およびWhileコントローラを紹介します。

あなたの肯定は私の進歩の原動力です。気分が良ければ励ましてください!波をクリックしてお勧めすることを忘れないでください、それを忘れないでください!

おすすめをクリックして、訪問の痕跡を残すこと忘れないでください

おすすめ

転載: blog.csdn.net/ZangKang1/article/details/124148394