JMeter:一個(gè)簡單的測試計(jì)劃怎么做?
一、JMeter概述
▲ JMeter簡介
Apache JMeter?是Apache組織開發(fā)的一款開源軟件,是典型的純Java開發(fā)的應(yīng)用程序,可以在不同平臺比如Windows、Linux或macOS系統(tǒng)上進(jìn)行軟件測試。JMeter主要用于應(yīng)用程序的功能負(fù)載測試以度量軟件的性能,也可以用于其他類型的測試比如接口測試、API測試等。
▲ JMeter版本
JMeter不同的版本,功能有所差異,對JDK的支持也不盡相同。新的JMeter版本有些功能會逐漸改進(jìn)完善,還會引入新的功能組件,性能也會逐步提升。因此在JMeter官方網(wǎng)站的最佳實(shí)踐中,建議用戶無論如何最好使用最新的JMeter版本。
最新版本下載頁面鏈接:
https://jmeter.apache.org/download_jmeter.cgi。
這里以JMeter5.2.1版本進(jìn)行介紹。
▲ JMeter與Loadrunner區(qū)別
▲JMeter GUI界面
當(dāng)JMeter以GUI模式運(yùn)行時(shí),窗口主要由三部分構(gòu)成:
1、功能區(qū)
上方菜單欄,下方工具欄。菜單欄展示了JMeter提供的功能菜單,而工具欄中的圖標(biāo)是常見功能的快捷方式。
2、視圖區(qū)
以樹狀結(jié)構(gòu)呈現(xiàn)JMeter元素,其中“Test Plane”是樹的根節(jié)點(diǎn),每一個(gè)節(jié)點(diǎn)就是一個(gè)JMeter元素。在此區(qū)域可以添加、刪除節(jié)點(diǎn)或者通過拖曳調(diào)整節(jié)點(diǎn)的位置。
3、內(nèi)容區(qū)
當(dāng)在視圖區(qū)選中一個(gè)JMeter元素節(jié)點(diǎn)時(shí),內(nèi)容區(qū)則會相應(yīng)地顯示該元素的內(nèi)容。這時(shí)可以對其內(nèi)容進(jìn)行查看、設(shè)置等操作。
二、JMeter測試組成
JMeter構(gòu)建測試類似于組裝一臺智能電子設(shè)備,比如智能手機(jī)。智能手機(jī)由CPU、內(nèi)存、輸入輸出設(shè)備(比如USB接口,攝像頭等)、屏幕、電池等一系列物理部件構(gòu)成的。
JMeter測試也是由一系列JMeter元素組合起來構(gòu)成的,JMeter提供了構(gòu)建測試的所有元素,你可以隨心所欲的將這些元素組裝起來完成你想要的測試。
JMeter元素有以下四種類型的測試元素:
- 測試計(jì)劃。
- 線程組。
- 組件:包含配置元件、前置處理器、定時(shí)器、后置處理器、斷言與監(jiān)聽器。
- 控制器:包括取樣器、邏輯控制器與測試片段。
(1)測試計(jì)劃
測試計(jì)劃描述了JMeter測試在運(yùn)行時(shí)執(zhí)行的一系列步驟。完整的測試計(jì)劃由一個(gè)或多個(gè)線程組、邏輯控制器、取樣器、監(jiān)聽器、定時(shí)器、斷言和配置元件組成。
測試計(jì)劃元素是JMeter測試樹的根節(jié)點(diǎn),是唯一的,所有的測試元素節(jié)點(diǎn)都位于根節(jié)點(diǎn)之下。
(2)線程組
在手工測試中,測試用例由測試工程師手動執(zhí)行完成。而性能測試與自動化測試的測試用例由選擇的測試工具代替測試工程師來執(zhí)行。JMeter執(zhí)行測試的任務(wù)是由線程組來完成的。打個(gè)比方,線程組相當(dāng)于手工測試中執(zhí)行測試用例的測試工程師。
線程組控制JMeter用來執(zhí)行測試的線程數(shù)。要模擬多少個(gè)用戶(稱之為虛擬用戶)來執(zhí)行測試,可以通過修改線程組的線程數(shù)來實(shí)現(xiàn)。比如將線程數(shù)設(shè)置為10,表示模擬10個(gè)用戶執(zhí)行測試。
所有的取樣器與邏輯控制器都必須位于線程組下,從這個(gè)角度理解,JMeter測試計(jì)劃真正開始于線程組。其他元素,例如監(jiān)聽器,可以直接放在測試計(jì)劃下,在這種情況下,它們將作用于所有的線程組。一個(gè)測試計(jì)劃下可以有多個(gè)線程組,在測試計(jì)劃中可以配置以并行或順序方式啟動多個(gè)線程組。
(3) 組件
JMeter中最基本的元素為元件,元件是JMeter測試中的最小功能單元,每個(gè)元件都具有某種特定的功能。比如“Regular Expression Extractor”元件,可以實(shí)現(xiàn)利用正則表達(dá)式提取響應(yīng)數(shù)據(jù)的功能。
JMeter提供了很多元件,為了方便用戶使用與管理眾多的元件,JMeter將多個(gè)功能類似或邏輯上相關(guān)的元件歸為一類,稱為組件。JMeter包含六大組件: 配置元件、前置處理器、定時(shí)器、后置處理器、斷言與監(jiān)聽器。
配置元件
配置元件與取樣器密切相關(guān)。類似于配置文件之于軟件,軟件配置文件可以影響軟件的行為;同樣通過配置元件可以新增或修改請求內(nèi)容,實(shí)現(xiàn)對請求的自定義。
前置處理器
前置處理器在進(jìn)行取樣器請求之前執(zhí)行一些操作。
如果前置處理器附加到取樣器元素,那么它將在該取樣器元素運(yùn)行之前執(zhí)行。
前置處理器經(jīng)常用于在運(yùn)行之前修改取樣器請求的設(shè)置,或更新未從響應(yīng)文本中提取的變量。
定時(shí)器
默認(rèn)情況下,JMeter線程按順序執(zhí)行取樣器而不會出現(xiàn)暫停的情況。通過將定時(shí)器添加到線程組來指定延遲。如果不加延遲,JMeter可能會在很短的時(shí)間內(nèi)發(fā)送過多的請求到服務(wù)器,導(dǎo)致服務(wù)器負(fù)載過重而崩潰。
定時(shí)器可以使在其作用范圍內(nèi)的每個(gè)取樣器執(zhí)行前延遲一段時(shí)間。
后置處理器
后置處理器在取樣器請求完成后執(zhí)行一些操作。
如果后置處理器附加到取樣器元素,那么它將在該取樣器元素運(yùn)行之后執(zhí)行。
后處理器通常用于處理響應(yīng)數(shù)據(jù),從中提取需要的值。
斷言
斷言用于驗(yàn)證取樣器請求或?qū)?yīng)的響應(yīng)是否返回了期望的結(jié)果。
JMeter測試是否執(zhí)行成功,結(jié)果是否預(yù)期,都可以通過添加斷言來進(jìn)行驗(yàn)證。
監(jiān)聽器
監(jiān)聽器可以在JMeter執(zhí)行測試的過程中搜集相關(guān)的數(shù)據(jù),并將這些數(shù)據(jù)不同的形式,比如樹、圖、報(bào)告等呈現(xiàn)出來。
比如,“圖形結(jié)果”監(jiān)聽器繪制響應(yīng)時(shí)間的曲線圖,“查看結(jié)果樹”監(jiān)聽器顯示取樣器請求和響應(yīng)的詳細(xì)信息等。
此外,有些監(jiān)聽器還可以將搜集到的測試數(shù)據(jù)保存到文件中以供以后使用。
(4)控制器
取樣器
取樣器用于構(gòu)建發(fā)給服務(wù)器處理的請求,即告訴JMeter怎樣將請求發(fā)送到服務(wù)器。例如,若要發(fā)送HTTP請求,可以選擇“HTTP Request”取樣器,同時(shí)還可以通過添加配置元件來自定義請求。
邏輯控制器
取樣器請求默認(rèn)是以先后順序依次執(zhí)行的,某些情況下滿足了復(fù)雜的業(yè)務(wù)/場景需求。通過邏輯控制器可以控制JMeter發(fā)送請求的邏輯,來實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)/場景。比如有選擇性執(zhí)行某些請求,循環(huán)執(zhí)行請求,整體執(zhí)行邏輯上有依賴關(guān)系的請求,交替執(zhí)行請求等等,都可以使用相應(yīng)的邏輯控制來實(shí)現(xiàn)。
測試片段
測試片段元素是一種特殊類型的控制器,與線程組元素同級。它與線程組的區(qū)別在于,除非被Module Controller或Include Controller引用,否則它不會執(zhí)行。
測試片段主要用于測試腳本的重用。
三、一個(gè)簡單的JMeter測試計(jì)劃
以訪問百度為例(www.baidu.com)。
按照如下步驟完成測試計(jì)劃:
1.在Test Plan節(jié)點(diǎn)上右鍵,選擇Add->Threads(users)->Thread Group。
- 在Tread Properties項(xiàng)下,設(shè)置“Number of Threads(users)”為1。
2.在Thread Group節(jié)點(diǎn)上右鍵,選擇Add->Sampler->HTTP Request。
- 在Web Server項(xiàng)下,設(shè)置“Server Name or IP”為www.baidu.com。
- 在HTTP Request項(xiàng)下,設(shè)置“Path”為/。
3.在HTTP Request節(jié)點(diǎn)上右鍵,選擇Add->Assertions->Response Assertion。
- 在Field to Test項(xiàng)下,選擇“Response Code”。
- 在“Patterns to Test”項(xiàng)下,點(diǎn)擊“Add”,輸入200。
4.繼續(xù)在HTTP Request節(jié)點(diǎn)上右鍵,選擇Add->Listener->View Results Tree。
5.點(diǎn)擊“Save”快捷按鈕,然后輸入測試計(jì)劃文件名,保存。
6.點(diǎn)擊“Start”快捷按鈕執(zhí)行測試,可以在“View Results Tree”中查看測試結(jié)果。
JMeter測試查看結(jié)果樹顯示如下: