2015-11-25 27 views
0

我有一個JMeter的測試計劃具有以下結構替代在JMeter的使用CSV(用於生成用戶名)

Test Plan 

**ThreadGroup1** 
--CSV Data Config-001 
----SimpleController 
--------------LoginRequest 
--------------Action-abc-Request 

**ThreadGroup2** 
--CSV Data Config-002 
----SimpleController 
--------------LoginRequest 
--------------Action-xyz-Request 

我有一個包含用戶喜歡這樣的列表中有兩個CSV文件..

**CSV-001** 
Username1 
Username2 
.. .. 
Username50 

**CSV-002** 
Username51 
Username52 
.. .. 
Username100 

在我的場景中,我需要運行負載測試,比方說100個用戶。 50個用戶從ThreadGroup1登錄,其他50個用戶從ThreadGroup2登錄。來自兩個線程組的用戶同時登錄。

目前,我必須通過手動創建/編輯這些CSV文件的過程來更改總用戶數。

請建議是否有任何替代節省時間&性能高效通過我可以滿足我的方案要求(不使用CSV文件)的方法。

我會很感激,如果你能解釋一些細節的替代解決方案,因爲我對JMeter的東西很陌生。謝謝。

+0

此外,有人可以評論使用CSV的任何其他方法可能的性能好處嗎?爲什麼我看到大多數人只用它? – AMfromNBS

回答

0

另一個想法是使用

Username${__threadNum}

用於第一線程組和

Username${__BeanShell(ctx.getThreadNum()+Z+1)}

用於第二,其中Z等於在線程組1的線程的總數。您還需要添加1,因爲ctx.getThreadNum()使用基於0的索引返回線程號,而__threadNum函數基於1。

+0

我使用了你以前的解決方案(與Synchronizing定時器),它爲我工作很好。我更喜歡你的這個解決方案,因爲它進一步簡化了事情。但我對這個解決方案有一個小問題。 」。第二個函數中的getThreadNum()返回第一個線程的「0」值,因此我得到的實際上是從ThreadGroup1執行動作的用戶名。你能否建議一種解決方法? – AMfromNBS

+0

例如,如果我爲ThreadGroup2配置了3個用戶,併爲ThreadGroup2配置了3個用戶。然後結果是這樣的...用戶名1,用戶名2和用戶名3用於ThreadGroup1。用於ThreadGroup2的username3,username4和username5。 [USERNAME3正在登錄兩次]。 – AMfromNBS

+0

我更新了上面的答案,以便現在可以使用ThreadGroup2。 – JusMe

0

您可以在每個線程中使用計數器。第一個線程中計數器的起始值爲1,在第二個線程中爲1.請確保未選中「爲每個用戶獨立跟蹤計數器」複選框。

如果分別設置基準名稱thread1Count和thread2Count,您可以使用

Username${thread1Count} 

第一個線程和

用戶名$ {} thread2Count

第二。

+0

JusMe,謝謝你的回答。我已經嘗試過這種解決方案,即使它可以工作,但我觀察到使用此方法執行請求的模式有一些變化(與使用CSV相比)。 當我使用CSV運行JMeter腳本時,幾乎同時執行所有登錄請求,時間間隔很小。而對於計數器,請求執行的模式是循環中的一種。例如,如果一個線程組中有5個請求,那麼請求執行的順序就像這樣。1)user1 - 5個請求2)user2 - 5個請求等等。 – AMfromNBS