2012-07-17 41 views
2

我想在我的web應用程序中運行一個POST動作的負載測試。問題是,只有在POST數據中收到唯一的電子郵件地址時,才能完成操作。我產生有幾千WCAT腳本要求每個都有唯一的電子郵件,如:加載測試隨機:如何設置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; 
} 

當我運行測試3×100 = 300個客戶開始發送請求,但他們按照相同的順序進行處理,以便處理來自第一個客戶端的第一個請求,然後來自其他客戶端的下一個299請求不再是唯一的。然後處理來自某個客戶端的第二個請求,來自其他客戶端的299個相同請求不是唯一的。 我需要一種隨機化請求或按不同順序運行它們的方法,或者爲每個虛擬客戶端設置不同的腳本腳本,以便每個請求攜帶唯一的電子郵件地址。 WCAT可以做到嗎?

或者也許有其他工具可以做這樣的測試?

回答

3

您是否考慮過使用WCAT內部函數rand(x,y)將隨機整數添加到電子郵件地址?通過這樣做,您可以設想使用隨機電子郵件地址進行單個請求的單個請求。因此,而不是手動創建(例如)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&..."; 

您可以find the WCAT 6.3 documentation here,其中包括可用的內部功能列表。如果內置函數不夠用,你甚至可以自己構建。

+1

這就是我正在尋找的。 – PanJanek 2013-11-28 12:18:09

+1

使用rand(),clientindex()和vclientindex也做了一些小改動, rand()中的數字應該是這樣的字符串:「rand(」100000「,」1000000「)'。出於某種原因,我花了一個小時才弄明白這一點。 – 2014-03-27 14:00:45

+0

@DJvanWyk,感謝您在rand()函數中注意到缺少的引號。我已經糾正了我答案中的錯誤。 – 2014-03-27 17:22:40

相關問題