20. 関数と変数

JMeter 関数は、Sampler またはテスト ツリー内の他の要素のフィールドにデータを入力できる特別な値です。関数呼び出しは次のようになります。

${__関数名(var1,var2,var3)}

ここで、「__functionName」は関数の名前と一致します。 ${__time(YMD)}
の ように、関数に送信されるパラメーターを括弧で囲みます 。実際のパラメーターは関数によって異なります。${__threadNum}のように、パラメーターを必要としない関数では括弧を省略できます。

関数パラメータにコンマが含まれている場合は、必ず「\」でエスケープしてください。そうしないと、JMeter はそれをパラメータ区切り文字として扱います。例えば:

${__time(EEE\, d MMM yyyy)}
カンマがエスケープされていない場合 (例: ${__javaScript(Math.max(2,5))})、次のようなエラーが発生します。
エラー - jmeter.functions.JavaScript: Javascript の処理中にエラーが発生しました: [Math.max(2]
    org.mozilla.javascript.EvaluatorException: 引数リストの後に ) がありません (<cmd>#1)
 
これは、文字列 " Math.max(2,5) " が __javascript 関数の 2 つのパラメーターとして扱われるためです。
Math.max(2 and 5)
他のエラー メッセージが表示される可能性があります。

変数は次のように参照されます。

${変数}

未定義の関数または変数が参照された場合、JMeter はエラーを報告/記録しません。参照は変更されずに返されます。たとえば、UNDEFが変数として定義されていない場合、 ${UNDEF} の値は$ { UNDEF}になります。 変数、関数 (およびプロパティ) はすべて大文字と小文字が区別されます。 JMeter は使用前に変数名からスペースを削除するため、たとえば ${__Random(1,63, LOTTERY )}は変数「LOTTERY」ではなく「  LOTTERY  」を使用します。

プロパティは変数と同じではありません。変数はスレッドに対してローカルです。プロパティはすべてのスレッドに共通であり、__P または __property 関数を使用して参照する必要あります
C:\test\${test}などの Windows パスの変数の前に\ を使用する場合は、必ず\をエスケープしてください。 そうしないと、JMeter は変数を解釈しません (例: C:\\test\\${test} )。 別の方法として、パスの区切り記号として/を使用することもできます (例: C:/test/${test} )。 Windows JVM は、必要に応じて区切り記号を変換します。

大まかにタイプにグループ化された関数のリスト。

関数の種類名前コメント以来
情報 スレッド番号スレッド番号を取得する1.X
情報 スレッドグループ名スレッドグループ名を取得4.1
情報 サンプラー名サンプラー名 (ラベル) を取得する2.5
情報 マシンIPローカル マシンの IP アドレスを取得する2.6
情報 マシン名ローカル マシン名を取得する1.X
情報 時間現在の時刻をさまざまな形式で返す2.2
情報 タイムシフト指定された秒/分/時間/日を加算したさまざまな形式の日付を返します3.3
情報 ログメッセージを記録 (または表示) する (そして値を返す)2.2
情報 ログインメッセージのログ (または表示) (空の戻り値)2.2
入力 StringFromFileファイルから行を読み取る1.9
入力 FileToStringファイル全体を読み取る2.4
入力 CSV読み取りCSV 区切りファイルから読み取る1.9
入力 XPathXPath 式を使用してファイルから読み取る2.0.3
入力 StringToFile文字列をファイルに書き込む5.2
計算 カウンター増加する数を生成する1.X
書式設定 dateTimeConvertソース形式からターゲット形式への日付または時刻の変換4.0
計算 ダイジェストダイジェストを生成します (SHA-1、SHA-256、MD5...)4.0
計算 intSumint 数値を追加する1.8.1
計算 ロングサム長い数字を追加2.3.2
計算 ランダム乱数を生成する1.9
計算 ランダム日付特定の日付範囲内でランダムな日付を生成する3.3
計算 RandomFromMultipleVars|で区切られた一連の変数の値から要素を抽出します。3.1
計算 ランダム文字列ランダムな文字列を生成する2.6
計算 UUIDランダムなタイプ 4 UUID を生成する2.9
スクリプティング かっこいいApache Groovy スクリプトを実行する3.1
スクリプティング ビーンシェルBeanShell スクリプトを実行する1.X
スクリプティング JavaScriptJavaScript の処理 (Nashorn)1.9
スクリプティング jexl2Commons Jexl2 式を評価するjexl2(2.1.1)
スクリプティング jexl3Commons Jexl3 式を評価するjexl3 (3.0)
プロパティ isPropDefined プロパティが存在するかどうかをテストする4.0
プロパティ 財産 プロパティを読み取る2.0
プロパティ Pプロパティを読み取る (省略形)2.0
プロパティ プロパティの設定JMeter プロパティを設定する2.1
変数 スプリット文字列を変数に分割する2.0.2
変数 評価変数式を評価する2.3.1
変数 evalVar変数に格納された式を評価する2.3.1
プロパティ isVarDefined 変数が存在するかどうかをテストする4.0
変数 変数名を評価する2.3RC3
チャー数値のリストから Unicode char 値を生成する2.3.3
チェンジケース異なるモードに従ってケースを変更する4.0
エスケープHtmlHTML エンコーディングを使用して文字列をエンコードする2.3.3
escapeOroRegexpCharsORO 正規表現で使用される引用メタ文字2.9
エスケープXmlXML エンコーディングを使用して文字列をエンコードする3.2
正規表現関数正規表現を使用して以前の応答を解析する1.X
逃れられないJava エスケープを含む文字列を処理する (例: \n & \t)2.3.3
unescapeHtmlHTML エンコードされた文字列をデコードする2.3.3
URLデコードapplication/x-www-form-urlencoded 文字列をデコードする2.10
urlencode文字列を application/x-www-form-urlencoded 文字列にエンコードします2.10
テスト計画名現在のテスト計画の名前を返す2.6

20.1 関数でできること

関数には、ユーザー定義の静的値 (または変数) と組み込み関数の 2 種類があります。
ユーザー定義の静的値を使用すると、ユーザーは、テスト ツリーをコンパイルして実行するために送信するときに、変数を静的値に置き換えるように定義できます。この置換は、テスト実行の開始時に 1 回行われます。これは、たとえば、すべての HTTP リクエストの DOMAIN フィールドを置き換えるために使用できます。たとえば、同じテストで別のサーバーをターゲットにするようにテストを簡単に変更できます。

現在、変数はネストできないことに注意してください。つまり、${Var${N}}は機能しません。__V (変数) 関数を使用してこれを行うことができます: $ {__V(Var${N})}${__BeanShell(vars.get("Var${N}")}も使用できます。

このタイプの置換は関数なしで可能ですが、不便で直感的ではありませんでした。ユーザーは、Sampler の空白値を埋めるデフォルトの構成要素を作成する必要がありました。変数を使用すると、空白の値を埋めるだけでなく、特定の値の一部のみを置き換えることができます。

組み込み関数を使用すると、以前の応答データ、関数が含まれているスレッド、時間、およびその他の多くのソースに基づいて、実行時に新しい値を計算できます。これらの値は、テストの過程でリクエストごとに新しく生成されます。

関数はスレッド間で共有されます。テスト計画で関数呼び出しが発生するたびに、個別の関数インスタンスによって処理されます。

20.2 関数と変数はどこで使用できますか?

関数と変数は、任意のテスト コンポーネントの任意のフィールドに書き込むことができます (TestPlan を除く - 以下を参照)。一部のフィールドでは、数値が必要なためランダム文字列を許可せず、関数を受け入れません。ただし、ほとんどのフィールドでは関数を使用できます。

テスト計画で使用される関数には、いくつかの制限があります。関数が処理されるときに JMeter スレッド変数が完全に設定されていないため、パラメーターとして渡される変数名が設定されず、変数参照が機能しないため、split()regex()および変数評価関数が無効になります。動作しません。threadNum ()関数は機能しません (テスト計画レベルでは意味がありません)。次の関数は、テスト計画で問題なく動作するはずです。

  • intSum
  • ロングサム
  • マシン名
  • ビーンシェル
  • かっこいい
  • JavaScript
  • jexl2/jexl3
  • ランダム
  • 時間
  • プロパティ関数
  • ログ関数

構成要素は、別のスレッドによって処理されます。したがって、 __threadNumなどの関数は、ユーザー定義変数などの要素では正しく機能しません。また、UDV 要素で定義された変数は、要素が処理されるまで使用できないことに注意してください。

SQL コード (など) で変数/関数参照を使用する場合は、テキスト文字列に必要な引用符を含めることを忘れないでください。
name='${VAR}' のテーブルからアイテムを選択します
いいえ
name=${VAR} のテーブルから項目を選択
VAR自体に引用符が含まれていない限り)

20.3 変数と関数の参照方法

テスト要素で変数を参照するには、変数名を ' ${ ' と ' } ' で囲みます。

関数は同じ方法で参照されますが、慣例により、ユーザー値名*との競合を避けるために、関数の名前は " __ "で始まります。一部の関数は、それらを構成するために引数を取り、これらはカンマで区切られた括弧で囲みます。関数が引数を取らない場合、括弧は省略できます。

コンマを含む引数値は、必要に応じてエスケープする必要があります。パラメーター値にコンマを含める必要がある場合は、' \, 'のようにエスケープします。 これは、たとえばスクリプト関数 (Javascript、Beanshell、Jexl、groovy) に適用されます。この場合、スクリプト メソッド呼び出しで必要になる可能性のあるコンマをエスケープする必要があります。

${__BeanShell(vars.put("名前"\,"値"))}

または、テスト計画などで、スクリプトを変数として定義することもできます。

SCRIPT vars.put("名前","値")
スクリプトは、次のように参照できます。
${__BeanShell(${SCRIPT})}
変数がその値に置き換えられる前に関数呼び出しが解析されるため、 SCRIPT変数 のコンマをエスケープする必要はありません。これは、JSR223 または BeanShell サンプラーと組み合わせて使用​​するとうまく機能します。これらは、Javascript、Jexl、および BeanShell スクリプトのテストに使用できるからです。

関数は変数やその他の関数を参照できます。たとえば、 ${__XPath(${__P(xpath.file),${XPATH})} はプロパティ「xpath.file」をファイル名として使用し、変数XPATHの内容を次のように使用します。検索する式。

JMeter には、さまざまな組み込み関数の関数呼び出しを作成するのに役立つツールが用意されており、コピーして貼り付けることができます。関数は他の関数のパラメーターになる可能性があるため、値を自動的にエスケープすることはありません。リテラルとして意図した値のみをエスケープする必要があります。

文字列にバックスラッシュ (' \ ') が含まれており、関数または変数の参照も含まれている場合、' $ ' または ' , ' または ' \ ' の前にあるバックスラッシュは削除されます。この動作は、カンマまたは文字列${を含むネストされた関数を許可するために必要です。文字列に関数または変数の参照が含まれていない場合、 ' $ ' または ' , ' または ' \ ' の前のバックスラッシュは削除されません。

変数または関数の値は、 __logn()関数を使用して報告できます。__logn ()関数参照は、変数が定義された後、テスト計画のどこでも使用できます。あるいは、Java Request サンプラーを使用して、変数参照を含むサンプルを作成することもできます。出力は適切なリスナーに表示されます。 Tree View Listener に変数などの値を表示するために使用できる Debug Samplerがあることに注意してください。

*組み込み関数と同じ名前でユーザー定義の静的変数を定義すると、静的変数が組み込み関数をオーバーライドします。

20.4 関数ヘルパーダイアログ

Function Helper ダイアログは、JMeter の Tools メニューから利用できます。

関数ヘルパー ダイアログ
関数ヘルパー ダイアログ

関数ヘルパーを使用すると、プルダウンから関数を選択し、その引数に値を割り当てることができます。表の左の列は引数の簡単な説明を提供し、右の列はその引数の値を書き込む場所です。関数が異なれば、引数も異なります。

これが完了したら、「生成」ボタンをクリックすると、適切な文字列が生成され、テスト計画の好きな場所にコピー アンド ペーストできます。

20.5 関数

__regex関数

正規表現関数は、任意の正規表現 (ユーザーが提供) を使用して前の応答 (または変数の値) を解析するために使用されます。この関数は、変数値が入力されたテンプレート文字列を返します。

__regexFunctionは、将来の使用のために値を格納することもできます。6 番目のパラメーターでは、参照名を指定できます。この関数の実行後、ユーザー定義値の構文を使用して、後で同じ値を取得できます。たとえば、「refName」を 6 番目のパラメーターとして入力すると、以下を使用できるようになります。

  • ${refName}は、この関数によって解析された 2 番目のパラメーター (「置換文字列のテンプレート」) の計算結果を参照します。
  • ${refName_g0}は、この関数によって解析された一致全体を参照します。
  • ${refName_g1}は、この関数によって解析された最初のグループを参照します。
  • ${refName_g#}は、この関数によって解析されるn番目のグループを参照します。
  • ${refName_matchNr}は、この関数によって検出されたグループの数を参照します。
分散テストを使用している場合は、モードを切り替えて ( jmeter.propertiesを参照)、ストリッピング モードにならないようにしてください。Bug 56376 を参照してください

パラメータ

属性
説明
必須
最初の引数
最初の引数は、応答データに適用される正規表現です。それはすべての試合をつかみます。テンプレート文字列で使用するこの式の部分は、必ず括弧で囲んでください。例: <a href="(.*)"> . これにより、リンクの値が取得され、最初のグループとして保存されます (グループは 1 つだけです)。別の例: <input type="hidden" name="(.*)" value="(.*)">。これにより、最初のグループとして名前が取得され、2 番目のグループとして値が取得されます。これらの値は、テンプレート文字列で使用できます
はい
2 番目の引数
これは、実行時に関数を置き換えるテンプレート文字列です。正規表現でキャプチャされたグループを参照するには、構文 $[group_number]$を使用します。すなわち: $1$、または$2$。テンプレートは任意の文字列にすることができます。
はい
3 番目の引数
3 番目の引数は、使用する一致を JMeter に指示します。正規表現によって多数の一致が検出される場合があります。次の 4 つの選択肢があります。
  • 整数 - その一致を使用するように JMeter に指示します。' 1 ' は最初に見つかった一致、' 2 ' は 2 番目の一致、など
  • RAND - JMeter にランダムに一致を選択するように指示します。
  • ALL - すべての一致を使用するように JMeter に指示し、それぞれに対してテンプレート文字列を作成してから、それらをすべて一緒に追加します。このオプションはほとんど使用されません。
  • 0 から 1 の間の浮動小数点数 - 次の式を使用して X番目の一致を見つけるように JMeter に指示します: (number_of_matches_found * float_number) は、最も近い整数に丸められます。
いいえ、デフォルト = 1
4 番目の引数
上記の引数値に「ALL」が選択された場合、この引数は、テンプレート値の追加された各コピーの間に挿入されます。
いいえ
5 番目の引数
一致が見つからない場合に返されるデフォルト値
いいえ
6 番目の引数
この関数によって解析された値を再利用するための参照名。
保存される値は${refName} (置換テンプレート文字列) と${refName_g#} です。ここで、" # " は正規表現からのグループ番号です (" 0 " は一致全体を参照するために使用できます)。
いいえ
7 番目の引数
入力変数名。指定した場合、前のサンプル結果を使用する代わりに、変数の値が入力として使用されます。
いいえ
^

__カウンター

カウンターは、呼び出されるたびに、1 から始まり +1 ずつ増加する新しい数値を生成します。カウンターは、シミュレートされた各ユーザーの値を個別に保持するか、すべてのユーザーに同じカウンターを使用するように構成できます。各ユーザーの値が個別にインクリメントされる場合、それはテスト計画の反復回数を数えるようなものです。グローバル カウンターは、その要求が実行された回数をカウントするようなものです。

カウンターは整数変数を使用してカウントを保持するため、最大値は 2,147,483,647 です。

カウンター関数のインスタンスは完全に独立しています。グローバル カウンタ - " FALSE " - は、各カウンタ インスタンスによって個別に維持されます。

同じ繰り返しで複数の__counter関数を呼び出しても、値はそれ以上インクリメントされません。
サンプルごとに増分するカウントが必要な場合は、User Parametersなどのプリプロセッサで関数を使用します。

パラメータ

属性
説明
必須
最初の引数
シミュレートされた各ユーザーのカウンターを独立させ、他のユーザーから分離する場合は TRUE 。グローバル カウンターの場合はFALSE 。
はい
2 番目の引数
この関数によって作成された値を再利用するための参照名。
格納された値は${refName}の形式です。これにより、1 つのカウンターを保持し、複数の場所でその値を参照できます。
いいえ
^

__threadNum

スレッド番号関数は、現在実行中のスレッドの番号を返すだけです。これらの番号は、ThreadGroup に関してローカルでのみ一意です。つまり、この関数の観点からは、あるスレッド グループのスレッド #1 は別のスレッド グループのスレッド #1 と区別できません。

この関数は、1 から実行中のスレッドの最大数までの数値を返します。JMeterContextオブジェクト ( ctx変数) でJSR223 コードを使用している場合、以下のコードは 0 から (実行中のスレッドの最大数 - 1) の間の数値を返す ことに注意してください。
ctx.getThreadNum()

この関数には引数はありません。

使用例:

${__threadNum}
1 から、含まれているスレッド グループで構成されている実行中のスレッドの最大数までの数値を返します。

この関数は、別のスレッドから実行されるため、構成要素 (ユーザー定義変数など) では機能しません。また、テスト計画で使用しても意味がありません。
^

__threadGroupName

スレッド グループ名関数は、実行中のスレッド グループの名前を返すだけです。

この関数には引数はありません。

使用例:

${__threadGroupName}

この関数は、別のスレッドから実行されるため、構成要素 (ユーザー定義変数など) では機能しません。また、テスト計画で使用しても意味がありません。
^

__intSum

intSum 関数を使用して、2 つ以上の整数値の合計を計算できます。

参照名はオプションですが、有効な整数であってはなりません。

パラメータ

属性
説明
必須
最初の引数
最初の int 値。
はい
2 番目の引数
2 番目の int 値。
はい
n 番目の引数
n番目の整数値。
いいえ
最後の引数
この関数によって計算された値を再利用するための参照名。指定する場合、参照名には少なくとも 1 つの数字以外の文字が含まれている必要があります。含まれていない場合、追加される別の int 値として扱われます。
いいえ

例:

${__intSum(2,5,MYVAR)}
7 (2+5) を返し、結果を MYVAR 変数に格納します。したがって、${MYVAR}は 7 になります。
${__intSum(2,5,7)}
14 (2+5+7) を返し、結果を MYVAR 変数に格納します。
${__intSum(1,2,5,${MYVAR})}
MYVAR 値が 8 (1+2+5+${MYVAR}) の場合は 16 を返します)

^

__longSum

longSum 関数を使用して、2 つ以上の long 値の合計を計算できます。値が -2147483648 から 2147483647 の範囲にないことがわかっている場合は、__intSum の代わりにこれを使用してください。

パラメータ

属性
説明
必須
最初の引数
最初の長い値。
はい
2 番目の引数
2 番目の long 値。
はい
n 番目の引数
n番目の long 値。
いいえ
最後の引数
この関数によって計算された値を再利用するための参照名。指定する場合、参照名には少なくとも 1 つの数字以外の文字が含まれている必要があります。含まれていない場合、追加される別の長い値として扱われます。
いいえ

例:

${__longSum(2,5,MYVAR)}
7 (2+5) を返し、結果を MYVAR 変数に格納します。したがって、${MYVAR}は 7 になります。
${__longSum(2,5,7)}
14 (2+5+7) を返し、結果を MYVAR 変数に格納します。
${__longSum(1,2,5,${MYVAR})}
MYVAR 値が 8 (1+2+5+${MYVAR}) の場合は 16 を返します)

^

__StringFromFile

StringFromFile 関数を使用して、テキスト ファイルから文字列を読み取ることができます。これは、多くの変数データを必要とするテストを実行する場合に便利です。たとえば、銀行アプリケーションをテストする場合、数百または数千の異なる口座番号が必要になる場合があります。

使いやすいCSV Data Set Config テスト要素 も参照してください 。ただし、現在、複数の入力ファイルはサポートされていません。

呼び出されるたびに、ファイルから次の行を読み取ります。すべてのスレッドが同じインスタンスを共有するため、異なるスレッドは異なる行を取得します。ファイルの終わりに到達すると、最大ループ回数に達していない限り、最初から読み取りを再開します。テスト スクリプト内の関数への参照が複数ある場合、ファイル名が同じであっても、それぞれが個別にファイルを開きます。[値を別の場所で再度使用する場合は、関数呼び出しごとに異なる変数名を使用してください。]

関数インスタンスはスレッド間で共有され、次の入力行を必要とするスレッドによってファイルが (再) 開かれるため、ファイル名の一部として threadNumberを使用すると、予期しない動作が発生します。

ファイルのオープンまたは読み取りでエラーが発生した場合、関数は文字列 " **ERR** "を返します。

パラメータ

属性
説明
必須
ファイル名
ファイル名へのパス。(パスは JMeter 起動ディレクトリからの相対パスにすることができます) オプションのシーケンス番号を使用する場合、パス名は DecimalFormat に渡すのに適している必要があります。例については、以下を参照してください。
はい
変数名
この関数によって作成された値を再利用するため の参照名 ( refName )。格納された値は${refName}の形式です。デフォルトは " StringFromFile_ " です。
いいえ
開始シーケンス番号
初期シーケンス番号(省略時は終了シーケンス番号をループ回数として扱います)
いいえ
終了シーケンス番号
最終シーケンス番号 (省略した場合、シーケンス番号は無制限に増加できます)
いいえ

ファイル名パラメータは、ファイルを開くか再度開くときに解決されます。

参照名パラメーター (指定されている場合) は、関数が実行されるたびに解決されます。

シーケンス番号の使用:

オプションのシーケンス番号を使用する場合、パス名はjava.text.DecimalFormatのフォーマット文字列として使用されます。現在のシーケンス番号が唯一のパラメーターとして渡されます。オプションの開始番号が指定されていない場合は、パス名がそのまま使用されます。有用なフォーマット シーケンスは次のとおりです。

#
先行ゼロまたはスペースなしで数値を挿入します
000
必要に応じて先頭にゼロを付けて 3 桁に圧縮された数字を挿入します
書式文字列の使用
以下は、いくつかのフォーマット文字列と、それらが生成する対応するシーケンスです。
pin#'.'dat
先行ゼロなしで数字を生成し、ドットを文字どおり
pin1.dat、…、pin9.datpin10.dat、…、pin9999.datのように扱います。
pin000'.'dat
ドットを保持しながら先行ゼロを生成します。数値が、この形式が示す 3 桁よりも多くの桁数を持ち始めると、pin001.dat 、… pin099.dat 、…、pin999.dat 、…、pin9999.dat に見られるように、シーケンスはより多くの
使用ます
pin'.'dat#
ドットを保持しながら先行ゼロなしで数字を追加し、
pin.dat1、…、pin.dat9、…、pin.dat999を生成します

書式設定文字よりも多くの桁数が必要な場合は、必要に応じて数字が拡張されます。
フォーマット文字が解釈されないようにするには、一重引用符で囲みます。「 .」はフォーマット文字であり、一重引用符で囲む必要があることに注意してください (ただし、#.および000.は、小数点も「.」であるロケールでは期待どおりに機能します) 。
他のロケール (たとえばfr ) では、小数点これは#.」が「nnn,」になることを意味します。詳細については、 DecimalFormat
のドキュメントを参照してください。
パス名に特別なフォーマット文字が含まれていない場合は、現在のシーケンス番号が名前に追加されます。それ以外の場合は、フォーマットの指示に従って番号が挿入されます。
開始シーケンス番号が省略され、終了シーケンス番号が指定されている場合、シーケンス番号はループ回数として解釈され、ファイルは最大で " end " 回使用されます。この場合、ファイル名はフォーマットされていません。
${__StringFromFile(PIN#'.'DAT,,1,2)} - PIN1.DATPIN2.DATを読み取ります
${__StringFromFile(PIN.DAT,,,2)} - PIN.DATを 2 回読み取ります
" .上記のPIN.DATの"引用されません。この場合、開始番号は省略されるため、ファイル名はそのまま使用されます。

^

__マシン名

machineName 関数は、ローカル ホスト名を返します。これは、Java メソッドInetAddress.getLocalHost()を使用し、それをgetHostName()に渡します。

パラメータ

属性
説明
必須
変数名
この関数によって計算された値を再利用するための参照名。
いいえ

例:

${__machineName()}
マシンのホスト名を返します
${__machineName}
マシンのホスト名を返します

^

__マシンIP

machineIP 関数は、ローカル IP アドレスを返します。これは、Java メソッドInetAddress.getLocalHost()を使用し、それをgetHostAddress()に渡します。

パラメータ

属性
説明
必須
変数名
この関数によって計算された値を再利用するための参照名。
いいえ

例:

${__machineIP()}
マシンの IP アドレスを返します
${__machineIP}
マシンの IP アドレスを返します

^

__JavaScript

javaScript 関数は、JavaScript (Java ではありません!) コードの一部を実行し、その値を返します。

JMeter Javascript 関数は、スタンドアロンの JavaScript インタープリターを呼び出します。スクリプト言語としてJavascriptを使用しているため、計算などを行うことができます。

javaScript は、JMeter でのパフォーマンスに最適なスクリプト言語ではありません。計画で多数のスレッドが必要な場合は、__jexl3または__groovy関数を使用することをお勧めします。
Nashorn エンジンについては、Java Platform, Standard Edition Nashorn User's Guideを参照してください。Rhino エンジンについては、 Mozilla Rhino の概要
を参照してください。

次の変数がスクリプトで使用可能になります。

Rhinoscript では、Packages オブジェクトを介して静的メソッドにアクセスできます。スクリプティング Javaのドキュメントを参照してください。たとえば、次のようにして JMeterContextService 静的メソッドにアクセスできます。 Java.type("org.apache.jmeter.threads.JMeterContextService").getTotalThreads()

JMeter はブラウザではなく、ダウンロードしたページの JavaScript を解釈しません。

パラメータ

属性
説明
必須
表現
実行する JavaScript 式。例えば:
  • new Date() - 現在の日付と時刻を返す
  • Math.floor(Math.random()*(${maxRandom}+1)) - 0と変数maxRandomの 間の乱数
  • ${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)) - 変数minRandommaxRandom の間の乱数
  • "${VAR}"=="abcd"
はい
変数名
この関数によって計算された値を再利用するための参照名。
いいえ
テキスト文字列と JMeter 変数に必要な引用符を忘れずに含めてください。また、式にコンマが含まれている場合は、必ずエスケープしてください。たとえば、次のようになります。
${__javaScript('${sp}'.slice(7\,99999))}
7 の後のコンマはエスケープされます。

例:

${__javaScript(new Date())}
2016 年 1 月 9 日土曜日 16:22:15 GMT+0100 (CET)を返します
${__javaScript(new Date(),MYDATE)}
Sat Jan 09 2016 16:22:15 GMT+0100 (CET)を返し、変数MYDATEに格納します
${__javaScript(Math.floor(Math.random()*(${maxRandom}+1)),MYRESULT)}
maxRandom 変数を使用し、0 と maxRandom の間のランダムな値を返し、MYRESULT に格納します。
${__javaScript(${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)),MYRESULT)}
maxRandom 変数とminRandom変数を使用し、 maxRandomminRandomの間のランダム値を返し、変数MYRESULTに格納します
${__javaScript("${VAR}"=="abcd",MYRESULT)}
VAR変数の値をabcdと比較し、trueまたはfalseを返し、結果を MYRESULT に格納します

^

__ランダム

random 関数は、指定された最小値と最大値の間にある乱数を返します。

パラメータ

属性
説明
必須
最小値
はい
最大値
より大きな数
はい
変数名
この関数によって計算された値を再利用するための参照名。
いいえ

例:

${__Random(0,10)}
0 から 10 までの乱数を返します
${__Random(0,10, MYVAR)}
0 から 10 までの乱数を返し、MYVARに格納します。${MYVAR}には乱数が含まれます

^

__RandomDate

RandomDate 関数は、指定された開始日と終了日の値の間にあるランダムな日付を返します。

パラメータ

属性
説明
必須
時間形式
DateTimeFormatter のフォーマット文字列 (デフォルトはyyyy-MM-dd )
いいえ
開始日
開始日、デフォルトは
いいえ
終了日
終了日
はい
フォーマットに使用するロケール
ロケールの文字列形式。言語コードは小文字でなければなりません。国コードは大文字でなければなりません。セパレーターはアンダースコアでなければなりません (例: en_EN )http://www.oracle.com/technetwork/java/javase/javase7locales-334809.htmlを参照してください。省略した場合、関数はデフォルトで Apache JMeter ロケールを使用します。
いいえ
変数名
設定する変数の名前。
いいえ

例:

${__RandomDate(,,2050-07-08,,)}
現在2050-07-08の間のランダムな日付を返します。たとえば、2039-06-21
${__RandomDate(dd MM yyyy,,08 07 2050,,)}
04 03 2034のようなカスタム形式でランダムな日付を返します

^

__RandomString

RandomString 関数は、使用する chars 内の文字を使用して、長さのランダムな文字列を返します。

パラメータ

属性
説明
必須
長さ
生成された文字列の数値の長さ
はい
使用する文字
文字列の生成に使用される文字
いいえ
変数名
この関数によって計算された値を再利用するための参照名。
いいえ

例:

${__RandomString(5)}
読み取り可能または不可能な5文字のランダムな文字列を返します
${__RandomString(10,abcdefg)}
cdbgdbeebdadbfeggfadなど、 abcdefgセットから選択された 10 文字のランダムな文字列を返します。
${__RandomString(6,a12zeczclk, MYVAR)}
a12zeczclkセットから選択された 6 文字のランダムな文字列を返し、結果をMYVARに格納します。MYVARには2z22akz11kceなどの文字列が含まれます。

^

__RandomFromMultipleVars

RandomFromMultipleVars 関数は、 Source Variablesによって提供される変数値に基づいてランダム値を返します。

変数は、次のエクストラクタで生成できるため、単純または多値にすることができます。 複数値変数は、 Match Numbersに-1を 設定したときに抽出される変数です。これにより、 varName_matchNrと呼ばれる一致番号変数が作成され、各値に対して変数varName_n (n = 1、2、3 など) が 作成されます。

パラメータ

属性
説明
必須
ソース変数
|で区切られた変数名 ランダム計算の入力として使用される値を含む
はい
変数名
この関数によって計算された値を再利用するための参照名。
いいえ

例:

${__RandomFromMultipleVars(val)}
複数値であるかどうかを考慮して、変数 val の内容に基づいてランダムな文字列を返します
${__RandomFromMultipleVars(val1|val2)}
変数 val1 と val2 の内容に基づいて、それらが多値であるかどうかを考慮して、ランダムな文字列を返します
${__RandomFromMultipleVars(val1|val2, MYVAR)}
変数 val1 と val2 の内容に基づいて、それらが多値であるかどうかを考慮してランダムな文字列を返し、結果をMYVARに格納します。

^

__UUID

UUID 関数は、疑似乱数型 4 Universally Unique IDentifier (UUID) を返します。

パラメータ

属性
説明
必須

例:

${__UUID()}
次の形式で UUID を返します: c69e0dd1-ac6b-4f2b-8d59-5d4e8743eecd

^

__CSVRead

CSVRead 関数は、CSV ファイルから文字列を返します ( StringFromFileを参照) 。

注: JMeter は複数のファイル名をサポートしています。

ほとんどの場合、新しい CSV Data Set Config 要素 の方が使いやすいです。

ファイル名が最初に検出されると、ファイルが開かれ、内部配列に読み込まれます。空白行が検出された場合、これはファイルの終わりとして扱われます。これにより、末尾のコメントを使用できます。

同じファイル名への後続のすべての参照は、同じ内部配列を使用します。OSが気にしない場合でも、ファイル名の大文字と小文字は関数にとって重要であるため、CSVRead(abc.txt,0)CSVRead(aBc.txt,0)は異なる内部配列を参照します。

*ALIAS機能を 使用すると、同じファイルを複数回開くことができ、ファイル名を短くすることもできます。

各スレッドには、ファイル配列内の現在の行への独自の内部ポインターがあります。スレッドが最初にファイルを参照すると、配列内の次の空き行が割り当てられるため、各スレッドは他のすべてのスレッドとは異なる行にアクセスします。[配列内の行よりも多くのスレッドがない限り。]

この関数は、デフォルトでコンマごとに行を分割します。カンマを含む列を入力する場合は、プロパティcsvread.delimiterを設定して、区切り文字をどの列データにも表示されない文字に変更する必要があります。

パラメータ

属性
説明
必須
ファイル名
読み取るファイル (または*ALIAS )
はい
列番号
ファイル内の列番号。 0 = 最初の列、1 = 2 番目など。 " next " - ファイルの次の行に移動します。 *ALIAS - ファイルを開き、エイリアスに割り当てます
はい

たとえば、次のようにいくつかの変数を設定できます。

  • COL1a ${__CSVRead(random.txt,0)}
  • COL2a ${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
  • COL1b ${__CSVRead(random.txt,0)}
  • COL2b ${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
これにより、1 行から 2 列が読み取られ、次に使用可能な行から 2 列が読み取られます。すべての変数が同じユーザー パラメータ プリプロセッサで定義されている場合、行は連続します。そうしないと、別のスレッドが次の行を取得する可能性があります。

ファイル全体がメモリに格納されるため、この関数は大きなファイルでの使用には適していません。大きなファイルの場合は、CSV データ セット構成要素 またはStringFromFileを使用します。
^

__プロパティ

プロパティ関数は、JMeter プロパティの値を返します。プロパティ値が見つからず、デフォルトが指定されていない場合は、プロパティ名を返します。デフォルト値を指定する場合、関数名を指定する必要はありません。パラメーターは null に設定でき、無視されます。

例えば:

  • ${__property(user.dir)} - user.dirの戻り値
  • ${__property(user.dir,UDIR)} - user.dirの値を返し、 UDIRに保存します
  • ${__property(abcd,ABCD,atod)} - プロパティabcd (定義されていない場合は「 atod 」) の値を返し、 ABCDに保存します。
  • ${__property(abcd,,atod)} - プロパティabcd (定義されていない場合は " atod ") の値を返しますが、保存しません

パラメータ

属性
説明
必須
プロパティ名
取得するプロパティ名。
はい
変数名
この関数によって計算された値を再利用するための参照名。
いいえ
デフォルト値
プロパティのデフォルト値。
いいえ
^

__P

これは、コマンド ラインで定義されたプロパティで使用することを目的とした簡略化されたプロパティ関数です。__property関数とは異なり、変数に値を保存するオプションはなく、デフォルト値が指定されていない場合は 1 と見なされます。値 1 が選択されたのは、ループなどの一般的なテスト変数に有効であるためです。スレッド数、ランプアップなど

例えば:

プロパティ値を定義します。

jmeter -Jgroup1.threads=7 -Jhostname1=www.realhost.edu
値をフェッチします:
${__P(group1.threads)} - group1.threadsの値を返します
${__P(group1.loops)} - group1.loopsの値を返します
${__P(hostname,www.dummy.org)上記 の例では、最初の関数呼び出しは7を返し、2 番目は1を返し、最後の関数呼び出しは www.dummy.org を返します(これらのプロパティ が定義されていない場合) 他の場所で!)

パラメータ

属性
説明
必須
プロパティ名
取得するプロパティ名。
はい
デフォルト値
プロパティのデフォルト値。省略した場合、デフォルトは " 1 " に設定されます。
いいえ
^

__ログ

ログ関数はメッセージをログに記録し、その入力文字列を返します

パラメータ

属性
説明
必須
ログに記録する文字列
文字列
はい
ログレベル
OUTERRDEBUGINFO (デフォルト)、WARNまたはERROR
いいえ
スロー可能なテキスト
空でない場合は、Throwable を作成してロガーに渡します
いいえ
コメント
存在する場合は、文字列に表示されます。ログに記録されているものを識別するのに役立ちます。
いいえ

OUTおよびERRログ レベル名は、出力をそれぞれSystem.outおよびSystem.errに送信するために使用されます。この場合、出力は常に出力されます。現在のログ設定には依存しません。

${__log(メッセージ)}
ログ ファイルに " … thread Name : Message "として書き込まれます。
${__log(メッセージ、OUT)}
コンソール ウィンドウに書き込まれる
${__log(${VAR},,,VAR=)}
「 …スレッド名VAR=値」としてログファイルに書き込まれます
^

__logn

logn 関数はメッセージをログに記録し、空の文字列を返します

パラメータ

属性
説明
必須
ログに記録する文字列
文字列
はい
ログレベル
OUTERRDEBUGINFO (デフォルト)、WARNまたはERROR
いいえ
スロー可能なテキスト
空でない場合は、Throwable を作成してロガーに渡します
いいえ

OUTおよびERRログ レベル名は、出力をそれぞれSystem.outおよびSystem.errに送信するために使用されます。この場合、出力は常に出力されます。現在のログ設定には依存しません。

${__logn(VAR1=${VAR1},OUT)}
変数の値をコンソール ウィンドウに書き込む
^

__BeanShell

BeanShell 関数は、渡されたスクリプトを評価し、結果を返します。

パフォーマンスのためには、__groovy関数を使用することをお勧めします

BeanShell の使用の詳細については、BeanShell の Web サイト ( http://www.beanshell.org/ ) を参照してください。

テストスクリプト内の関数の独立した発生ごとに異なるインタープリターが使用されますが、後続の呼び出しには同じインタープリターが使用されることに注意してください。これは、変数が関数の呼び出し間で持続することを意味します。

関数の 1 つのインスタンスを複数のスレッドから呼び出すことができます。ただし、関数execute()メソッドは同期されます。

プロパティ「beanshell.function.init」が定義されている場合、ソース ファイルの名前としてインタープリターに渡されます。これは、共通のメソッドと変数を定義するために使用できます。bin ディレクトリにサンプルの初期化ファイルがあります: BeanShellFunction.bshrc

スクリプトが実行される前に、次の変数が設定されます。

(*) は、初期化ファイルがあればそれが処理される前に設定されることを意味します。その他の変数は、呼び出しごとに異なります。

パラメータ

属性
説明
必須
BeanShell スクリプト
beanshell スクリプト (ファイル名ではない)
はい
変数名
この関数によって計算された値を再利用するための参照名。
いいえ

例:

${__BeanShell(123*456)}
56088 を返します
${__BeanShell(source("function.bsh"))}
function.bshのスクリプトを処理します

テキスト文字列とテキスト文字列を表す JMeter 変数に必要な引用符を忘れずに含めてください。
^

__グルーヴィー

__groovy関数は、渡された Apache Groovy スクリプトを評価 し結果を返します。

プロパティ「groovy.utilities」が定義されている場合、これは ScriptEngine によってロードされます。これは、共通のメソッドと変数を定義するために使用できます。binディレクトリにサンプルの初期化ファイルutility.groovyがあります。

スクリプトが実行される前に、次の変数が設定されます。

(*) は、初期化ファイルがあればそれが処理される前に設定されることを意味します。その他の変数は、呼び出しごとに異なります。

この関数を使用する場合は、文字列置換を使用してスクリプト内の変数にアクセスするのではなく、上記で定義した変数を使用してください。このパターンに従うと、Groovy を確実にキャッシュできるため、テストのパフォーマンスが向上します。

たとえば、次の ことは行わないでください。

${__groovy("${myVar}".substring(0\,2))}

変数 myVar がトランザクションごとに変更されると想像してください。スクリプトが毎回変更されるため、上記の Groovy はキャッシュできません。

代わりに、キャッシュできる次の操作を行います。

${__groovy(vars.get("myVar").substring(0\,2))}

パラメータ

属性
説明
必須
評価する式
Apache Groovy スクリプト (ファイル名ではない)
コンマを含む引数値は、必要に応じてエスケープする必要があります。パラメーター値にコンマを含める必要がある場合は、次のようにエスケープします: ' \, '
はい
変数名
この関数によって計算された値を再利用するための参照名。
いいえ

例:

${__groovy(123*456)}
56088 を返します
${__groovy(vars.get("myVar").substring(0\,2))}
var の値がJMeterの場合、 String.substring(0,2)を実行するとJMが返されます。, が\,にエスケープされていること注意してください。

テキスト文字列とテキスト文字列を表す JMeter 変数に必要な引用符を忘れずに含めてください。
^

__スプリット

split 関数は、渡された文字列を区切り文字に従って分割し、元の文字列を返します。区切り文字が隣接している場合、値として「?」が返されます。分割された文字列は変数${VAR_1}${VAR_2}などで返されます。変数の数は${VAR_n}で返されます。末尾の区切り文字は欠落変数として扱われ、「?」が返されます。また、ForEach コントローラーとの連携を向上させるために、 __ split は、以前の分割によって設定された場合に備えて、最初の未使用の変数を削除するようになりました。

例: テスト計画で VAR =" a||c|
" を 定義します。
${__split(${VAR},VAR,|)}

これはVARの内容、すなわち " a||c| " を返し、次の変数を設定します:
VAR_n = 4
VAR_1 = a
VAR_2 = ?
VAR_3 = c
VAR_4 = ?
VAR_5 = null

パラメータ

属性
説明
必須
分割する文字列
" a|b|c "などの区切り文字列
はい
変数名
この関数によって計算された値を再利用するための参照名。
はい
デリミタ
|などの区切り文字。. 省略した場合は,が使用されます。, は\,として指定する必要があること注意してください。
いいえ
^

__XPath

XPath 関数は XML ファイルを読み取り、XPath と照合します。関数が呼び出されるたびに、次の一致が返されます。ファイルの最後で、先頭に戻ります。一致するノードがない場合、関数は空の文字列を返し、警告メッセージが JMeter ログ ファイルに書き込まれます。

NodeList 全体がメモリに保持されることに注意してください。

例:
${__XPath(/path/to/build.xml, //target/@name)}
これはbuild.xml のすべてのターゲットに一致し、次の name 属性の内容を返します

パラメータ

属性
説明
必須
解析する XML ファイル
解析する XML ファイル
はい
XPath
XML ファイル内のノードに一致する XPath 式
はい
^

__setProperty

setProperty 関数は、JMeter プロパティの値を設定します。関数からのデフォルトの戻り値は空の​​文字列であるため、関数呼び出しは関数が有効な場所ならどこでも使用できます。

オプションの 3番目のパラメータを「true 」に設定すると、元の値を返すことができます。

プロパティは JMeter に対してグローバルであるため、スレッドとスレッド グループ間の通信に使用できます

パラメータ

属性
説明
必須
プロパティ名
設定するプロパティ名。
はい
プロパティ値
プロパティの値。
はい
真/偽
元の値を返す必要がありますか?
いいえ
^

__時間

time 関数は、現在の時刻をさまざまな形式で返します。

パラメータ

属性
説明
必須
フォーマット
SimpleDateFormat に渡される形式。この関数は、さまざまな省略形のエイリアスをサポートしています。以下を参照してください。省略した場合、関数はエポックからの現在の時間をミリ秒単位で返します。
いいえ
変数名
設定する変数の名前。
いいえ

フォーマット文字列が省略されている場合、関数はエポックからの現在の時間をミリ秒単位で返します。形式が " /ddd " (ここで、dddは 10 進数) と一致する場合、関数はミリ秒単位の現在の時刻をdddの値で割った値を返します。たとえば、「/1000」はエポックからの現在の時間を秒単位で返します。それ以外の場合、現在の時刻が SimpleDateFormat に渡されます。次の短縮エイリアスが提供されています。

  • YMD = yyyyMMdd
  • HMS = HHmmss
  • YMDHMS = yyyyMMdd-HHmmss
  • USER1 = JMeter プロパティtime.USER1に含まれるもの
  • USER2 = JMeter プロパティtime.USER2に含まれるもの

デフォルトは、 time.YMD=yyMMddなどの適切な JMeter プロパティを設定することで変更できます 。

${__time(dd/MM/yyyy,)}
2018 年 1 月 21 日に実行された場合、21 /01/ 2018 を返します

${__time(YMD,)}
2018 年 1 月 21 日に実行された場合、20180121 が返されます。

${__time()}
時間をミリ秒で返します1516540541624

^

__jexl2

jexl 関数は、 Commons JEXL 式を評価した結果を返します。JEXL 式の詳細については、以下のリンクを参照してください。

__jexl2関数は Commons JEXL 2 を使用します

パラメータ

属性
説明
必須
表現
評価される式。たとえば、6*(5+2)
はい
変数名
設定する変数の名前。
いいえ

次の変数がスクリプトで使用可能になります。

  • log -関数のロガー
  • ctx - JMeterContextオブジェクト
  • vars - JMeterVariablesオブジェクト
  • props - JMeterProperties (クラスjava.util.Properties ) オブジェクト
  • threadName - 現在のスレッド名を含む文字列
  • sampler - 現在のSamplerオブジェクト (存在する場合)
  • sampleResult - 以前のSampleResultオブジェクト (存在する場合)
  • OUT - System.out - 例: OUT.println("message")

Jexl は、クラスを作成してそれらのメソッドを呼び出すこともできます。次に例を示します。

Systemclass=log.class.forName("java.lang.System");
now=Systemclass.currentTimeMillis();
Web サイトの Jexl ドキュメントでは、" div " が整数除算を行うと誤って示唆されていることに注意してください。実際、「div」と「/」はどちらも通常の除算を実行します。次のようにして同じ効果を得ることができます。
i = 5 / 2;
i.intValue(); // または i.longValue() を使用

JMeter では、式に複数のステートメントを含めることができます。
^

__jexl3

jexl 関数は、 Commons JEXL 式を評価した結果を返します。JEXL 式の詳細については、以下のリンクを参照してください。

__jexl3関数は Commons JEXL 3 を使用します

パラメータ

属性
説明
必須
表現
評価される式。たとえば、6*(5+2)
はい
変数名
設定する変数の名前。
いいえ

次の変数がスクリプトで使用可能になります。

  • log -関数のロガー
  • ctx - JMeterContextオブジェクト
  • vars - JMeterVariablesオブジェクト
  • props - JMeterProperties (クラスjava.util.Properties ) オブジェクト
  • threadName - 現在のスレッド名を含む文字列
  • sampler - 現在のSamplerオブジェクト (存在する場合)
  • sampleResult - 以前のSampleResultオブジェクト (存在する場合)
  • OUT - System.out - 例: OUT.println("message")

Jexl は、クラスを作成してそれらのメソッドを呼び出すこともできます。次に例を示します。

Systemclass=log.class.forName("java.lang.System");
now=Systemclass.currentTimeMillis();
Web サイトの Jexl ドキュメントでは、" div " が整数除算を行うと誤って示唆されていることに注意してください。実際、「div」と「/」はどちらも通常の除算を実行します。次のようにして同じ効果を得ることができます。
i = 5 / 2;
i.intValue(); // または i.longValue() を使用

JMeter では、式に複数のステートメントを含めることができます。
^

__V

V (変数) 関数は、変数名の式を評価した結果を返します。これは、ネストされた変数参照 (現在サポートされていません) を評価するために使用できます。

たとえば、変数A1A2、およびN = 1がある場合:

  • ${A1} - 正常に動作します
  • ${A${N}} - 機能しません (ネストされた変数参照)
  • ${__V(A${N})} - 正常に動作します。A${N}A1になり、__V関数はA1の値を返します

パラメータ

属性
説明
必須
変数名
評価される変数。
はい
デフォルト値
変数が見つからない場合のデフォルト値。空で変数が見つからない場合、関数は変数名を返します。
いいえ
^

__evalVar

evalVar 関数は、変数に格納された式を評価した結果を返します。

これにより、ファイルから文字列を読み取り、その中の変数参照を処理できます。たとえば、変数 " query " が " select ${column} from ${table} " を含み、" column " と " table " が " name " と " customers " を含む場合、${__evalVar(query)} は次のように評価されます。 「お客様から名前を選ぶ」。

パラメータ

属性
説明
必須
変数名
評価される変数。
はい
^

__eval

eval 関数は、文字列式を評価した結果を返します。

これにより、変数に格納されている文字列内の変数と関数の参照を補間できます。たとえば、次の変数があるとします。

  • 名前スミス
  • =年齢
  • テーブル=誕生日
  • SQL = name='${name}' の ${table} から ${column} を選択
${__eval(${SQL})}は 、 「 name='Smith' の誕生日から年齢を選択する」と評価されます。

これは、CSV データセットと組み合わせて使用​​できます。たとえば、SQL ステートメントと値の両方がデータ ファイルで定義されている場合です。

パラメータ

属性
説明
必須
変数名
評価される変数。
はい
^

__char

char 関数は、数字のリストを Unicode 文字として評価した結果を返します。以下の__unescape()も参照してください。

これにより、任意の文字値をフィールドに追加できます。

パラメータ

属性
説明
必須
Unicode 文字番号 (10 進数または 0xhex)
Unicode 文字に変換される 10 進数 (または0xで始まる場合は 16 進数、または0で始まる場合は 8 進数)。
はい

例:
${__char(13,10)} = ${__char(0xD,0xA)} = ${__char(015,012)} = CRLF
${__char(165)} = ¥ (円)

^

__unescape

unescape 関数は、Java エスケープ文字列を評価した結果を返します。上記の__char()も参照してください。

これにより、他の方法では GUI を介して定義するのが難しい (または不可能な) フィールドに文字を追加できます。

パラメータ

属性
説明
必須
アンエスケープする文字列
エスケープしない文字列。
はい

例:
${__unescape(\r\n)} = CRLF
${__unescape(1\t2)} = 1 [タブ] 2

^

__unescapeHtml

HTML エンティティを含む文字列をエスケープ解除する関数は、エスケープに対応する実際の Unicode 文字を含む文字列にエスケープします。HTML 4.0 エンティティをサポートします。

たとえば、文字列

${__unescapeHtml(<フランçais>)}
<Français> を返します。

エンティティが認識されない場合はそのままにして、そのまま結果文字列に挿入します。たとえば、 ${__unescapeHtml(>&zzzz;x)}>&zzzz;xを返します。

Commons Lang の StringEscapeUtils#unescapeHtml(String) を 使用します。

パラメータ

属性
説明
必須
アンエスケープする文字列
エスケープしない文字列。
はい
^

__escapeHtml

HTML エンティティを使用して String 内の文字をエスケープする関数。HTML 4.0 エンティティをサポートします。

例えば、

${__escapeHtml("パン" & "バター")}
return: 「パン」&アンプ; 「バター」.

Commons Lang の StringEscapeUtils#escapeHtml(String)を 使用します。

パラメータ

属性
説明
必須
エスケープする文字列
エスケープする文字列。
はい
^

__urldecode

application/x-www-form-urlencoded文字列 をデコードする関数。注: エンコード方式として UTF-8 を使用してください。

たとえば、文字列

${__urldecode(Word+%22school%22+is+%22%C3%A9cole%22+in+french)}
単語 「学校」はフランス語で「エコール」です。

Java クラスURLDecoderを使用します。

パラメータ

属性
説明
必須
デコードする文字列
デコードする URL エンコードされた文字を含む文字列。
はい
^

__urlencode

文字列をapplication/x-www-form-urlencoded文字 列にエンコードする関数。

たとえば、文字列

${__urlencode(単語「学校」はフランス語で「エコール」です)}
Word+%22school%22+is+%22%C3%A9cole%22+in+french を返し ます。

Java クラスURLEncoderを使用します。

パラメータ

属性
説明
必須
エンコードする文字列
URL エンコードされた文字でエンコードする文字列。
はい
^

__FileToString

FileToString 関数を使用して、ファイル全体を読み取ることができます。呼び出されるたびに、ファイル全体を読み取ります。

ファイルのオープンまたは読み取りでエラーが発生した場合、関数は文字列 " **ERR** "を返します。

パラメータ

属性
説明
必須
ファイル名
ファイル名へのパス。(パスは、JMeter 起動ディレクトリからの相対パスにすることができます)
はい
プラットフォームのデフォルトでない場合のファイル エンコーディング
ファイルの読み取りに使用されるエンコーディング。指定しない場合、プラットフォームのデフォルトが使用されます。
いいえ
変数名
この関数によって作成された値を再利用するため の参照名 ( refName )。格納された値は${refName}の形式です。
いいえ

関数が実行されるたびに、ファイル名、エンコード、および参照名のパラメーターが解決されます。

^

__samplerName

samplerName 関数は、現在のサンプラーの名前 (ラベル) を返します。

この関数は、サンプラーが関連付けられていないテスト要素では機能しません。たとえば、テスト計画。構成要素には、関連付けられたサンプラーもありません。ただし、一部の構成要素は、HTTP ヘッダー マネージャーや Http Cookie マネージャーなどのサンプラーによって直接参照されます。この場合、関数は Http サンプラーのコンテキストで解決されます。プリプロセッサ、ポストプロセッサ、およびアサーションには、常にサンプラーが関連付けられています。

例:

${__samplerName()}

パラメータ

属性
説明
必須
変数名
この関数によって作成された値を再利用するため の参照名 ( refName )。格納された値は${refName}の形式です。
いいえ
^

__TestPlanName

TestPlanName 関数は、現在のテスト計画の名前を返します (プランを含めるで使用して、呼び出し元のテスト計画の名前を知ることができます)。

例:

${__TestPlanName}
は、テスト計画のファイル名を返します。たとえば、計画が Demo.jmx という名前のファイルにある場合、「Demo.jmx 」が返されます。

^

__escapeOroRegexpChars

ORO Regexp メタ文字をエスケープする関数。Java Regexp Engine の\Q \Eに相当します。

例えば、

${__escapeOroRegexpChars([^"].+?,)}
戻り値: \[\^\"\]\.\+\? .

ORO の Perl5Compiler#quotemeta(String) を使用します。

パラメータ

属性
説明
必須
エスケープする文字列
エスケープする文字列。
はい
変数名
この関数によって作成された値を再利用するため の参照名 ( refName )。格納された値は${refName}の形式です。
いいえ
^

__escapeXml

XML 1.0 エンティティを使用して String 内の文字をエスケープする関数。

例えば、

${__escapeXml("パン" & 'バター')}
戻り値: 「パン」&アンプ; 「バター」.

Commons Lang の StringEscapeUtils#escapeXml10(String) を 使用します。

パラメータ

属性
説明
必須
エスケープする文字列
エスケープする文字列。
はい
^

__timeShift

timeShift 関数は、指定された秒数、分数、時間数、日数、または月数を加算して、指定された形式で日付を返します。

パラメータ

属性
説明
必須
フォーマット
DateTimeFormatter に渡される形式。DateTimeFormatterを参照してください 。省略した場合、関数はエポック形式からのミリ秒を使用します。
いいえ
シフトする日
パラメータ'Format'で設定されたフォーマットで日付を指定してシフトします省略した場合、日付は現在に設定されます
いいえ
シフトする値
PnDTnHnMn.nS. https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html#parse-java.lang.CharSequence- を参照してください。
  • PT20.345Sは 20.345 秒として解析されます
  • PT15Mは 15 分として解析されます
  • PT10Hは 10 時間として解析されます
  • P2Dは 2 日として解析されます
  • -P6H3Mは -6 時間と -3 分として解析されます
いいえ
フォーマットに使用するロケール
ロケールの文字列形式。言語コードは小文字でなければなりません。国コードは大文字でなければなりません。セパレーターはアンダースコアでなければなりません。例: en_EN http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html を参照してください。省略した場合、関数はデフォルトで ApacheJMeter ロケールを使用します。
いいえ
変数名
設定する変数の名前。
いいえ

例:

${__timeShift(dd/MM/yyyy,21/01/2018,P2D,,)}
2018 年 1 月 23 日を返します
${__timeShift(dd MMMM yyyy,2018 年 2 月 21 日,P2D,fr_FR,)}
返品2018 年 2 月 23 日

^

__ダイジェスト

ダイジェスト関数は、オプションのソルト、大文字、および変数名を使用して、特定のハッシュ アルゴリズムで暗号化された値を返します。

パラメータ

属性
説明
必須
アルゴリズム
暗号化に使用されるアルゴリズム 可能なアルゴリズムについては、 StandardNamesの MessageDigest を参照してください
  • MD2
  • MD5
  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
追加するSaltエンコードする文字列ではスペースが考慮されます
はい
エンコードする文字列
暗号化される文字列
はい
加える塩
文字列に追加する塩 (その後)
いいえ
大文字の値
結果はデフォルトで小文字になります。大文字の結果に当てはまるものを選択します。
いいえ
変数名
設定する変数の名前。
いいえ

例:

${__digest(MD5,Errare humanum est,,,)}
c49f00b92667a35c63708933384dad52 を返します
${__digest(SHA-256,Felix qui potuit rerum cognoscere causas,mysalt,,)}
a3bc6900fe2b2fc5fa8a601a4a84e27a079bf2c581d485009bc5c00516729ac7 を返します

^

__dateTimeConvert

__dateTimeConvert関数は、ソース形式の日付をターゲット形式に変換し、オプションで結果を変数名に格納します。

パラメータ

属性
説明
必須
日付文字列
ソース日付形式からターゲット日付形式に変換する日付文字列。Source Date Format が空の場合、エポック時間としての日付をここで使用できます。
はい
ソースの日付形式
元の日付形式。空の場合、Date String フィールドはエポック時間でなければなりません。
いいえ
目標日の形式
新しい日付形式
はい
変数名
設定する変数の名前。
いいえ

例:

${__dateTimeConvert(01212018,MMddyyyy,dd/MM/yyyy,)}
2018 年 1 月 21 日を返します

エポック時間値: 1526574881000、

${__dateTimeConvert(1526574881000,,dd/MM/yyyy HH:mm,)}
UTC 時間で17/05/2018 16:34を返します(-Duser.timezone=GMT)

^

__isPropDefined

__isPropDefined関数は、プロパティが存在する場合は true を返し、存在しない場合は false を返します。

パラメータ

属性
説明
必須
プロパティ名
定義されているかどうかを確認するために使用されるプロパティ名
はい

例:

${__isPropDefined(START.HMS)}
trueを返します

^

__isVarDefined

__isVarDefined関数は、変数が存在する場合は true、存在しない場合は false を返します。

パラメータ

属性
説明
必須
変数名
定義されているかどうかを確認するために使用される変数名
はい

例:

${__isVarDefined(JMeterThread.last_sample_ok)}
trueを返します

^

__changeCase

大文字小文字の変更関数は、特定のモードに従って大文字小文字が変更された文字列値を返します。結果は、必要に応じて JMeter 変数に保存できます。

パラメータ

属性
説明
必須
大文字と小文字を変更する文字列
大文字と小文字が変更される文字列
はい
ケースモードの変更
大文字と小文字を変更するために使用されるモード。たとえば、ab-CD eF の場合:
  • AB-CD EF としてのUPPER結果
  • ab-cd edとしてのLOWER結果
  • 結果をAb-CD eFとしてCAPITALIZE
大文字と小文字の変更モードでは大文字と小文字が区別されません
はい
変数名
設定する変数の名前。
いいえ

例:

${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil,UPPER,)}
AVARO OMNIA DESUNT、INOPI PAUCA、SAPIENTI NIHILを返します
${__changeCase(LABOR OMNIA VINCIT IMPROBUS,LOWER,)}
レイバー オムニア ヴィンシット インプロバスを返します
${__changeCase(omnibus viis romam pervenitur,CAPITALIZE,)}
Omnibus viis romam perveniturを返します

^

__StringToFile

__StringToFile関数を使用して、文字列をファイルに書き込むことができます呼び出されるたびに、文字列をファイルに追加または上書きして書き込みます。

関数からのデフォルトの戻り値は空の​​文字列です

パラメータ

属性
説明
必須
ファイルへのパス
ファイル名へのパス (絶対パス)
はい
書き込む文字列
ファイルに書き込む文字列。
コンテンツに改行を挿入する必要がある場合は、文字列で\nを使用します。
はい
ファイルに追加しますか?
文字列の書き方で、trueは追加、false は上書きを意味します。指定しない場合、デフォルトの追加はtrueです。
いいえ
UTF-8 でない場合のファイル エンコーディング
ファイルへの書き込みに使用されるエンコーディング。指定しない場合、デフォルトのエンコーディングはUTF-8です。
いいえ
^

20.6 事前定義された変数

ほとんどの変数は、関数を呼び出すか、ユーザー定義変数などのテスト要素によって設定されます。この場合、ユーザーは使用される変数名を完全に制御できます。ただし、一部の変数は JMeter によって内部的に定義されています。これらを以下に示します。

  • COOKIE_cookiename - Cookie 値が含まれます ( HTTP Cookie Managerを参照)
  • JMeterThread.last_sample_ok - 最後のサンプルが OK であったかどうか - true / false。注: これは PostProcessors と Assertions が実行された後に更新されます。
  • START変数 (次のセクションを参照)

20.6 事前定義されたプロパティ

JMeter プロパティのセットは、JMeter の起動時に定義されたシステム プロパティから初期化されます。追加の JMeter プロパティは、jmeter.propertiesuser.propertiesまたはコマンド ラインで定義されます。

一部の組み込みプロパティは、JMeter によって定義されます。これらを以下に示します。便宜上、STARTプロパティも同じ名前の変数にコピーされます。

  • START.MS - ミリ秒単位の JMeter 開始時間
  • START.YMD - yyyyMMddとしての JMeter 開始時刻
  • START.HMS - HHmmssとしての JMeter 開始時間
  • TESTSTART.MS - ミリ秒単位のテスト開始時間

START変数/プロパティは、テストの開始時刻ではなく、JMeter の起動時刻を表す ことに注意してください。これらは主にファイル名などで使用することを目的としています。

Go to top