Jmeter基礎(chǔ)系列(一):Jmeter概述

1.1 JMeter概述

JMeter簡(jiǎn)介

Apache JMeter?是Apache組織開(kāi)發(fā)的一款開(kāi)源軟件,是典型的純Java開(kāi)發(fā)的應(yīng)用程序掉分,可以在不同平臺(tái)比如Windows、Linux或macOS系統(tǒng)上進(jìn)行軟件測(cè)試颈抚。JMeter主要用于應(yīng)用程序的功能負(fù)載測(cè)試以度量軟件的性能读虏,也可以用于其他類型的測(cè)試比如接口測(cè)試,API測(cè)試等墨缘。

JMeter版本

JMeter不同的版本星虹,功能有所差異零抬,對(duì)JDK的支持也不盡相同。新的JMeter版本有些功能會(huì)逐漸改進(jìn)完善,還會(huì)引入新的功能組件,性能也會(huì)逐步提升宽涌。因此在JMeter官方網(wǎng)站的最佳實(shí)踐中叉抡,建議用戶無(wú)論如何最好使用最新的JMeter版本偿荷。

這里以最新的JMeter5.2.1版本進(jìn)行介紹。

JMeter GUI 界面

當(dāng)JMeter以GUI模式運(yùn)行時(shí),窗口主要由三部分構(gòu)成:

1.功能區(qū)

上方菜單欄宇攻,下方工具欄叹哭。菜單欄展示了JMeter提供的功能菜單晰绎,而工具欄中的圖標(biāo)是常見(jiàn)功能的快捷方式彼硫。

2.視圖區(qū)

以樹(shù)狀結(jié)構(gòu)呈現(xiàn)JMeter元素,其中“Test Plane”是樹(shù)的根節(jié)點(diǎn)溶诞,每一個(gè)節(jié)點(diǎn)就是一個(gè)JMeter元素鸯檬。

在此區(qū)域可以添加、刪除節(jié)點(diǎn)螺垢,或者通過(guò)拖曳調(diào)整節(jié)點(diǎn)的位置喧务。

3.內(nèi)容區(qū)

在視圖區(qū)選中一個(gè)JMeter元素節(jié)點(diǎn),相應(yīng)地在內(nèi)容區(qū)則會(huì)顯示該元素的內(nèi)容甩苛□彘梗可以對(duì)其內(nèi)容進(jìn)行查看、設(shè)置等操作讯蒲。

image

1.2 JMeter測(cè)試組成

JMeter構(gòu)建測(cè)試類似于組裝一臺(tái)智能電子設(shè)備痊土,比如智能手機(jī)。智能手機(jī)由CPU墨林、內(nèi)存赁酝、輸入輸出設(shè)備(比如USB接口,攝像頭等)旭等、屏幕酌呆、電池等一系列物理部件構(gòu)成的。

JMeter測(cè)試也是由一系列JMeter元素組合起來(lái)構(gòu)成的搔耕,JMeter提供了構(gòu)建測(cè)試的所有元素隙袁,你可以隨心所欲的將這些元素組裝起來(lái)完成你想要的測(cè)試。

JMeter元素有以下四種類型的測(cè)試元素:

1)測(cè)試計(jì)劃

2)線程組

3)組件

包含配置元件弃榨、定時(shí)器菩收、前置處理器、后置處理器鲸睛、斷言與監(jiān)聽(tīng)器

4)控制器

包括取樣器娜饵、邏輯控制器與測(cè)試片斷

1.2.1 測(cè)試計(jì)劃

測(cè)試計(jì)劃描述了JMeter測(cè)試在運(yùn)行時(shí)執(zhí)行的一系列步驟。完整的測(cè)試計(jì)劃由一個(gè)或多個(gè)線程組官辈、邏輯控制器箱舞、取樣器遍坟、監(jiān)聽(tīng)器、定時(shí)器晴股、斷言和配置元件組成愿伴。

測(cè)試計(jì)劃元素是JMeter測(cè)試樹(shù)的根節(jié)點(diǎn),是唯一的电湘,所有的測(cè)試元素節(jié)點(diǎn)都位于根節(jié)點(diǎn)之下公般。

1.2.2 線程組

在手工測(cè)試中,測(cè)試用例由測(cè)試工程師手動(dòng)執(zhí)行完成胡桨。而性能測(cè)試與自動(dòng)化測(cè)試的測(cè)試用例由選擇的測(cè)試工具代替測(cè)試工程師來(lái)執(zhí)行。JMeter執(zhí)行測(cè)試的任務(wù)是由線程組來(lái)完成的瞬雹。打個(gè)比方昧谊,線程組相當(dāng)于手工測(cè)試中執(zhí)行測(cè)試用例的測(cè)試工程師。

線程組控制JMeter用來(lái)執(zhí)行測(cè)試的線程數(shù)酗捌。要模擬多少個(gè)用戶(稱之為虛擬用戶)來(lái)執(zhí)行測(cè)試呢诬,可以通過(guò)修改線程組的線程數(shù)來(lái)實(shí)現(xiàn)。比如將線程數(shù)設(shè)置為10胖缤,表示模擬10個(gè)用戶執(zhí)行測(cè)試尚镰。

所有的取樣器與邏輯控制器都必須位于線程組下,從這個(gè)角度理解哪廓,JMeter測(cè)試計(jì)劃真正開(kāi)始于線程組狗唉。其他元素,例如監(jiān)聽(tīng)器涡真,可以直接放在測(cè)試計(jì)劃下分俯,在這種情況下,它們將作用于所有的線程組哆料。

一個(gè)測(cè)試計(jì)劃下可以有多個(gè)線程組缸剪,在測(cè)試計(jì)劃中可以配置以并行或順序方式啟動(dòng)多個(gè)線程組。

1.2.3 組件

JMeter中最基本的元素為元件东亦,元件是JMeter測(cè)試中的最小功能單元杏节,每個(gè)元件都具有某種特定的功能。比如“Response Assertion”斷言元件典阵,可以實(shí)現(xiàn)對(duì)請(qǐng)求或響應(yīng)是否預(yù)期的驗(yàn)證奋渔。

JMeter提供了很多元件,為了方便用戶使用與管理眾多的元件萄喳,JMeter將多個(gè)功能類似或邏輯上相關(guān)的元件歸為一類卒稳,稱為組件。JMeter包含六大組件: 配置元件他巨、定時(shí)器充坑、前置處理器减江、后置處理器、斷言捻爷、監(jiān)聽(tīng)器辈灼。

  • 配置元件

配置元件與取樣器密切相關(guān)。類似于配置文件之于軟件也榄,軟件配置文件可以影響軟件的行為巡莹;同樣通過(guò)配置元件可以新增或修改請(qǐng)求內(nèi)容,實(shí)現(xiàn)對(duì)請(qǐng)求的自定義甜紫。

  • 定時(shí)器

默認(rèn)情況下降宅,JMeter線程按順序執(zhí)行取樣器而不會(huì)出現(xiàn)暫停的情況。通過(guò)將定時(shí)器添加到線程組來(lái)指定延遲囚霸。如果不加延遲腰根,JMeter可能會(huì)在很短的時(shí)間內(nèi)發(fā)送過(guò)多的請(qǐng)求到服務(wù)器,導(dǎo)致服務(wù)器負(fù)載過(guò)重而崩潰拓型。

定時(shí)器可以使在其作用范圍內(nèi)的每個(gè)取樣器執(zhí)行前延遲一段時(shí)間额嘿。

  • 前置處理器

前置處理器在進(jìn)行取樣器請(qǐng)求之前執(zhí)行一些操作。

如果前置處理器附加到取樣器元素劣挫,那么它將在該取樣器元素運(yùn)行之前執(zhí)行册养。

前置處理器經(jīng)常用于在運(yùn)行之前修改取樣器請(qǐng)求的設(shè)置,或更新未從響應(yīng)文本中提取的變量压固。

  • 后置處理器

后置處理器在取樣器請(qǐng)求完成后執(zhí)行一些操作球拦。

如果后置處理器附加到取樣器元素,那么它將在該取樣器元素運(yùn)行之后執(zhí)行帐我。

后處理器通常用于處理響應(yīng)數(shù)據(jù)刘莹,從中提取需要的值。

  • 斷言

斷言用于驗(yàn)證取樣器請(qǐng)求或?qū)?yīng)的響應(yīng)是否返回了期望的結(jié)果焚刚。

JMeter測(cè)試是否執(zhí)行成功点弯,結(jié)果是否預(yù)期,都可以通過(guò)添加斷言來(lái)進(jìn)行驗(yàn)證矿咕。

  • 監(jiān)聽(tīng)器

監(jiān)聽(tīng)器可以在JMeter執(zhí)行測(cè)試的過(guò)程中搜集相關(guān)的數(shù)據(jù)抢肛,并將這些數(shù)據(jù)不同的形式,比如樹(shù)碳柱、圖捡絮、報(bào)告等呈現(xiàn)出來(lái)。

比如莲镣,“圖形結(jié)果”監(jiān)聽(tīng)器繪制響應(yīng)時(shí)間的曲線圖福稳,“查看結(jié)果樹(shù)”監(jiān)聽(tīng)器顯示取樣器請(qǐng)求和響應(yīng)的詳細(xì)信息等。

此外瑞侮,有些監(jiān)聽(tīng)器還可以將搜集到的測(cè)試數(shù)據(jù)保存到文件中以供以后使用的圆。

1.2.4 控制器

  • 取樣器

取樣器用于構(gòu)建發(fā)給服務(wù)器處理的請(qǐng)求鼓拧,即告訴JMeter怎樣將請(qǐng)求發(fā)送到服務(wù)器。例如越妈,若要發(fā)送HTTP請(qǐng)求季俩,可以選擇“HTTP Request”取樣器,同時(shí)還可以通過(guò)添加配置元件來(lái)自定義請(qǐng)求梅掠。

  • 邏輯控制器

取樣器請(qǐng)求默認(rèn)是以先后順序依次執(zhí)行的酌住,某些情況下滿足了復(fù)雜的業(yè)務(wù)/場(chǎng)景需求。通過(guò)邏輯控制器可以控制JMeter發(fā)送請(qǐng)求的邏輯阎抒,來(lái)實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)/場(chǎng)景酪我。比如有選擇性執(zhí)行某些請(qǐng)求,循環(huán)執(zhí)行請(qǐng)求且叁,整體執(zhí)行邏輯上有依賴關(guān)系的請(qǐng)求祭示,交替執(zhí)行請(qǐng)求等。

1.3 JMeter執(zhí)行順序與作用域

1.3.1 執(zhí)行順序

類似于運(yùn)算符或操作符的優(yōu)先級(jí)谴古,當(dāng)JMeter測(cè)試中包含多個(gè)不同的元素時(shí),哪些元素先執(zhí)行稠歉,哪些元素后執(zhí)行掰担,并不是嚴(yán)格按照它們出現(xiàn)的先后順序依次有序執(zhí)行的,而是會(huì)遵循一定的內(nèi)部規(guī)則怒炸,我們稱之為JMeter元素的執(zhí)行順序带饱,一般情況下JMeter元素按照如下順序依次執(zhí)行:

0. 配置元件
1. 前置處理器
2. 定時(shí)器
3. 取樣器
4. 后置處理器
5. 斷言
6. 監(jiān)聽(tīng)器

一個(gè)簡(jiǎn)單的例子:

image

其中①為取樣器、②為配置元件阅羹、③為定時(shí)器勺疼、④為監(jiān)聽(tīng)器、⑤為前置處理器捏鱼、⑥為后置處理器执庐、⑦為斷言。

執(zhí)行順序?yàn)椋孩?->⑤-->③-->①-->⑥-->⑦-->④

1.3.2 作用域

JMeter測(cè)試樹(shù)中的元素可以分為兩類:層次結(jié)構(gòu)與順序結(jié)構(gòu)

層次結(jié)構(gòu)的元素包括:配置元件导梆、定時(shí)器轨淌、前置處理器、后置處理器看尼、斷言與監(jiān)聽(tīng)器递鹉;

順序結(jié)構(gòu)的元素包括:取樣器和邏輯控制器。

一般而言順序結(jié)構(gòu)的元素沒(méi)有作用域的概念藏斩,而作用域只針對(duì)具有層次結(jié)構(gòu)的組件躏结。

JMeter作用域就是組件對(duì)取樣器有效的區(qū)域,在這個(gè)區(qū)域內(nèi)組件是起作用的狰域。

層次結(jié)構(gòu)的元素作用域

具有層次結(jié)構(gòu)的元素的作用域規(guī)則如下:

(1)若其父節(jié)點(diǎn)為取樣器媳拴,則其只對(duì)該取樣器起作用黄橘;
(2)若其父節(jié)點(diǎn)為邏輯控制器,則會(huì)影響邏輯控制器下的所有取樣器禀挫;
(3)若其父節(jié)點(diǎn)為線程組旬陡,則會(huì)影響線程組下的所有取樣器;
(4)若其父節(jié)點(diǎn)為測(cè)試計(jì)劃语婴,則會(huì)影響測(cè)試計(jì)劃下的所有取樣器描孟。

一些例子:

1.父節(jié)點(diǎn)為取樣器

-Test Plan
    -Thread Group
        HTTP Request1
            Response Assertion
            View Results Treel
        HTTP Request2
            View Results Tree2

解析:

“Response Assertion”斷言的父節(jié)點(diǎn)為“HTTP Request1”取樣器,則只會(huì)對(duì)“HTTP Request1”進(jìn)行斷言砰左,不會(huì)斷言“HTTP Request2”取樣器匿醒。

2.父節(jié)點(diǎn)為邏輯控制器

-Test Plan
    -Thread Group
        -Loop Controller
            Response Assertion
            -HTTP Request1
                View Results Treel
            -HTTP Request2
                View Results Tree2

解析:

“Response Assertion”斷言的父節(jié)點(diǎn)為“Loop Controller”邏輯控制器,“Response Assertion”會(huì)對(duì)邏輯控制下的“HTTP Request1”取樣器和“HTTP Request2”取樣器進(jìn)行斷言缠导。

3.父節(jié)點(diǎn)為線程組

-Test Plan
    -Thread Group
        Response Assertion
        -HTTP Request1
            View Results Treel
        -Loop Controller
            -HTTP Request2
                View Results Tree2
            -HTTP Request3
                View Results Tree3

解析:

“Response Assertion”斷言的父節(jié)點(diǎn)為“Thread Group”線程組廉羔,“Response Assertion”會(huì)對(duì)線程組下的“HTTP Request1”取樣器、“HTTP Request2”取樣器與“HTTP Request3”取樣器進(jìn)行斷言僻造。

4.父節(jié)點(diǎn)為測(cè)試計(jì)劃

-Test Plan
    Response Assertion
    -Thread Groupl
        -HTTP Request1
            View Results Treel
        -Loop Controller
            -HTTP Request2
                View Results Tree2
    -Thread Group2
        -HTTP Request3
            View Results Tree3

解析:

“Response Assertion”斷言的父節(jié)點(diǎn)為“Test Plan”測(cè)試計(jì)劃憋他,“Response Assertion”會(huì)對(duì)測(cè)試計(jì)劃下的“HTTP Request1”取樣器、“HTTP Request2”取樣器與“HTTP Request3”進(jìn)行斷言髓削。

1.4 一個(gè)簡(jiǎn)單的JMeter測(cè)試計(jì)劃

以訪問(wèn)百度為例(www.baidu.com)竹挡。

按照如下步驟完成測(cè)試計(jì)劃:
1.在Test Plan節(jié)點(diǎn)上右鍵,選擇Add->Treads(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”快捷按鈕闯捎,然后輸入測(cè)試計(jì)劃文件名搅窿,保存
6.點(diǎn)擊“Start”快捷按鈕執(zhí)行測(cè)試,可以在“View Results Tree”中查看測(cè)試結(jié)果隙券。

JMeter測(cè)試查看結(jié)果樹(shù)顯示如下:
image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末男应,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子娱仔,更是在濱河造成了極大的恐慌沐飘,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異耐朴,居然都是意外死亡借卧,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門筛峭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)铐刘,“玉大人,你說(shuō)我怎么就攤上這事影晓×常” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵挂签,是天一觀的道長(zhǎng)疤祭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)饵婆,這世上最難降的妖魔是什么勺馆? 我笑而不...
    開(kāi)封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮侨核,結(jié)果婚禮上草穆,老公的妹妹穿的比我還像新娘。我一直安慰自己搓译,他們只是感情好悲柱,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著侥衬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪跑芳。 梳的紋絲不亂的頭發(fā)上轴总,一...
    開(kāi)封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音博个,去河邊找鬼怀樟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛盆佣,可吹牛的內(nèi)容都是我干的往堡。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼共耍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼虑灰!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起痹兜,我...
    開(kāi)封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤穆咐,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體对湃,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡崖叫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拍柒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片心傀。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拆讯,靈堂內(nèi)的尸體忽然破棺而出脂男,到底是詐尸還是另有隱情,我是刑警寧澤往果,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布疆液,位于F島的核電站,受9級(jí)特大地震影響陕贮,放射性物質(zhì)發(fā)生泄漏堕油。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一肮之、第九天 我趴在偏房一處隱蔽的房頂上張望掉缺。 院中可真熱鬧,春花似錦戈擒、人聲如沸眶明。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)搜囱。三九已至,卻和暖如春柑土,著一層夾襖步出監(jiān)牢的瞬間蜀肘,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工稽屏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扮宠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓狐榔,卻偏偏與公主長(zhǎng)得像坛增,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子薄腻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容