【P29】JMeter IFコントローラー(イフコントローラー)


1. IFコントローラー(イフコントローラー)パラメーターの説明

可以控制其下面的子/后代元素是否执行;如果为 true 则执行;如果为 false 则都不执行

スレッドグループの右ボタンを選択 >>> 追加 >>> ロジックコントローラー >>> IFコントローラー (Ifコントローラー)

ここに画像の説明を挿入

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

(2)、最後のサンプルのステータスを使用する: ショートカット、最後のサンプラーの結果が渡されると、変数が参照されます。クリックすると、式ボックスに生成されます: ${JMeterThread.last_sample_ok}

(3)、条件を変数式として解釈しますか?: デフォルトでは、このオプションがチェックされ、条件は変数式として解釈されます (__jexl3 または __groovy 式を使用する必要があります) [この項目が選択されると、次のことを意味します:変数値は文字列 true と等しい (大文字と小文字は区別されません)】

  • チェックを外す:判定したい式を直接入力するだけです判定式がtrueの場合、「1!=2」などのifコントローラでリクエストを実行すると、以下のhttpリクエストが実行されます

  • 確認: このとき、条件式を式に直接記入することはできず、関数を使用して条件式の真/偽を計算する必要があります。使用できる関数は _jexl3 と _groovy です。

(4)、すべての子項目に対して評価しますか?: 条件は各子項目に作用し、各子項目の実行時に条件が 1 回判定されます。通常はチェックされず、状態は通常 1 回のみ判断されます

ノート:

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

  • IF コントローラーはその子に対してのみ動作できます。

  • jexl の正式名: Jakarta Commons Jexl は、式言語 (Java Expression Language) インタプリタです。

if ロジックコントローラーの Expression に条件式を直接入力することはできず、関数を使用して条件式を true/false として計算する必要があります。使用できる関数は __jexl3 関数と __groovy 関数です。

A: ${flag} などの変数、値が true の場合は合格とみなされ、それ以外の場合は false とみなされます。

B: 関数、条件判定は、js、groovy、jexl3 の 3 つのスクリプト言語を同時にサポートしますが、パフォーマンス上の理由から、js の使用は推奨されません

  • js 構文の例: KaTeX 解析エラー: '}' が予期され、入力の最後に 'EOF' が発生しました: …_\_javaScript(" {count}" == "1"")}

  • Groovy 構文の例: ${__groovy(vars.get(“count”) != “1”)}

  • jexl3 構文の例: KaTeX 解析エラー: '}' が予期されましたが、入力の最後に 'EOF' が発生しました: {\_\_jexl3( {count}< 10)}

2. テスト計画の設計

(1)、テスト計画を右クリックし、<<< スレッド (ユーザー) <<< スレッド グループを追加します。

ここに画像の説明を挿入

(2)、スレッド グループを右クリックし、<<< 構成要素 <<< ユーザー定義変数を追加します

ここに画像の説明を挿入

  • カウント : 1

  • フラグ : true

(3)、スレッド グループを右クリックし、<<< ロジック コントローラー <<< IF コントローラーを追加します。

ここに画像の説明を挿入

  • 勾選択条件を変数式として解釈しますか?
${
    
    flag}

(4)、IF コントローラーを右クリック <<< サンプラー <<< デバッグ サンプラーを追加

ここに画像の説明を挿入

(5)、スレッド グループを右クリック <<< 追加 <<< リスナー <<< 結果ツリーを表示

(6) クリックして開始し、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します

ここに画像の説明を挿入

如图,IF 控制器 返回的是 true,所以会执行 调试取样器

(7) ユーザー定義変数のコンポーネントを変更し、フラグパラメータを false に変更します。

ここに画像の説明を挿入

(8) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します

ここに画像の説明を挿入

如图,IF 控制器 返回的是 false,所以不会执行 调试取样器

(9) ユーザー定義変数の構成要素を変更し、フラグパラメータを aaaaa に変更します。

ここに画像の説明を挿入

(10)、クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示、デバッグサンプラーが実行されているかどうかを確認します

ここに画像の説明を挿入

如图,IF 控制器 返回的是 false,所以不会执行 调试取样器

用户定义的变量 组件中的 flag 值只要不是 true,则都为 false

2.1、魅力的な文章

(1)、ユーザー定義変数コンポーネントを変更し、flag パラメーターを true に変更します。

ここに画像の説明を挿入

(2) Groovy 構文を使用するように IF コントローラーを変更する

ここに画像の説明を挿入

// 两种写法选一种即可

${
    
    __groovy(vars.get("count")=="1")}
${
    
    __groovy("${count}"=="1")}

(3) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します

ここに画像の説明を挿入

IF 控制器 中的 ${__groovy(vars.get("count")=="1")} 返回值为 true,所以 调试取样器 会执行

(4) ユーザー定義変数コンポーネントを変更し、count パラメータを 2 に変更します。

ここに画像の説明を挿入

(5) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します

ここに画像の説明を挿入

IF 控制器 中的 ${__groovy(vars.get("count")=="1")} 返回值为 false,count 值为 2,所以 调试取样器 不会执行

2.2. JavaScriptの記述方法

(1) ユーザー定義変数コンポーネントを変更し、count パラメーターを 1 に変更します。

ここに画像の説明を挿入

  • カウント : 1

(2) JavaScript 構文を使用するように IF コントローラーを変更します。

ここに画像の説明を挿入

${
    
    __javaScript("${count}"=="1")}

(3) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します

ここに画像の説明を挿入

IF 控制器 中的 ${__javaScript("${count}"=="1")} 返回值为 true,所以 调试取样器 会执行

(4) ユーザー定義変数コンポーネントを変更し、count パラメータを 2 に変更します。

ここに画像の説明を挿入

(5) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します

ここに画像の説明を挿入

IF 控制器 中的 ${__javaScript("${count}"=="1")} 返回值为 false,count 值为 2,所以 调试取样器 不会执行

2.3、jexl3の書き込み方法

(1) ユーザー定義変数コンポーネントを変更し、count パラメーターを 1 に変更します。

ここに画像の説明を挿入

  • カウント : 1

(2) jexl3 構文を使用するように IF コントローラーを変更します。

ここに画像の説明を挿入

// 四种写法,选一种即可

${
    
    __jexl3(${
    
    count}=="1")}
//${__jexl3(${count}==1)}
//${__jexl3(${count}<10)}
//${__jexl3("${count}"=="1")}

(3) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します

ここに画像の説明を挿入

IF 控制器 中的 ${__jexl3(${count}=="1")} 返回值为 true,所以 调试取样器 会执行

(4) ユーザー定義変数コンポーネントを変更し、count パラメータを 2 に変更します。

ここに画像の説明を挿入

(5) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します

ここに画像の説明を挿入

IF 控制器 中的 ${__jexl3(${count}=="1")} 返回值 为 false,count 值为 2,所以 调试取样器 不会执行

おすすめ

転載: blog.csdn.net/qq_45138120/article/details/130854895