JMeter測試工具使用筆記
引言 (參考:http://www.importnew.com/13876.html)
JMeter使用了不同技術和協議,是一款可以進行配置和執行負載測試、效能測試和壓力測試的工具。它能夠模擬不同型別的請求,例如各種型別的資料庫,FTP, HTTP, HTTPS 或者其他的服務端應用。
最好先來了解一下如下概念:
負載測試: 這類測試使系統或者應用程式在預先設計好的極端場景下測試執行。這類測試用來評估系統或者程式在極端條件下的行為。
效能測試: 這種測試被用來檢測系統的效能表現,包括特定情況下,系統的響應能力和穩定性。
壓力測試: 這類測試通過載入更多的外部資源,並使系統元件超越其所設定的能力範圍,試圖使系統掛掉。
本人在專案測試過程中對幾個引數配置不太理解,閱讀中文資料和英文手冊後做筆記如下:
1、執行緒組Thread Group
個人翻譯:
執行緒組指定了對伺服器執行特定測試用例的使用者數。你可以線上程組介面設定模擬使用者數(即執行緒數),上升時間(用來啟動全部執行緒的時間),執行緒組啟動延遲時間,執行緒組持續時間。
執行緒數:模擬的使用者數。
Ramp-Up Period(in seconds):JMeter啟動全部執行緒的時間,設為0表示連續不間隔啟動全部執行緒。如果執行緒組的執行緒數為10,上升時間為100s,則JMeter每隔10s鍾啟動一個執行緒。
Ramp-up需要充足大以避免在啟動測試時有一個太大的工作負載,並且要充足小
以至於最後一個執行緒在第一個完成前啟動(因為會減低服務端的瞬間負載)。
一般設定ramp-up =執行緒數啟動,並上下調整到所需的。
持續時間:測試持續時間,一到時間不管測試是否結束都要結束測試。
When using the scheduler, JMeter runs the thread group until either the number of loops is reached or the duration/end-time is reached - whichever occurs first. Note that the condition is only checked between samples; when the end condition is reached, that thread will stop. JMeter does not interrupt samplers which are waiting for a response, so the end time may be delayed arbitrarily.
啟動延遲:延遲多久後執行測試。
2、定時器中的Synchronizing Timer
個人翻譯:
同步定時器的目的是阻塞執行緒,當被阻塞執行緒數達到預先設定的引數X時,這些阻塞執行緒會立刻被全部釋放。因此,同步定時器可以在執行計劃的不同時刻製造大的瞬間負載。
引數設定:
Number of Simultaneous Users to Group by:同步執行緒數,設為0等同於執行緒組的執行緒數。
Timeout in milliseconds:定時器等待超時時間,設為0則會一直等,如果阻塞執行緒數一直達不到設定值,則會無窮等。
因此,製造併發有如下方式:
1、連續方式:短時間內連續發請求(這種方式無法得知服務端的瞬間負載,因為可能第一個請求響應了最後一個請求還沒發出去),這種方式建議使用執行緒組的Ramp-Up引數實現。
2、瞬間方式:瞬間傳送多個請求(基本上可以等同服務端瞬間負載),這種方式建議使用Synchronizing Timer。