2015-10-27 34 views
1

我們有一個JMeter腳本,從頭到尾運行大約1分鐘。它使用用戶CSV文件來獲取用戶登錄ID。我們的目標是爲900個虛擬用戶運行腳本20分鐘。我們決定每個用戶2s是一個很好的加速時間。在用戶CSV文件中迭代 - 是否會產生任何問題?

爲了避免JMeter出現瓶頸,我們建立了6個JMeter從站,並決定將150個用戶分開。現在,每個從屬Jmeter機器都擁有自己獨特的300個用戶列表。

但是我們關心的是:爲了允許腳本在加速後運行20分鐘(900 VU * 2秒/用戶= 1800秒= 30分鐘),我們需要執行腳本50分鐘。所以,我們決定迭代腳本50次。現在,這將重複使用相同的用戶ID,我們認爲在某些時候,不同的用戶線程將使用相同的用戶(用戶ID)。

有沒有辦法避免這種情況?我知道我們可以爲每個從屬設備提供一個非常長的獨特用戶列表(例如,每個JMeter從屬設備有4000個獨立用戶,而不是300個),並確保沒有兩個線程使用相同的用戶ID,但創建這麼多用戶是一項挑戰。

其他建議?

兩個會分享會話嗎?實際上,如果我在瀏覽器的兩個不同選項卡中使用同一用戶登錄,則從一個選項卡註銷,會自動將我從另一個選項卡註銷。但是JMeter therads會發生什麼?

我希望我的問題對你有意義,如果沒有,我表示歉意。

謝謝。

+0

您是否已將回路控制器添加到您的測試計劃中? –

+0

不,我正在通過檢查線程組中的'Forever'複選框進行迭代。要停止,我已經爲users.csv文件選擇了「在EOF上停止線程」。 –

+0

對不起,我以前的評論的最後一部分是錯誤的。無法更新:我們沒有在用戶CSV文件上使用'EOF停止線程'。我們實際上手動停止了測試。 –

回答

1

通常Web應用程序使用Cookies這麼加HTTP Cookie Manager到您的測試計劃,並具有「清除緩存每次迭代」彼此和未驗證的人

區分認證用戶選中複選框,你就可以模擬此LogIn - > Logout行爲,並能夠縮小所需的唯一用戶名/密碼組合的數量。

記住迭代是一些東西,是在Thread Group級別定義,那些由觸發即Loop Controller不會在cookie管理器清除Cookies。

+0

謝謝德米特里。我已經有了HTTP Cookie管理器,每次迭代都啓用了清除cookie。此外,從線程組迭代,沒有添加任何循環控制器。但是,由於我們通過在用戶CSV文件上的EOF上回收「永遠」運行迭代,我擔心在兩個用戶使用相同用戶標識登錄(可能性非常低)的情況下,可能會導致數據不一致在數據庫方面。無論如何,我們在每個從屬設備上將用戶列表大小增加了兩倍,以避免出現這種情況(甚至降低了可能性)。 –

+0

只需向每個奴隸提供一組獨特的用戶,那應該是 –

1

只要每個線程花費大致相同的時間,Dmitri T的答案就可以工作。有幾個線程可能會很快完成,特別是如果您在出錯時設置了「啓動下一個線程循環」。理論上你的情況是可能的,但只要你正確地管理你的Cookies,你應該沒問題。

+0

Thanks RowlandB。是的,我們應用了德米特里提到的技術。每個從屬設備中唯一用戶列表的大小也增加了兩倍,以避免出現這種情況。 –

相關問題