參照:
- http://www.51testing.com/zhuanti/jmeter.html
- https://blog.csdn.net/u012111923/article/details/80705141
文章目錄
什麼是JMeter?
Apache jmeter 是一個100%的純java桌面應用,用於壓力測試和性能測量。它最初被設計用於Web應用測試但後來擴展到其他測試領域。
Apache jmeter 可以用於對靜態的和動態的資源(文件,Servlet,Perl腳本,java 對象,數據庫和查詢,FTP服務器等等)的性能進行測試。它可以用於對服務器,網絡或對象模擬繁重的負載來測試它們的強度或分析不同壓力類型下的整體性能。你可以使用它做性能的圖形分析或在大併發負載測試你的服務器/腳本/對象。
JMeter主要特性
能夠對HTTP和FTP服務器進行壓力和性能測試, 也可以對任何數據庫進行同樣的測試(通過JDBC)。
完全的可移植性和100% 純java。
完全 Swing 和輕量組件支持(預編譯的JAR使用 javax.swing.*)包。
完全多線程 框架允許通過多個線程併發取樣和 通過單獨的線程組對不同的功能同時取樣。
精心的GUI設計允許快速操作和更精確的計時。
緩存和離線分析/回放測試結果。
高可擴展性:
可鏈接的取樣器允許無限制的測試能力。
各種負載統計表和可鏈接的計時器可供選擇。
數據分析和可視化插件提供了很好的可擴展性以及 以及個性化。
具有提供動態輸入到測試的功能(包括Javascrīpt)。
支持腳本變成的取樣器(在1.9.2及以上版本支持BeanShell)。
Jmeter安裝
1.安裝jdk
2 下載jmeter
地址:https://jmeter.apache.org/download_jmeter.cgi
3.將下載好的jmeter zip包解壓
4.點擊 jmeter解壓路徑(apache-jmeter-5.1.1\bin)bin下面的jmeter.bat 啓動jmeter
看到了一個警告,先不管它,看看能不能用
啓動好的界面
使用測試接口
第一步 添加 線程組
線程組參數詳解:
- 線程數:虛擬用戶數。一個虛擬用戶佔用一個進程或線程。設置多少虛擬用戶數在這裏也就是設置多少個線程數。
- Ramp-Up Period(in seconds)準備時長:設置的虛擬用戶數需要多長時間全部啓動。如果線程數爲10,準備時長爲2,那麼需要2秒鐘啓動10個線程,也就是每秒鐘啓動5個線程。
- 循環次數:每個線程發送請求的次數。如果線程數爲10,循環次數爲100,那麼每個線程發送100次請求。總請求數爲10*100=1000 。如果勾選了“永遠”,那麼所有線程會一直髮送請求,一到選擇停止運行腳本。
- Delay Thread creation until needed:直到需要時延遲線程的創建。
- 調度器:設置線程組啓動的開始時間和結束時間(配置調度器時,需要勾選循環次數爲永遠)
持續時間(秒):測試持續時間,會覆蓋結束時間
啓動延遲(秒):測試延遲啓動時間,會覆蓋啓動時間
啓動時間:測試啓動時間,啓動延遲會覆蓋它。當啓動時間已過,手動只需測試時當前時間也會覆蓋它。
結束時間:測試結束時間,持續時間會覆蓋它。
因爲接口調試需要,我們暫時均使用默認設置,待後面真正執行性能測試時再回來配置。
第二步 添加HTTP請求
右鍵點擊“線程組” -> “添加” -> “Sampler” -> “HTTP請求”
對於我們的接口http://www.baidu.com/s?ie=utf-8&wd=jmeter性能測試,可以參考下圖填寫:
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同請求一起發送參數
在請求中發送的URL參數,用戶可以將URL中所有參數設置在本表中,表中每行爲一個參數(對應URL中的 name=value),注意參數傳入中文時需要勾選“編碼”
第三步 添加察看結果樹
右鍵點擊“線程組” -> “添加” -> “監聽器” -> “察看結果樹”
這時,我們運行Http請求,修改響應數據格式爲“HTML Source Formatted”,可以看到本次搜索返回結果頁面標題爲”jmeter性能測試_百度搜索“。
第四步 添加聚合報告
右鍵點擊“線程組” -> “添加” -> “監聽器” -> “聚合報告”,用以存放性能測試報告
這樣,我們就完成了一個完整Http接口的JMeter性能測試腳本編寫
執行測試
點擊綠色小箭頭按鈕即可啓動測試,測試之前需要點擊小掃把按鈕清除之前的調試結果
分析測試報告
待性能測試執行完成後,打開聚合報告可以看到:
聚合報告參數詳解:
- Label:每個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這裏顯示的就是 Name 屬性的值
- #Samples:請求數——表示這次測試中一共發出了多少個請求,如果模擬10個用戶,每個用戶迭代10次,那麼這裏顯示100
- Average:平均響應時間——默認情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,以Transaction 爲單位顯示平均響應時間
- Median:中位數,也就是 50% 用戶的響應時間
- 90% Line:90% 用戶的響應時間
- Min:最小響應時間
- Max:最大響應時間
- Error%:錯誤率——錯誤請求數/請求總數
- Throughput:吞吐量——默認情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數
- KB/Sec:每秒從服務器端接收到的數據量,相當於LoadRunner中的Throughput/Sec
一般而言,性能測試中我們需要重點關注的數據有: #Samples 請求數,Average 平均響應時間,Min 最小響應時間,Max 最大響應時間,Error% 錯誤率及Throughput 吞吐量。