2

WebアプリケーションでPOSTアクションの1つの負荷テストを実行したいと思います。問題は、POSTデータで一意の電子メールアドレスを受信した場合にのみアクションを完了できることです。次のように、それぞれが固有の電子メールを含む数千のリクエストを含むwcatスクリプトを生成しました。

 transaction                        
  {                                  
    id = "1";     
    weight = 1;
    request 
    { 
        verb = POST; postdata = "Email=test546546546546%40loadtest.com&..."; 
        setheader { name="Content-Length"; value="..."; 
    } 
    // more requests like that
  }

私のUBR設定ファイルは次のようなものです。

settings
{
    counters
    {
        interval = 10;
        counter = "Processor(_Total)\\% Processor Time";
        counter = "Processor(_Total)\\% Privileged Time";
        counter = "Processor(_Total)\\% User Time";
        counter = "Processor(_Total)\\Interrupts/sec";
    }
    clientfile     = "<above-wcat-script>";
    server         = "<host name>";
    clients        = 3;
    virtualclients = 100;
}

テストを実行すると、3x100 = 300のクライアントがリクエストの送信を開始しますが、同じ順序で送信しているため、最初のクライアントからの最初のリクエストが処理され、他のクライアントからの次の299のリクエストは一意ではなくなります。次に、あるクライアントからの2番目の要求が処理され、他のクライアントからの299個の同一の要求は一意ではありません。リクエストをランダム化するか、異なる順序で実行するか、仮想クライアントごとに個別のシナリオスクリプトを設定して、各リクエストに一意の電子メールアドレスを含める方法が必要です。WCATでそれを行うことは可能ですか?

それとも、そのようなテストを実行できる他のツールがありますか?

4

1 に答える 1

3

rand(x,y)WCAT内部関数を使用して、ランダム化された整数を電子メールアドレスに追加することを検討しましたか?そうすることで、ランダム化された電子メールアドレスを使用する単一のリクエストで単一のトランザクションを実行できると考えられます。したがって、一意の電子メールアドレスを使用して(たとえば)1000の要求を手動で作成する代わりに、単一のランダム化されたトランザクションを1000回使用できます。

新しいランダム化されたトランザクションは次のようになります。

transaction                        
  {                                  
    id = "1";     
    weight = 1;
    request 
    { 
        verb = POST;
        postdata = "Email=" + rand("100000", "1000000") + "@loadtest.com&...";
        setheader { name="Content-Length"; value="...";
    } 
  } 

使用rand(x,y)しても十分にランダムにならない場合は、追加の関数を使用してデータをよりランダムにすることを試すことができます。おそらくこのようなもの:

postdata = "Email=" + rand("100000", "1000000") + "@loadtest" + clientindex() + vclientindex() + ".com&...";

利用可能な内部機能のリストを含む、WCAT6.3のドキュメントはここにあります。組み込み関数では不十分な場合は、独自の関数を作成することもできます。

于 2013-11-28T05:53:13.343 に答える