Jmeter入門②——壓力測試
目錄
前言
壓力測試是通過確定一個系統的瓶頸或者不能接受的效能點,來獲得系統能提供的最大服務級別的測試。應用在客戶端效能測試的目的是考察客戶端應用的效能,測試的入口是客戶端。對應剛入門的我們來說,暫且主觀一點斷章取義就是併發效能測試。
壓力測試,我們首先需要了解下壓力測試的指標以及目標。主要是吞吐量、響應實踐、錯誤率。
-
吞吐量:官方定義是【吞吐量是指對網路、裝置、埠、虛電路或其他設施,單位時間內成功地傳送資料的數量(以位元、位元組、分組等測量)】。對應壓測來說,就是每秒鐘系統能夠處理的請求數、任務數。
-
響應時間:官網定義是【響應時間指使用者發出請求或者指令到系統做出反應(響應)的時間。】。我們可以理解為服務處理一個請求或一個任務的耗時
-
錯誤率:一批請求中結果出錯的請求所佔比例。
壓測中,我們先回從需求中得到這些指標的目標值,然後我們壓測的時候就設定相應的指標慢慢增加、達到、超過這些目標值來進行測試(設計測試用例),來分析系統是否符合系統要求。這些後面我們介紹操作的時候也會簡單介紹這幾個指標在Jmeter裡面是怎麼設定的。
操作
(一)介面文件
簡單起見,我們就用一個add介面進行測試。可以把它想作是一個申請介面,主要是功能其實就是新增一條客戶申請資訊。
(二)新增執行緒組
(1)選擇測試計劃,右鍵【新增-執行緒-執行緒組】;
初學者可以先對這些引數的作用有個大概瞭解,如果看不懂也暫且不必深究。後面慢慢實踐起來就能知道這些引數的具體意義了。
- 在取樣器錯誤後要執行的操作:平時很少用到,預設都選擇【繼續】。
繼續:如果取樣器裡的執行出現錯誤失敗的時候,請求不會停止,繼續執行。
啟動下一程序迴圈: 忽略錯誤,執行緒當前迴圈錯誤,執行下一個迴圈。
停止執行緒 :只限當前執行緒停止,不影響其他執行緒執行
停止測試 :當前執行的執行緒全部執行完畢後結束
立即停止測試: 立刻停止
- 執行緒數:顧名思義,就是執行緒個數,即併發執行緒個數。可以理解為使用者數,就是有多少個人同時訪問某一個HTTP請假(介面)。
- Ramp-Up時間(秒):執行緒啟動開始執行的時間間隔,單位秒。即所有執行緒在多長時間內全部啟動。例如執行緒60個,Ramp-Up 時間設定為20s,那麼每秒啟動60/20=3個執行緒,不填寫預設設定為0,即所有執行緒在開啟場景後立即啟動。
- 迴圈次數:勾選【永遠】,將一直執行,除非手動停止或崩潰。如執行緒數為1,迴圈2次,即一個人一直調2次這個/這些請求。
- 延遲建立執行緒到需要:預設不勾選,是指不需要延遲建立執行緒,預設執行時就建立。勾選之後即延遲建立執行緒,到需要的時候再建立。我暫且也還不算很瞭解這個引數的用法。以下是其他說法,可以參考以下:延時建立執行緒直到該執行緒需要取樣時。勾選,例如50個執行緒Ramp-Up Period為10s,那麼每隔1s啟動50/10=5個執行緒並執行下面的請求(狀態為running);不勾選,測試計劃開始後啟動所有執行緒(狀態為new),但是不立即執行下面的請求。例如50個執行緒Ramp-Up Period為10s,那麼計劃開始後所有執行緒全部就緒,但第一秒只有5個執行緒開始執行請求。實際應用中選擇哪種都可以,不影響測試結果。——【來源:https://blog.csdn.net/qingdiao/article/details/80995290】
- 排程器配置:勾選則可配置【持續時間(秒)】、【啟動延遲(秒)】
- 持續時間(秒 ):持續時間,測試計劃持續多長時間。——只針對迴圈次數為【永遠】時有效;
- 啟動延遲(秒):啟動延時。點選啟動按鈕後,僅初始化場景,不執行執行緒,等待延時時間到才執行。
(2)設定執行緒組的引數。當然我們也可以先把後面的步驟先做好了再返回來改。這都是無關緊要的。
如下:設定執行緒數=10;Ramp-Up時間(秒)=3,迴圈次數=2;意思就是我需要3秒內發起10個執行緒,每個執行緒迴圈2次。
(三)新增HTTP請求
(1)選擇執行緒組,右鍵【新增-取樣器-HTTP請求】:
(2)根據介面文件填入相關值:協議、伺服器名稱或IP、埠號、請求方法、路徑、內容編碼、訊息體資料
(3)POST請求需要新增資訊頭:選擇HTTP請求,右鍵【新增-配置元件-HTTP資訊頭管理器】:
(4)新增資訊頭引數以及傳入值(一般介面文件有明確規定)
(三)新增察看結果樹
(1)選擇測試計劃,右鍵【新增-監聽器-察看結果樹】
(四)新增聚合報告
(1)選擇測試計劃,右鍵【新增-監聽器-聚合報告】
(五)儲存、執行、察看結果樹&聚合報表
(1)察看結果樹,可以看到http請求次數、結果。
(2)聚合報告:通過聚合報告,我們可以看到我們想要的結果,包括吞吐量、錯誤率、響應時間;
Label:每個JMeter的請求的Name值。例如HTTP Request的Name。
Samples:發出請求數量。如果之前執行緒組中配置的是,執行緒數為10,迴圈次數為2,則總的數量為20.
Average:平均響應時間(單位:ms)。預設是單個請求(Request)的平均響應時間,當使用了事務處理控制器(Transaction Controller)時,也可以以事務為單位顯示平均響應時間。
Median:中位數,也就是 50% 使用者的響應時間。
90% Line、95% Line、95% Line:大部分使用者(90%、95%、99)的響應時間。因為在評估一次測試的結果時,僅僅有平均事務響應時間是不夠的。假如有一次測試,總共有10個請求被響應,其中最小響應時間為0.02秒,最大響應時間為110秒,平均事務響應時間為4.7秒。這樣平均時間就毫無意義了。
Min:最小響應時間。
最大值:最大響應時間。
Error%(錯誤率):本次測試中【出現錯誤的請求的數量/請求的總數】,就是我們之前說要關注的錯誤率。
hroughput(吞吐量):預設情況下標示每秒完成的請求數。
KB/sec:每秒從伺服器端接收到的資料量。