2011-12-01 134 views
7

我目前使用JMeter來每隔40秒模擬5個用戶觸發請求。我創建了100個不同的請求,但每隔40秒之後,每個用戶發出全部100個請求。我想這樣做,即每隔40秒後,每個用戶只會觸發1個請求,並且該請求必須與先前的請求不同。我想知道使用什麼樣的控制器(或其他)來實現這種情況。JMeter - 在每次迭代中觸發不同的請求

感謝

回答

13

嘗試使用Random Controller

最簡單的方法來實現您的方案:

 
Thread Group 
Number of Threads = 5 
Loop Count = N 
    . . . 
    Random Controller 
     HTTP Request 001 
     HTTP Request 002 
     HTTP Request 003 
     . . . 
     . . . 
     HTTP Request 100 
    Test Action 
    Target = Current Thread 
    Action = Pause 
    Duration = 40000 
    . . . 

這會遍歷5個線程N倍。
隨機控制器將隨機接收來自「請求池」的每一步http請求 - 所有采樣器都作爲子任務添加到隨機控制器中。
測試動作將暫停線程40秒。

更新:對於上述方案
工作說明:

Random Controller example

 
Thread Group 
Number of Threads = 5 
Ramp-Up Period = 0 
Loop Count = 10 

Constant Timer 
Thread Delay (in ms) = 40000 

你可以從這裏下載工作示例用於描述的方案:rc-plan.jmx
這個工作方式(至少對於我來說,Jmeter 2.5.1):它爲每個用戶(這裏是5個用戶)在每個步驟中隨機選擇一個來自請求池的請求(例如 - 10個請求) 10個循環)並暫停每個線程40秒(恆定時間)。

你也可以看看這個郵件存檔:Is their a way to randomize URL selection?
類似於你的情況似乎被描述爲here

...根據官方文檔「多個控制器之間的交互會產生複雜的行爲,這對於隨機控制器尤其如此。」

+0

上述設置是否會使每個線程每40秒觸發一次請求(從請求池中隨機選取一個請求)或每隔40秒觸發一次100個請求?我試了一下,它仍然每40秒發射100次。你能否寄給我一個適合你的樣本測試計劃?非常感謝您的幫助Alies – user1066568

+0

試試這個:http://www.filehat.com/en/file/27104/rc-plan-jmx.html。對我來說工作得很好(Jmeter 2.5.1)。 –

+0

非常感謝你的那個Alies。 – user1066568

6

您的另一種選擇可能是提前爲您的請求創建帶有參數的CSV文件,並使用CSV Data Set Config來對單個http請求進行參數化。

這當然取決於你的HTTP請求是多麼的不同,但如果它適合你的要求有在您的測試計劃與維護1個http請求100

的其他細節將是相同的一些潛在的獎金正如@Alies Belik所展示的那樣 - 爲您所需的線程和循環數配置一個線程組,並在最後暫停40秒時使用一個常量計時器。

相關問題