目錄
什麼是壓力測試?
壓力測試就是被測試的系統,在一定的訪問壓力下,看程序運行是否穩定/服務器運行是否穩定(資源佔用情況)。
例如: 模擬2000個用戶同時到一個購物網站購物,測試這些用戶打開頁面的速度是否會變慢,或者網站是否會奔潰。
一、準備工作——Jmeter安裝
1、安裝Jmeter之前需要先安裝好JDK環境。
2、下載Jmeter安裝包:http://jmeter.apache.org/
3、解壓安裝包,進入bin目錄,點擊jmeter.bat啓動Jmeter。
二、壓力測試
1、創建線程組
如圖使用Jmeter創建線程組
創建完界面如下:
線程組參數詳解
(1)線程數:虛擬用戶數。一個虛擬用戶佔用一個進程或線程。設置多少虛擬用戶數在這裏也就是設置多少個線程數。
(2)Ramp-Up Period(in seconds)準備時長:設置的虛擬用戶數需要多長時間全部啓動。如果線程數爲10,準備時長爲2,那麼需要2秒鐘啓動10個線程,也就是每秒鐘啓動5個線程。
(3)循環次數:每個線程發送請求的次數。如果線程數爲10,循環次數爲100,那麼每個線程發送100次請求。總請求數爲10*100=1000 。如果勾選了“永遠”,那麼所有線程會一直髮送請求,一到選擇停止運行腳本。
(4)Delay Thread creation until needed:直到需要時延遲線程的創建。
(5)調度器:設置線程組啓動的開始時間和結束時間(配置調度器時,需要勾選循環次數爲永遠)
持續時間(秒):測試持續時間,會覆蓋結束時間
啓動延遲(秒):測試延遲啓動時間,會覆蓋啓動時間
啓動時間:測試啓動時間,啓動延遲會覆蓋它。當啓動時間已過,手動只需測試時當前時間也會覆蓋它。
結束時間:測試結束時間,持續時間會覆蓋它。
2、創建Http請求
在創建的線程組基礎上,添加HTTP請求
創建頁面如圖所示:
性能測試時:HTTP實現請選擇Java,點擊keepAlive,使用長連接進行測試(避免經常進行三次握手,影響測試準確性)。
Http請求主要參數詳解
(1)Web服務器
協議:向目標服務器發送HTTP請求協議,可以是HTTP或HTTPS,默認爲HTTP
服務器名稱或IP :HTTP請求發送的目標服務器名稱或IP
端口號:目標服務器的端口號,默認值爲80
(2)Http請求
方法:發送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
路徑:目標URL路徑(URL中去掉服務器地址、端口及參數後剩餘部分)
Content encoding :編碼方式,默認爲ISO-8859-1編碼,這裏配置爲utf-8
(3)同請求一起發送參數
在請求中發送的URL參數,用戶可以將URL中所有參數設置在本表中,表中每行爲一個參數(對應URL中的 name=value),注意參數傳入中文時需要勾選“編碼”。
3、查看結果樹
在創建的線程組基礎上添加查看結果樹:
添加完後,展示結果如圖:
4、添加聚合報告
在線程組基礎上添加聚合報告,如圖:
展示結果如圖:
聚合報告參數詳解
(1)Label:每個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這裏顯示的就是 Name 屬性的值
(2)#Samples:請求數——表示這次測試中一共發出了多少個請求,如果模擬10個用戶,每個用戶迭代10次,那麼這裏顯示100
(3)Average:平均響應時間——默認情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,以Transaction 爲單位顯示平均響應時間
(4)Median:中位數,也就是 50% 用戶的響應時間
(5)90% Line:90% 用戶的響應時間
(6)Min:最小響應時間
(7)Max:最大響應時間
(8)Error%:錯誤率——錯誤請求數/請求總數
(9)Throughput:吞吐量——默認情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數
(10)KB/Sec:每秒從服務器端接收到的數據量,相當於LoadRunner中的Throughput/Sec
一般而言,性能測試中我們需要重點關注的數據有: #Samples 請求數,Average 平均響應時間,Min 最小響應時間,Max 最大響應時間,Error% 錯誤率及Throughput 吞吐量。