更新時間:2020-09-09 15:46:09 來源:動力節點 瀏覽1777次
Apache JMeter是一款純java編寫負載功能測試和性能測試開源工具軟件。相比Loadrunner而言,JMeter小巧輕便且免費,逐漸成為了主流的性能測試工具,是每個測試人員都必須要掌握的工具之一。
本文為JMeter性能測試完整入門篇,從Jmeter下載安裝到編寫一個完整性能測試腳本、最終執行性能測試并分析性能測試結果。
運行環境為Windows 10系統,JDK版本為1.8,JMeter版本為3.3。
2.Jmeter安裝
2.1 JDK安裝
由于Jmeter是基于java開發,首先需要下載安裝JDK(目前JMeter只支持到Java 8,尚不支持Java 9)
1.官網下載
2.選擇Java SE 8u151/8u152,點擊JDK下載
3.安裝下載的JDK
4.配置系統環境變量
2.2 JMeter安裝
官網下載地址
下載最新JMeter 3.3版本:apache-jmeter-3.3.zip
下載完成后解壓zip包
啟動JMeter
雙擊JMeter解壓路徑(apache-jmeter-3.3bin)bin下面的jmeter.bat即可
3.測試實例
我們選取最常見的百度搜索接口:
3.1接口地址
http://www.baidu.com/s?ie=utf-8&wd=jmeter性能測試
3.2請求參數
ie:編碼方式,默認為utf-8
wd:搜索詞
3.3返回結果
搜索結果,我們可以通過校驗結果中是否含有搜索詞wd來判斷本次請求成功或失敗。
4.JMeter腳本編寫
4.1添加線程組
右鍵點擊“測試計劃”->“添加”->“Threads(Users)”->“線程組”
這里可以配置線程組名稱,線程數,準備時長(Ramp-Up Period(in seconds))循環次數,調度器等參數:
線程組參數詳解:
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.調度器:設置線程組啟動的開始時間和結束時間(配置調度器時,需要勾選循環次數為永遠)
持續時間(秒):測試持續時間,會覆蓋結束時間
啟動延遲(秒):測試延遲啟動時間,會覆蓋啟動時間
啟動時間:測試啟動時間,啟動延遲會覆蓋它。當啟動時間已過,手動只需測試時當前時間也會覆蓋它。
結束時間:測試結束時間,持續時間會覆蓋它。
因為接口調試需要,我們暫時均使用默認設置,待后面真正執行性能測試時再回來配置。
4.2添加HTTP請求
右鍵點擊“線程組”->“添加”->“Sampler”->“HTTP請求”
對于我們的接口http://www.baidu.com/s?ie=utf-8&wd=jmeter性能測試,可以參考下圖填寫:
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.3添加察看結果樹
右鍵點擊“線程組”->“添加”->“監聽器”->“察看結果樹”
這時,我們運行Http請求,修改響應數據格式為“HTML Source Formatted”,可以看到本次搜索返回結果頁面標題為”jmeter性能測試_百度搜索“。
4.4添加用戶自定義變量
我們可以添加用戶自定義變量用以Http請求參數化,右鍵點擊“線程組”->“添加”->“配置元件”->“用戶定義的變量”:
新增一個參數wd,存放搜索詞:
并在Http請求中使用該參數,格式為:${wd}
4.5添加斷言
右鍵點擊“HTTP請求”->“添加”->“斷言”->“響應斷言”
我們校驗返回的文本中是否包含搜索詞,添加參數${wd}到要測試的模式中:
4.6添加斷言結果
右鍵點擊“HTTP請求”->“添加”->“監聽器”->“斷言結果”
這時,我們再運行一次就可以看到斷言結果成功或失敗了
4.7添加聚合報告
右鍵點擊“線程組”->“添加”->“監聽器”->“聚合報告”,用以存放性能測試報告
這樣,我們就完成了一個完整Http接口的JMeter性能測試腳本編寫。
5.執行性能測試
5.1配置線程組
點擊線程組,配置本次性能測試相關參數:線程數,循環次數,持續時間等,這里我們配置并發用戶數為10,持續時間為60s
5.2執行測試
點擊綠色小箭頭按鈕即可啟動測試,測試之前需要點擊小掃把按鈕清除之前的調試結果。
6.分析測試報告
待性能測試執行完成后,打開聚合報告可以看到:
聚合報告參數詳解:
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吞吐量。
7.中文亂碼
1.http請求添加content encoding:填寫utf-8(不一定有用)
2.在jmter的bin文件夾中,設置jmeter.properties中的sampleresult.default.encoding=UTF-8(去掉#)
3.線程組-添加-后置處理器-Beanshell PostProcessor彈出對話框中輸入prev.setDataEncoding("utf-8")
以上就是“jmeter性能測試教程,入門篇”的詳解介紹,更多資料大家可以在動力節點官網的Java技術文檔中查找。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習