変数uuid
を全体で数回使用するJmeterスレッドグループがあります。
uuid
は12345678-1234-4444-a123-${__Random(111111111111,999999999999)}
で定義されます
つまり、固定シリーズ12345678-1234-4444-a123-
で始まり、最後の12文字をランダム化します。
複数のスレッドを同時に実行したいのですが、これにより次の問題が発生します。
スレッドグループ内のユーザー定義変数としてuuid
を定義すると、ランダム化が1回行われ、その値がすべてのスレッドに使用されます。グローバルに設定すると、同じことが起こります。
完了したら、同時に何千ものスレッドを実行するため、手動による解決策やディスクへの読み取り/書き込みを行うことはできません。
誰かがこれを経験したことがありますか?私はかなり長い間ドキュメントとGoogleを調べてきましたが、解決策を見つけることができないようです。
つまり、変数をランダム化し、その変数をスレッドグループ全体で使用し、このスレッドグループを複数の同時スレッドで実行する必要があります。変数は、スレッドごとに異なるランダム化された値を持つ必要があります。
代わりに 確率変数 構成要素を使用できると仮定します。
_Variable Name: uuid
Output Format: 12345678-1234-4444-a123-000000000000
Minimum Value: 111111111111
Maximum Value: 999999999999
Per Thread (User): True
_
生成された値
${uuid}
_としてアクセスできます。_Test Plan
Thread Group
Random Variable
...
Sampler 1
Sampler 2
...
_
例えば.
_
iteration: 1
thread: 1
sampler 1: VALUE_1-1
sampler 2: VALUE_1-1
...
thread: 2
sampler 1: VALUE_2-1
sampler 2: VALUE_2-1
...
...
iteration: 2
thread: 1
sampler 1: VALUE_1-2
sampler 2: VALUE_1-2
...
thread: 2
sampler 1: VALUE_2-2
sampler 2: VALUE_2-2
...
...
_
上記のスキーマ用に実装されたサンプルスクリプト: rnd-var.jmx
確率変数 の_Random Seed
_フィールドの説明に従って:
デフォルトは、ミリ秒単位の現在の時刻です。 Per Threadをtrueに設定して同じシード値を使用すると、earchThreadに対してRandomクラスと同じ値が得られます。
ランダムの2つのインスタンスが同じシードで作成され、それぞれに対して同じメソッド呼び出しのシーケンスが行われる場合、それらは同じ番号のシーケンスを生成して返します。
同時実行性の高いシナリオを実装する場合は、以下のコメントで説明するように注意してください。この問題を克服するために、たとえば、ランダム化シードを使用できます。 _Seed for Random function
_フィールドの値としての${__Random(MIN,MAX)}
。
置くだけ
12345678-1234-4444-a123-${__Random(111111111111,999999999999)}
必要な場所にインラインで。
これをUDVコンポーネントに入れると、スレッドが開始される前に、値が1回だけ割り当てられます。 jmeterのドキュメントによると、動作は問題ありません。よくお読みください。