2013-05-22 32 views
6

変数uuidを数回使用するJmeterスレッドグループがあります。複数スレッドのJmeterランダム変数

UUIDは言い換えれば12345678-1234-4444-a123-${__Random(111111111111,999999999999)}

で定義され、それが固定されたシリーズ12345678-1234-4444-a123-で始まり、その後、最後の12個の文字をランダム化します。 スレッドグループ内のユーザー定義変数としてuuidを定義すると、一度ランダム化されてから、すべてのスレッドに対してその値が使用されます。 グローバルに設定すると、同じことが起こります。

私は完了時に同時に何千ものスレッドを実行するので、私は手動の解決策やディスクへの読み書きはできません。

誰もこの経験がありますか? 私はドキュメントとGoogleをかなり長い間使っていますが、解決策を見つけることはできません。

簡潔に言えば、変数をランダム化し、その変数をスレッドグループ全体で使用し、このスレッドグループをいくつかの同時スレッドで実行する必要があります。変数は、それぞれのスレッドで異なるランダム化された値を持つ必要があります。

答えて

18

あなたは単に代わりRandom Variable構成要素を使用することができると仮定:

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 
     ... 
    ... 

上記で与えられたスキーマの実装サンプルスクリプト:Random VariableRandom Seedフィールドの説明1としてrnd-var.jmx


デフォルトはミリ秒単位で現在の時刻です。スレッドごとの同じシード の値をtrueに設定すると、 earchスレッドの値はRandomクラスごとになります。

ランダムの2つのインスタンスが同じシードで作成され、同じメソッド呼び出しのシーケンスがそれぞれ行われた場合、それらは生成され、 は同じ番号のシーケンスを返します。

同時実行性の高いシナリオ(コメントで後述)を実装する場合は、念頭に置いてください。 この問題を解決するには、たとえばSeed for Random functionフィールドの値として${__Random(MIN,MAX)}

+1

Brilliant @Alies Belik ...しかし、私はループコントローラを使用していて、サンプラーは異なりません。フローは次のとおりです。 1.スレッドグループ 1.1ループカウンタ 1.1.1 SOAPリクエスト どこでランダム変数を配置しますか? –

+1

ランダム変数を使用して、スレッド(ユーザー)ごとに定義済みのリストから文字列を選択することもできます。私はそれを使って、各仮想ユーザの検索キーワードをランダムに選択しました。私はコンマで区切られたキーワードのリストを持つ変数を作成し、min値が0で最大値が '$ {__ javaScript( '$ {search.keywords}'、split( '\、'))のスレッドグループ内にランダム変数を作成しました。 -1;)} 'を作成し、変数keyword.indexに保存します。私がランダムに選択したキーワードを使用したい場所では、 '$ {__ javaScript( '$ {search.keywords}')を使用します。split( '\、')[$ {keyword.index}];}}' – Cvuorinen

+1

これを使用していましたが、まだいくつかのスレッドが同じ値を取得していることを通知しました。スレッドが同時に開始され、ランダムな値が同じミリ秒で生成され、スレッドがミリ秒単位でランダムなベースと同じ値を取得するため、それが前提です。その周りの任意のヒント? –

関連する問題