1. JMeter是什麼
JMeter是Apache的開源軟件,旨在爲負載測試功能行爲和測量性能的100%純Java應用程序。它最初是爲測試Web應用程序而設計的,但後來擴展到其餘測試功能。shell
2. JMeter能作什麼
- 可以加載和性能測試許多不一樣的應用程序/服務器/協議類型:
- Web - HTTP,HTTPS(Java,NodeJS,PHP,ASP.NET,...)
- SOAP / REST Web服務
- FTP
- 數據庫經過JDBC
- LDAP
- 面向消息的中間件(MOM)經過JMS
- 郵件 - SMTP(S),POP3(S)和IMAP(S)
- 本機命令或shell腳本
- TCP
- Java對象
- 全功能的測試IDE,容許快速測試計劃記錄(來自瀏覽器或本機應用程序),構建和調試。
- CLI模式(命令行模式(之前稱爲非GUI))從任何兼容Java的操做系統(Linux,Windows,Mac OSX,...)加載測試
- 完整且隨時可呈現的動態HTML報告
- 經過從最流行的響應格式,HTML,JSON, XML或任何文本格式中提取數據的能力
- 徹底可移植性。
- 完整的多線程框架容許多個線程進行併發採樣,並經過單獨的線程組同時對不一樣函數進行採樣。
緩存和離線分析/重放測試結果。數據庫
- 高度可擴展的核心:
- 可插拔採樣器容許無限的測試功能。
- 可編寫腳本的採樣器(與Groovy和BeanShell 等JSR223兼容的語言)
- 可使用可插拔計時器選擇多個負載統計信息。
- 數據分析和可視化插件具備很好的可擴展性和個性化。
- 函數可用於爲測試提供動態輸入或提供數據操做。
- 經過Maven,Gradle和Jenkins的第三方開源庫輕鬆實現持續集成。
3. JMeter的下載
官方下載地址apache

4. JMeter的使用
解壓文件,進入bin目錄,雙擊jmeter.bat瀏覽器
4.1 設置中文的方法

4.2 使用測試模板測試


模板生成後能夠看到:緩存

設置測試的線程數:服務器

- 線程數: 虛擬用戶數。一個虛擬用戶佔用一個進程或線程。設置多少虛擬用戶數在這裏也就是設置多少個線程數。
- Ramp-Up Period(in seconds)準備時長:設置的虛擬用戶數須要多長時間所有啓動。若是線程數爲10,準備時長爲2,那麼須要2秒鐘啓動10個線程,也就是每秒鐘啓動5個線程。
- 循環次數:每一個線程發送請求的次數。若是線程數爲10,循環次數爲100,那麼每一個線程發送100次請求。總請求數爲10*100=1000 。若是勾選了「永遠」,那麼全部線程會一直髮送請求,一到選擇中止運行腳本。
- Delay Thread creation until needed: 將線程建立延遲到須要的時候
- 調度器:設置線程組啓動的開始時間和結束時間(配置調度器時,須要勾選循環次數爲永遠)
持續時間(秒):測試持續時間,會覆蓋結束時間
啓動延遲(秒):測試延遲啓動時間,會覆蓋啓動時間
啓動時間:測試啓動時間,啓動延遲會覆蓋它。當啓動時間已過,手動只需測試時當前時間也會覆蓋它。
結束時間:測試結束時間,持續時間會覆蓋它。
可手動增長要測試的接口:多線程


名詞解釋:併發
Web服務器
協議:向目標服務器發送HTTP請求協議,能夠是HTTP或HTTPS,默認爲HTTP
服務器名稱或IP :HTTP請求發送的目標服務器名稱或IP
端口號:目標服務器的端口號,默認值爲80框架
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 測試

查看結果樹:

4.4 添加聚合報告

再次運行,查看聚合報告:

聚合報告參數詳解:
- Label:每一個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這裏顯示的就是 Name 屬性的值
- 樣本:請求數——表示此次測試中一共發出了多少個請求,若是模擬10個用戶,每一個用戶迭代10次,那麼這裏顯示100
- 平均值:平均響應時間——默認狀況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,以Transaction 爲單位顯示平均響應時間
- 中位數:中位數,也就是 50% 用戶的響應時間
- 90% Line:90% 用戶的響應時間
- 最小值:最小響應時間
- 最大值:最大響應時間
- 異常%:錯誤率——錯誤請求數/請求總數
- 吞吐量:吞吐量——默認狀況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也能夠表示相似 LoadRunner 的 Transaction per Second 數
- KB/Sec:每秒從服務器端接收到的數據量,至關於LoadRunner中的Throughput/Sec
通常而言,性能測試中咱們須要重點關注的數據有: #Samples 請求數,Average 平均響應時間,Min 最小響應時間,Max 最大響應時間,Error% 錯誤率及Throughput 吞吐量。
參考博客: http://www.javashuo.com/article/p-giooiegn-nq.html