一、JMeter概述
▲ JMeter簡介
Apache JMeter?是Apache組織開發(fā)的一款開源軟件球化,是典型的純Java開發(fā)的應(yīng)用程序,可以在不同平臺比如Windows又厉、Linux或macOS系統(tǒng)上進行軟件測試菠镇。JMeter主要用于應(yīng)用程序的功能負載測試以度量軟件的性能,也可以用于其他類型的測試比如接口測試禀梳、API測試等杜窄。
▲ JMeter版本
JMeter不同的版本,功能有所差異算途,對JDK的支持也不盡相同塞耕。新的JMeter版本有些功能會逐漸改進完善,還會引入新的功能組件,性能也會逐步提升。因此在JMeter官方網(wǎng)站的最佳實踐中嘴瓤,建議用戶無論如何最好使用最新的JMeter版本扫外。
最新版本下載頁面鏈接:https://jmeter.apache.org/download_jmeter.cgi
這里以JMeter5.2.1版本進行介紹。
▲ JMeter與Loadrunner區(qū)別
▲JMeter GUI界面
當JMeter以GUI模式運行時廓脆,窗口主要由三部分構(gòu)成:
1.功能區(qū)
上方菜單欄筛谚,下方工具欄。菜單欄展示了JMeter提供的功能菜單停忿,而工具欄中的圖標是常見功能的快捷方式驾讲。
2.視圖區(qū)
以樹狀結(jié)構(gòu)呈現(xiàn)JMeter元素,其中“Test Plane”是樹的根節(jié)點席赂,每一個節(jié)點就是一個JMeter元素吮铭。在此區(qū)域可以添加、刪除節(jié)點或者通過拖曳調(diào)整節(jié)點的位置颅停。
3.內(nèi)容區(qū)
當在視圖區(qū)選中一個JMeter元素節(jié)點時谓晌,內(nèi)容區(qū)則會相應(yīng)地顯示該元素的內(nèi)容。這時可以對其內(nèi)容進行查看便监、設(shè)置等操作扎谎。
二碳想、JMeter測試組成
JMeter構(gòu)建測試類似于組裝一臺智能電子設(shè)備,比如智能手機毁靶。智能手機由CPU胧奔、內(nèi)存、輸入輸出設(shè)備(比如USB接口预吆,攝像頭等)龙填、屏幕、電池等一系列物理部件構(gòu)成的拐叉。
JMeter測試也是由一系列JMeter元素組合起來構(gòu)成的岩遗,JMeter提供了構(gòu)建測試的所有元素,你可以隨心所欲的將這些元素組裝起來完成你想要的測試凤瘦。
JMeter元素有以下四種類型的測試元素:
1)測試計劃
2)線程組
3)組件
包含配置元件宿礁、前置處理器、定時器蔬芥、后置處理器梆靖、斷言與監(jiān)聽器
4)控制器
包括取樣器、邏輯控制器與測試片段
(1) 測試計劃
測試計劃描述了JMeter測試在運行時執(zhí)行的一系列步驟笔诵。完整的測試計劃由一個或多個線程組返吻、邏輯控制器、取樣器乎婿、監(jiān)聽器测僵、定時器、斷言和配置元件組成谢翎。
測試計劃元素是JMeter測試樹的根節(jié)點捍靠,是唯一的,所有的測試元素節(jié)點都位于根節(jié)點之下岳服。
(2)線程組
在手工測試中剂公,測試用例由測試工程師手動執(zhí)行完成。而性能測試與自動化測試的測試用例由選擇的測試工具代替測試工程師來執(zhí)行吊宋。JMeter執(zhí)行測試的任務(wù)是由線程組來完成的纲辽。打個比方,線程組相當于手工測試中執(zhí)行測試用例的測試工程師璃搜。
線程組控制JMeter用來執(zhí)行測試的線程數(shù)拖吼。要模擬多少個用戶(稱之為虛擬用戶)來執(zhí)行測試,可以通過修改線程組的線程數(shù)來實現(xiàn)这吻。比如將線程數(shù)設(shè)置為10吊档,表示模擬10個用戶執(zhí)行測試。
所有的取樣器與邏輯控制器都必須位于線程組下唾糯,從這個角度理解怠硼,JMeter測試計劃真正開始于線程組鬼贱。其他元素,例如監(jiān)聽器香璃,可以直接放在測試計劃下这难,在這種情況下,它們將作用于所有的線程組葡秒。一個測試計劃下可以有多個線程組姻乓,在測試計劃中可以配置以并行或順序方式啟動多個線程組。
(3) 組件
JMeter中最基本的元素為元件眯牧,元件是JMeter測試中的最小功能單元蹋岩,每個元件都具有某種特定的功能。比如“Regular Expression Extractor”元件学少,可以實現(xiàn)利用正則表達式提取響應(yīng)數(shù)據(jù)的功能剪个。
JMeter提供了很多元件,為了方便用戶使用與管理眾多的元件旱易,JMeter將多個功能類似或邏輯上相關(guān)的元件歸為一類禁偎,稱為組件腿堤。JMeter包含六大組件: 配置元件阀坏、前置處理器、定時器笆檀、后置處理器忌堂、斷言與監(jiān)聽器。
● 配置元件
配置元件與取樣器密切相關(guān)酗洒。類似于配置文件之于軟件士修,軟件配置文件可以影響軟件的行為;同樣通過配置元件可以新增或修改請求內(nèi)容,實現(xiàn)對請求的自定義樱衷。
● 前置處理器
前置處理器在進行取樣器請求之前執(zhí)行一些操作棋嘲。
如果前置處理器附加到取樣器元素,那么它將在該取樣器元素運行之前執(zhí)行矩桂。
前置處理器經(jīng)常用于在運行之前修改取樣器請求的設(shè)置沸移,或更新未從響應(yīng)文本中提取的變量。
● 定時器
默認情況下侄榴,JMeter線程按順序執(zhí)行取樣器而不會出現(xiàn)暫停的情況雹锣。通過將定時器添加到線程組來指定延遲。如果不加延遲癞蚕,JMeter可能會在很短的時間內(nèi)發(fā)送過多的請求到服務(wù)器蕊爵,導(dǎo)致服務(wù)器負載過重而崩潰。
定時器可以使在其作用范圍內(nèi)的每個取樣器執(zhí)行前延遲一段時間桦山。
●后置處理器
后置處理器在取樣器請求完成后執(zhí)行一些操作攒射。
如果后置處理器附加到取樣器元素醋旦,那么它將在該取樣器元素運行之后執(zhí)行。
后處理器通常用于處理響應(yīng)數(shù)據(jù)会放,從中提取需要的值浑度。
● 斷言
斷言用于驗證取樣器請求或?qū)?yīng)的響應(yīng)是否返回了期望的結(jié)果。
JMeter測試是否執(zhí)行成功鸦概,結(jié)果是否預(yù)期箩张,都可以通過添加斷言來進行驗證。
● 監(jiān)聽器
監(jiān)聽器可以在JMeter執(zhí)行測試的過程中搜集相關(guān)的數(shù)據(jù)窗市,并將這些數(shù)據(jù)不同的形式先慷,比如樹、圖咨察、報告等呈現(xiàn)出來论熙。
比如,“圖形結(jié)果”監(jiān)聽器繪制響應(yīng)時間的曲線圖摄狱,“查看結(jié)果樹”監(jiān)聽器顯示取樣器請求和響應(yīng)的詳細信息等脓诡。
此外,有些監(jiān)聽器還可以將搜集到的測試數(shù)據(jù)保存到文件中以供以后使用媒役。
(4)控制器
●取樣器
取樣器用于構(gòu)建發(fā)給服務(wù)器處理的請求祝谚,即告訴JMeter怎樣將請求發(fā)送到服務(wù)器。例如酣衷,若要發(fā)送HTTP請求交惯,可以選擇“HTTP Request”取樣器,同時還可以通過添加配置元件來自定義請求穿仪。
● 邏輯控制器
取樣器請求默認是以先后順序依次執(zhí)行的席爽,某些情況下滿足了復(fù)雜的業(yè)務(wù)/場景需求。通過邏輯控制器可以控制JMeter發(fā)送請求的邏輯啊片,來實現(xiàn)復(fù)雜的業(yè)務(wù)/場景只锻。比如有選擇性執(zhí)行某些請求,循環(huán)執(zhí)行請求紫谷,整體執(zhí)行邏輯上有依賴關(guān)系的請求齐饮,交替執(zhí)行請求等等,都可以使用相應(yīng)的邏輯控制來實現(xiàn)碴里。
● 測試片段
測試片段元素是一種特殊類型的控制器沈矿,與線程組元素同級。它與線程組的區(qū)別在于咬腋,除非被Module Controller或Include Controller引用羹膳,否則它不會執(zhí)行。
測試片段主要用于測試腳本的重用根竿。
三陵像、一個簡單的JMeter測試計劃
以訪問百度為例(www.baidu.com)就珠。
按照如下步驟完成測試計劃:
1.在Test Plan節(jié)點上右鍵,選擇Add->Threads(users)->Thread Group
在Tread Properties項下醒颖,設(shè)置“Number of Threads(users)”為1
2.在Thread Group節(jié)點上右鍵妻怎,選擇Add->Sampler->HTTP Request
在Web Server項下,設(shè)置“Server Name or IP”為www.baidu.com
在HTTP Request項下泞歉,設(shè)置“Path”為/
3.在HTTP Request節(jié)點上右鍵逼侦,選擇Add->Assertions->Response Assertion
在Field to Test項下,選擇“Response Code”
在“Patterns to Test”項下腰耙,點擊“Add”榛丢,輸入200
4.繼續(xù)在HTTP Request節(jié)點上右鍵,選擇Add->Listener->View Results Tree
5.點擊“Save”快捷按鈕挺庞,然后輸入測試計劃文件名晰赞,保存
6.點擊“Start”快捷按鈕執(zhí)行測試,可以在“View Results Tree”中查看測試結(jié)果选侨。
JMeter測試查看結(jié)果樹顯示如下: