Jemeter效能測試
1.1.1. 新增執行緒組
l 右鍵“測試計劃”->“新增”->“Threads(Users)”->“執行緒組”
1.1.2. 新增“HTTP請求”
l 右鍵“執行緒組”->“新增”->“Sampler”->“HTTP請求”
l 開啟之後,填入訪問該介面所需要的引數,效果如下圖
Tips:
- 伺服器名或IP:這裡填寫服務IP地址(不帶埠),有域名的直接填寫域名
- 埠號:這裡填寫埠號,有域名的這裡為空就好。
- Timeouts(milliseconds):超時時間,單位是毫秒;Connect:連線超時;Response:響應超時。二者都可以不填
- Implementa:採用什麼例項來執行這次HTTP請求(HttpClient4/HttpClient3.1/Java),這裡我們不用選擇,直接預設就好。
協議:該介面採用什麼協議(http/https),這裡不填預設是http,根據情況填寫
方法:請求該介面的方法(GET/POST等),根據介面請求型別選擇。
Content encoding:這裡是返回報文的編碼格式(如‘utf-8’),採用預設值就好
- 同請求一起傳送引數:介面的引數,可以通過下方“新增”按鈕,新增引數,左邊為“key”,右邊填“value”,如上圖。(這裡只適用於傳引數的介面,傳Json和檔案等介面使用這種方式不支援,暫不做介紹)
1.1.3. 新增監聽器
完成上述3.2.1和3.2.2步,一個介面的簡單指令碼已經編寫完成了;但是此時我們還不知道在哪裡檢視指令碼執行的結果,這裡我們需要新增一個監聽器。
l 右鍵“執行緒組”->“新增”->“監聽器”,選擇“察看結果樹”
Tips:Jmeter提供了需要監聽器,有興趣的可以去一一新增,察看效果。
1.1.4. 執行指令碼
l 點選按鈕,執行指令碼,察看結果
在“響應資料”下,我們看到了與使用瀏覽器一樣的返回結果(報文中headers有差異,這部分可以忽略,想知道為什麼不一樣的可以去學學http協議,在這裡不影響結果)。
到這裡,一個http介面測試的Jmeter指令碼已經完成。“Ctrl+S”儲存一下吧,下次就可以直接拿來使用了(Jmeter指令碼預設儲存在bin目錄下)
1.2. 壓力測試
在上面指令碼配置上執行緒數,即可對該介面進行壓力測試啦。
l 點選“執行緒組”
- 執行緒數:需要採用多少個併發。
- Ramp-Up Period(in seconds):設定到達最大併發所需時間(如上圖,從0增加到5個併發,花費1秒鐘)
- 迴圈次數:每個併發執行幾遍指令碼(如上圖,每個執行緒執行100遍)。勾選永遠,則指令碼會被無限迴圈執行下去。
- 排程器:勾選則啟用排程器
持續時間(秒):設定指令碼跑多久(如需要讓指令碼跑一分鐘,則填入60)
啟動延遲(秒):延遲多少秒才開始執行指令碼
l 新增“聚合報告”
聚合報告是一個監聽器,作用是,為本次壓力測試整理出一份“報表”
l 點選按鈕讓我們來看看5併發迴圈100次的結果
l 點選按鈕,清除上次測試結果,然後來看看10併發迴圈100次結果
可以看到5併發時,Throughput為13.0/sec;10併發時:Throughput為22.6/sec。
理論上,併發數與吞吐量成正比,併發越多,吞吐量越大。
實際上,伺服器的處理能力和網路頻寬是有限的,當併發數達到一定數量之後,吞吐量不隨併發數增加而增長,出現響應時間變長,甚至伺服器宕機等狀況,稱之為伺服器的效能“瓶頸”。
簡單來說,效能測試就是根據伺服器的“瓶頸”,來評估服務的效能是否能夠達到期望。
附:表頭說明
Label - 如圖,在不勾選"Include group name in label?"複選框的情況下,為請求取樣器的名稱,否則為“請求取樣器所線上程組:請求取樣器名稱”
# Samples - 用同一個請求取樣器,傳送請求的數量(注意:該值是不斷累計的)。比如,10個執行緒數設定為10,迭代10次,那麼每執行一次測試,該值就增加10*10=100
Average - 預設情況下是單個Request的平均響應時間,當使用了Transaction Controller 時,也可以以Transaction為單位顯示平均響應時間
Median - 中位數。表示響應時間本不大於該時間值的請求樣本數佔總數的50%
90% Line - 表示響應時間不大於該時間值的請求樣本數佔總數的90%
Min - 針對同一請求取樣器,請求樣本的最小響應時間
Max - 針對同一請求取樣器,請求樣本的最大響應時間
Error % - 出現錯誤的請求樣本的百分比
Throughput - 吞吐量以“requests/second、requests /minute、requests /hour”來衡量。 時間單位已經被選取為second,所以,顯示速率至少是1.0,即每秒1個請求。 當吞吐量被儲存到CVS檔案時,採用的是requests/second,所以30.0 requests/second 在CVS中被儲存為0.5Kb/sec - 以Kilobytes/seond來衡量的吞吐量