一、概述(百度百科)
Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟件做壓力測試,它最初被設計用於Web應用測試,但後來擴展到其他測試領域。 它可以用於測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫、FTP 服務器, 等等。JMeter 可以用於對服務器、網絡或對象模擬巨大的負載,來自不同壓力類別下測試它們的強度和分析整體性能。另外,JMeter能夠對應用程序做功能/迴歸測試,通過創建帶有斷言的腳本來驗證你的程序返回了你期望的結果。爲了最大限度的靈活性,JMeter允許使用正則表達式創建斷言。
Apache jmeter 可以用於對靜態的和動態的資源(文件,Servlet,Perl腳本,java 對象,數據庫和查詢,FTP服務器等等)的性能進行測試。它可以用於對服務器、網絡或對象模擬繁重的負載來測試它們的強度或分析不同壓力類型下的整體性能。你可以使用它做性能的圖形分析或在大併發負載測試你的服務器/腳本/對象。
二、下載
1、由於JMeter是基於java開發,首先需要下載安裝JDK (目前JMeter只支持到Java 8,尚不支持 Java 9)(略過)
2、JMeter下載
- 官網下載地址:http://jmeter.apache.org/download_jmeter.cgi
- 下載最新的apache-jmeter-5.1.1.zip
- 下載完成後解壓zip包
- 啓動JMeter
雙擊JMeter解壓路徑(apache-jmeter-3.3\bin)bin下面的jmeter.bat即可
三、測試實例
1、添加線程組
2、配置線程組參數
線程組參數詳解:
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. 調度器:設置線程組啓動的開始時間和結束時間(配置調度器時,需要勾選循環次數爲永遠)
持續時間(秒):測試持續時間,會覆蓋結束時間
啓動延遲(秒):測試延遲啓動時間,會覆蓋啓動時間
啓動時間:測試啓動時間,啓動延遲會覆蓋它。當啓動時間已過,手動只需測試時當前時間也會覆蓋它。
結束時間:測試結束時間,持續時間會覆蓋它。
3、添加HTTP請求
Http請求主要參數詳解:
- 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 - 同請求一起發送參數
在請求中發送的URL參數,用戶可以將URL中所有參數設置在本表中,表中每行爲一個參數(對應URL中的 name=value),注意參數傳入中文時需要勾選“編碼”
4、添加查看結果樹
這時,我們運行Http請求,修改響應數據格式爲“HTML Source Formatted”
5、添加用戶自定義變量
6、添加響應斷言
右鍵點擊“測試接口” -> “添加”-> “斷言” -> “響應斷言”
7、斷言結果
右鍵點擊“測試接口” -> “添加”-> “監聽器” -> “斷言結果”
8、添加聚合報告
這樣,我們就完成了一個完整Http接口的JMeter性能測試腳本編寫。
四、執行測試實例
1、配置線程組
2、執行查看結果
聚合報告參數詳解:
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