**1.1 JMeter概述服務器
JMeter簡介**ide
Apache JMeter™是Apache組織開發的一款開源軟件,是典型的純Java開發的應用程序,能夠在不一樣平臺好比Windows、Linux或macOS系統上進行軟件測試。JMeter主要用於應用程序的功能負載測試以度量軟件的性能,也能夠用於其餘類型的測試好比接口測試,API測試等。工具
JMeter版本性能
JMeter不一樣的版本,功能有所差別,對JDK的支持也不盡相同。新的JMeter版本有些功能會逐漸改進完善,還會引入新的功能組件,性能也會逐步提高。所以在JMeter官方網站的最佳實踐中,建議用戶不管如何最好使用最新的JMeter版本。測試
這裏以最新的JMeter5.1.1版本進行介紹。網站
JMeter GUI界面線程
當JMeter以GUI模式運行時,窗口主要由三部分構成:blog
1.功能區接口
上方菜單欄,下方工具欄。菜單欄展現了JMeter提供的功能菜單,而工具欄中的圖標是常見功能的快捷方式。內存
2.視圖區
以樹狀結構呈現JMeter元素,其中「Test Plane」是樹的根節點,每個節點就是一個JMeter元素。
在此區域能夠添加、刪除節點,或者經過拖曳調整節點的位置。
3.內容區
在視圖區選中一個JMeter元素節點,相應地在內容區則會顯示該元素的內容。能夠對其內容進行查看、設置等操做。
1.2 JMeter測試組成
JMeter構建測試相似於組裝一臺智能電子設備,好比智能手機。智能手機由CPU、內存、輸入輸出設備(好比USB接口,攝像頭等)、屏幕、電池等一系列物理部件構成的。
JMeter測試也是由一系列JMeter元素組合起來構成的,JMeter提供了構建測試的全部元素,你能夠爲所欲爲的將這些元素組裝起來完成你想要的測試。
JMeter元素有如下四種類型的測試元素:
1)測試計劃
2)線程組
3)組件
包含配置元件、定時器、前置處理器、後置處理器、斷言與監聽器
4)控制器
包括取樣器和邏輯控制器
1.2.1 測試計劃
測試計劃描述了JMeter測試在運行時執行的一系列步驟。完整的測試計劃由一個或多個線程組、邏輯控制器、取樣器、監聽器、定時器、斷言和配置元件組成。
測試計劃元素是JMeter測試樹的根節點,是惟一的,全部的測試元素節點都位於根節點之下。
1.2.2 線程組
在手工測試中,測試用例由測試工程師手動執行完成。而性能測試與自動化測試的測試用例由選擇的測試工具代替測試工程師來執行。JMeter執行測試的任務是由線程組來完成的。打個比方,線程組至關於手工測試中執行測試用例的測試工程師。
線程組控制JMeter用來執行測試的線程數。要模擬多少個用戶(稱之爲虛擬用戶)來執行測試,能夠經過修改線程組的線程數來實現。好比將線程數設置爲10,表示模擬10個用戶執行測試。
全部的取樣器與邏輯控制器都必須位於線程組下,從這個角度理解,JMeter測試計劃真正開始於線程組。其餘元素,例如監聽器,能夠直接放在測試計劃下,在這種狀況下,它們將做用於全部的線程組。
一個測試計劃下能夠有多個線程組,在測試計劃中能夠配置以並行或順序方式啓動多個線程組。
1.2.3 組件
JMeter中最基本的元素爲元件,元件是JMeter測試中的最小功能單元,每一個元件都具備某種特定的功能。好比「HTTP Request」取樣器元件,能夠實現HTTP請求發送的功能。
JMeter提供了不少元件,爲了方便用戶使用與管理衆多的元件,JMeter將多個功能相似或邏輯上相關的元件歸爲一類,稱爲組件。JMeter包含六大組件: 配置元件、定時器、前置處理器、後置處理器、斷言、監聽器。
配置元件
配置元件與取樣器密切相關。相似於配置文件之於軟件,軟件配置文件能夠影響軟件的行爲;一樣經過配置元件能夠新增或修改請求內容,實現對請求的自定義。
定時器
默認狀況下,JMeter線程按順序執行取樣器而不會出現暫停的狀況。經過將定時器添加到線程組來指定延遲。若是不加延遲,JMeter可能會在很短的時間內發送過多的請求到服務器,致使服務器負載太重而崩潰。
定時器可使在其做用範圍內的每一個取樣器執行前延遲一段時間。
前置處理器
前置處理器在進行取樣器請求以前執行一些操做。
若是前置處理器附加到取樣器元素,那麼它將在該取樣器元素運行以前執行。
前置處理器常常用於在運行以前修改取樣器請求的設置,或更新未從響應文本中提取的變量。
後置處理器
後置處理器在取樣器請求完成後執行一些操做。
若是後置處理器附加到取樣器元素,那麼它將在該取樣器元素運行以後執行。
後處理器一般用於處理響應數據,從中提取須要的值。
斷言
斷言用於驗證取樣器請求或對應的響應是否返回了指望的結果。
JMeter測試是否執行成功,結果是否預期,均可以經過添加斷言來進行驗證。
監聽器
監聽器能夠在JMeter執行測試的過程當中蒐集相關的數據,並將這些數據不一樣的形式,好比樹、圖、報告等呈現出來。
好比,「圖形結果」監聽器繪製響應時間的曲線圖,「查看結果樹」監聽器顯示取樣器請求和響應的詳細信息等。
此外,有些監聽器還能夠將蒐集到的測試數據保存到文件中以供之後使用。
1.2.4 控制器
取樣器
取樣器用於構建發給服務器處理的請求,即告訴JMeter怎樣將請求發送到服務器。例如,若要發送HTTP請求,能夠選擇「HTTP Request」取樣器,同時還能夠經過添加配置元件來自定義請求。
邏輯控制器取樣器請求默認是以前後順序依次執行的,某些狀況下知足了複雜的業務/場景需求。經過邏輯控制器能夠控制JMeter發送請求的邏輯,來實現複雜的業務/場景。好比有選擇性執行某些請求,循環執行請求,總體執行邏輯上有依賴關係的請求,交替執行請求等。