Jmeter 主要元件

Jmeter 主要概念

JMeter 工具與其他性能測試工具在原理上完全一致魏宽,工具本身包含4個(gè)部分院仿。

1. 負(fù)載發(fā)生器

用于產(chǎn)生負(fù)載,通常以多線程或多進(jìn)程的方式模擬用戶行為凄诞。

2. 用戶運(yùn)行器

通常是一個(gè)腳本運(yùn)行引擎强饮,用戶運(yùn)行器附加在線程或者進(jìn)程上由桌,根據(jù)腳本要求模擬指定的用戶行為。

3. 資源監(jiān)視器

用于獲取測試過程中服務(wù)器邮丰、負(fù)載機(jī)的資源數(shù)據(jù)

4. 報(bào)表生成器

根據(jù)測試中獲得的數(shù)據(jù)生成報(bào)表行您,提供可視化的數(shù)據(jù)顯示方式

Jmeter 的主要元件

1. Test plan(測試計(jì)劃)

Test Plan 元素:控制型元素。只能存在于樹形結(jié)構(gòu)的根節(jié)點(diǎn)剪廉。它代表了整個(gè)測試方案娃循,測試人員可以在這里設(shè)置一些全局性的內(nèi)容,例如全局變量(注意全局變量是 Thread Local)斗蒋、ClassPath 配置(如果希望在 Jmeter 中調(diào)用自己的 Java 類就需要在這里設(shè)置了)淮野。

啟動(dòng) Jmeter 后捧书,Jmeter 會(huì)自動(dòng)生成一個(gè)空的測試計(jì)劃,用于可以基于該測試計(jì)劃建立自己的測試計(jì)劃骤星。

注意:里面名稱和注釋沒有什么好說的,重點(diǎn)注意的是 獨(dú)立運(yùn)行每個(gè)線程組(例如在一個(gè)組運(yùn)行結(jié)束后啟動(dòng)下一個(gè))

image.png

例子:創(chuàng)建 A爆哑、B 兩個(gè)線程組洞难。

image.png

如果不勾選獨(dú)立運(yùn)行每個(gè)線程組,這兩個(gè)線程組就一起跑揭朝。我們添加兩個(gè) HTTP 請(qǐng)求队贱,小a和小b

image.png

我們添加個(gè)監(jiān)聽器(添加方式這里先不說,看后面文章)跑一次看一下潭袱。


image.png

如果勾選獨(dú)立運(yùn)行每個(gè)線程組柱嫌,會(huì)嚴(yán)格遵守順序 AB 從上往下依次運(yùn)行。

image.png

2. Thread Group(線程組)
Thread Group 元素:控制型元素屯换。只能存在于 Test Plan 元素之下编丘。它代表了一組行為相似的用戶,通常我們把一類用戶的動(dòng)作放在同一個(gè) Thread Group 下彤悔,這樣就可以模擬多個(gè)這樣的用戶了嘉抓。在這里可以配置模擬用戶的個(gè)數(shù)(線程的個(gè)數(shù))、循環(huán)次數(shù)晕窑、執(zhí)行時(shí)間等抑片。

一個(gè)線程組可以看做是一個(gè)虛擬用戶組,Thread Group 中的每個(gè)線程都可以理解為一個(gè)虛擬用戶杨赤。Thread Group 中包含的線程數(shù)量在測試執(zhí)行過程中是不會(huì)發(fā)生改變的敞斋。

Jmeter 中每個(gè)測試計(jì)劃至少需要包含一個(gè)線程組,當(dāng)然也可以在一個(gè)線程中創(chuàng)建多個(gè)線程組疾牲,那么多個(gè)線程組之間又會(huì)怎樣的順序執(zhí)行(串行還是并行)植捎?在測試計(jì)劃下面多個(gè)線程是并行執(zhí)行的,也就是說這些線程組是同時(shí)被初始化并同時(shí)執(zhí)行線程組下的 Sampler(采樣器) 的说敏。

image.png

線程組有三個(gè)鸥跟,用法如下。

Thread Group:線程組(操作)---2
setUp Thread Group:初始化(登錄)---1
TearDown Thread Group:結(jié)束-恢復(fù)(登出)---3

線程組參數(shù)詳解
線程組主要包括三個(gè)參數(shù):線程數(shù)盔沫、準(zhǔn)備時(shí)長(Ramp-Up Period(in seconds))医咨、循環(huán)次數(shù)。

image.png

線程數(shù):虛擬用戶數(shù)架诞。一個(gè)虛擬用戶占用一個(gè)進(jìn)程或線程拟淮。設(shè)置多少虛擬用戶數(shù)在這里也就設(shè)置多少個(gè)線程數(shù)。
準(zhǔn)備時(shí)長:設(shè)置的虛擬用戶數(shù)需要多長時(shí)間全部啟動(dòng)谴忧。如果線程數(shù)為20很泊,準(zhǔn)備時(shí)長為10角虫,那么需要10秒鐘啟動(dòng)20個(gè)線程。也就是每秒鐘啟動(dòng)2個(gè)線程委造。
循環(huán)次數(shù):每個(gè)線程發(fā)送請(qǐng)求的次數(shù)戳鹅。如果線程數(shù)為20,循環(huán)次數(shù)為100昏兆,那么每個(gè)線程發(fā)送100次請(qǐng)求枫虏。總請(qǐng)求數(shù)為 20*100=2000爬虱。如果勾選了 “永遠(yuǎn)”隶债,那么所有線程會(huì)一直發(fā)送請(qǐng)求,一直到選擇停止運(yùn)行腳本跑筝。
設(shè)置合理的線程數(shù)對(duì)于能否達(dá)到測試目標(biāo)有 決定性的影響死讹。另外設(shè)置合理的循環(huán)次數(shù)也很重要,除了上面介紹的固定循環(huán)次數(shù)與永遠(yuǎn)外曲梗;也可以靈活的選擇設(shè)定測試運(yùn)行時(shí)間赞警。勾選 “調(diào)度器”,進(jìn)行調(diào)度器配置稀并。

有個(gè)誤區(qū)這里要注意一下仅颇,看一下下面兩張圖的配置。

雖然結(jié)果不一樣碘举,但是它們最終產(chǎn)生的都是10個(gè)請(qǐng)求忘瓦。
第一張圖:5秒鐘啟動(dòng)5個(gè)用戶,一秒鐘啟動(dòng)一個(gè)用戶引颈,用表格查看結(jié)果會(huì)發(fā)現(xiàn)一個(gè)特點(diǎn)耕皮,感覺是5秒鐘啟動(dòng)10個(gè),這只是表面現(xiàn)象蝙场,它是這么做的我在第1秒第一個(gè)用戶被啟之后隔了1秒啟動(dòng)第2個(gè)凌停,在啟第2個(gè)的同時(shí)第1個(gè)要執(zhí)行第二次的循環(huán),所以感覺是5秒啟動(dòng)10個(gè)請(qǐng)求售滤。記住一個(gè)原理罚拟,它啟動(dòng)之后不等你響應(yīng),但是它在表格查看結(jié)果里面感覺它是等響應(yīng)的完箩。因?yàn)樵诒砀癫榭唇Y(jié)果里面它是等響應(yīng)的赐俗,等你得了響應(yīng)它才顯示出來,所以表格查看結(jié)果顯示里面顯示和發(fā)的不一定同步的弊知,顯示一般會(huì)滯后阻逮,你1秒發(fā)一個(gè),可能我等的時(shí)間很長秩彤。
第二張圖:5秒啟10個(gè)叔扼,只管發(fā)出去事哭。

image.png
image.png

3. 斷言元件

  • 3.1.1 響應(yīng)斷言

響應(yīng)斷言:通過檢查服務(wù)器的響應(yīng)數(shù)據(jù):是否符合預(yù)期想要的數(shù)據(jù),判斷任務(wù)是否成功
注意:增加響應(yīng)斷言要注意一個(gè)細(xì)節(jié)問題瓜富,在Jmeter中作用域非常關(guān)鍵鳍咱,元件一旦放錯(cuò)了,很有可能你得到的結(jié)果跟你的場景效果完全不一樣食呻。
你想去判別哪個(gè)請(qǐng)求流炕,就放在哪個(gè)請(qǐng)求里面去不能放外面,因?yàn)閷?duì)于我們來說有三種作用域仅胞,第一種測試計(jì)劃的(全局的)、第二種線程組的(第二級(jí)別的全局)剑辫、第三個(gè)是請(qǐng)求的干旧,不同的作用域代表的效果不一樣。

image.png
image.png

-3.2.2 斷言持續(xù)時(shí)間

斷言持續(xù)時(shí)間:判斷是否在給定的時(shí)間內(nèi)給出響應(yīng)結(jié)果

image.png

例子

協(xié)議:http
ip地址:xxxx(如果是域名就寫域名)
端口:xxxx
路徑:我們這里不需要進(jìn)行操作直接寫 / 就好妹蔽。

image.png

斷言里面寫上匹配的內(nèi)容椎眯。

image.png

4. 監(jiān)聽元件——查看結(jié)果樹

請(qǐng)求寫好之后,添加監(jiān)聽元件胳岂,監(jiān)聽元件主要常用的有查看結(jié)果樹编整、聚合報(bào)告、表格查看結(jié)果乳丰、圖形結(jié)果掌测,我們這里使用第一個(gè)查看結(jié)果樹。
注意:查看結(jié)果樹如果斷言成功它沒有顯示产园,如果斷言失敗它是有顯示的(顯示紅色)汞斧。看具體某個(gè)請(qǐng)求的請(qǐng)求響應(yīng)結(jié)果明細(xì),可以使用查看結(jié)果樹

下面截圖一個(gè)斷言成功什燕,一個(gè)斷言失敗的粘勒。

image.png

查看結(jié)果樹里面是有非常多內(nèi)容的,請(qǐng)求下面有2個(gè)一個(gè)是 Request Body(請(qǐng)求體) 另一個(gè)是 Request Headers(請(qǐng)求頭) 屎即,有響應(yīng)數(shù)據(jù)和取樣器庙睡,里面請(qǐng)求方式響應(yīng)體的內(nèi)容都有,可以多研究一下技俐。

image.png

4.1 監(jiān)聽元件-聚合報(bào)告

所謂聚合報(bào)告相當(dāng)于一個(gè)匯總的報(bào)告乘陪,它會(huì)把所有請(qǐng)求放在一塊。 聚合報(bào)告一般是一個(gè)綜合報(bào)告虽另,里面會(huì)顯示整個(gè)跑的一個(gè)場景暂刘。匯總報(bào)告--匯總結(jié)果,可以使用聚合報(bào)告

image.png

里面的中位數(shù)和百分位單位是 毫秒 叫響應(yīng)時(shí)間捂刺,平均數(shù)只能參考不能看谣拣,因?yàn)檫@個(gè)東西太坑了募寨,比如考試全班平均分70分,兩級(jí)分化特別嚴(yán)重森缠。還有工資被平均了拔鹰,這里大家都懂的哈。

這里一般看90%的比較多贵涵。

這里有個(gè)要注意的地方列肢,如果我只想清除聚合報(bào)告的數(shù)據(jù)該怎么清?上面有兩個(gè)掃把宾茂,這里點(diǎn)擊左邊這把瓷马,刪除當(dāng)前的。如果點(diǎn)擊右邊的就會(huì)把監(jiān)聽器所有的數(shù)據(jù)都清空了跨晴。

image.png

4.2 監(jiān)聽元件-表格查看結(jié)果

如果想看每個(gè)請(qǐng)求的詳情欧聘,可以用表格查看結(jié)果,這是一個(gè)顆粒度問題端盆。里面的1-1怀骤,第一個(gè)1是第1個(gè)線程組的編號(hào),第二個(gè)1是用戶焕妙。

image.png
image.png

4.3 監(jiān)聽元件-圖形結(jié)果

這個(gè)組件是在聚合報(bào)告(Aggregate report)的基礎(chǔ)之上增加了圖形化展示蒋伦,把數(shù)據(jù)轉(zhuǎn)化成柱狀圖的形式展示,并且可以編輯圖形展示的樣式焚鹊,以圖形化展示結(jié)果痕届。

image.png
5. 定時(shí)器元件

5.1 固定定時(shí)器 Constant Timer

固定定時(shí)器一般叫思考時(shí)間,所謂思考時(shí)間就是盡可能模擬用戶使用情況寺旺。比如下面有個(gè)線程組爷抓,我希望首頁登錄完之后,b請(qǐng)求等2秒鐘時(shí)間阻塑。

image.png

這里就需要增加固定定時(shí)器蓝撇,這里要注意作用域,固定定時(shí)器是一個(gè)前置的處理程序陈莽,是先運(yùn)行固定定時(shí)器渤昌,再運(yùn)行請(qǐng)求的。這里我們要放置在b里面走搁,運(yùn)行b之前先等待2秒鐘独柑。

image.png
image.png

**5.2 同步定時(shí)器 **

作用
模擬并發(fā)。設(shè)置一個(gè)閥值(請(qǐng)求數(shù)量)私植,當(dāng)請(qǐng)求數(shù)達(dá)到這個(gè)閥值時(shí)忌栅,允許請(qǐng)求同時(shí)發(fā)出。例如:想測試一座橋的并發(fā)(忽略載重等其他因素曲稼,只考慮通過)索绪,那么并發(fā)的請(qǐng)求就是類似于多少輛車可同時(shí)通過橋湖员,而車輛一般情況下是不可能同時(shí)通過橋的,因而我們可以在橋頭A瑞驱,設(shè)置一個(gè)集合點(diǎn)娘摔,等車輛數(shù)滿足一定的數(shù)量,同時(shí)讓車輛通過此橋唤反。

image.png

同步定時(shí)器有兩個(gè)參數(shù)需要填寫凳寺,第一個(gè)模擬用戶的數(shù)量,第二個(gè)超時(shí)時(shí)間以毫秒為單位彤侍。這里面的兩個(gè)0標(biāo)識(shí)不限制不設(shè)置肠缨,第一個(gè)0標(biāo)識(shí)全部,第二個(gè)0表示超時(shí)盏阶,不等到那個(gè)人我一直等下去怜瞒。

image.png
6.邏輯控制器

僅一次控制器:只運(yùn)行一次,這個(gè)請(qǐng)求只運(yùn)行一遍般哼,如果2個(gè)用戶運(yùn)行2遍,以用戶為單元惠窄。

image.png
image.png
image.png

轉(zhuǎn)換控制器(switch Controller) 選擇控制器蒸眠,比如我有a用戶,它里面有兩種場景1業(yè)務(wù)和2業(yè)務(wù)杆融。不是讓他一直運(yùn)行1或者一直運(yùn)行2楞卡,我現(xiàn)在想讓他交替運(yùn)行。就可以用轉(zhuǎn)換控制器脾歇,什么時(shí)候條件滿足選擇1蒋腮,什么時(shí)候條件滿足選擇2。

image.png
image.png

添加轉(zhuǎn)換控制器要把請(qǐng)求放進(jìn)去藕各,Switch Value 的值是從下標(biāo)0開始的池摧。0代表的首頁訪問,這里填寫0就只運(yùn)行首頁訪問激况。Switch Value 這里的值可以通過參數(shù)化隨機(jī)數(shù)來做作彤。

image.png
image.png

循環(huán)控制器 就是控制循環(huán)的次數(shù),跟代碼中的while一樣乌逐,不過多解釋

事務(wù)控制器 訂單提交竭讳,其會(huì)調(diào)用多個(gè)接口。首先我們要區(qū)分一個(gè)問題浙踢,打個(gè)比方我們點(diǎn)擊一個(gè)登陸按鈕或者查詢訂單的绢慢,我們按鈕按下去會(huì)發(fā)送多個(gè)請(qǐng)求到服務(wù)器,這個(gè)要理解叫事務(wù)數(shù)洛波,Jmeter最小單元是請(qǐng)求胰舆,如果說一個(gè)動(dòng)作或業(yè)務(wù)他的一步操作有很多請(qǐng)求的話我不可能去把它自己加起來骚露。

例子:比如下面線程組-2有兩個(gè)請(qǐng)求。這個(gè)查詢操作有兩個(gè)操作a和b請(qǐng)求思瘟,如果我們直接運(yùn)行的話荸百,在聚合報(bào)告中我們可以看到有2個(gè)(圖2)。如果我想看這個(gè)查詢的功能具體響應(yīng)時(shí)間到底是多少呢滨攻,我得自己加够话。會(huì)很麻煩。

image.png
image.png

為了解決上面的問題光绕,我們可以增加 事務(wù)控制器 女嘲,然后把請(qǐng)求都放到事務(wù)控制器里面,可以看到數(shù)據(jù)都幫我們統(tǒng)計(jì)出來了(圖2)诞帐,用表格查看結(jié)果里面顯示了有3個(gè)請(qǐng)求欣尼,是因?yàn)槭聞?wù)控制里面有兩個(gè)選項(xiàng),如果不勾的話 查詢-事務(wù) 就會(huì)單獨(dú)顯示停蕉,它是一個(gè)總和在查看結(jié)果樹里面是3個(gè)(但是事務(wù)請(qǐng)求里面沒有東西愕鼓,因?yàn)樗且粋€(gè)虛擬的就為了統(tǒng)計(jì)一個(gè)東西剥险。)望门,

image.png
image.png

事務(wù)控制器里面有兩個(gè)選項(xiàng)。Generate parent sample 如果選中呆万,則生成樣本為其他樣本的父項(xiàng)(圖2)蚓挤,這里注意勾選之后如果一個(gè)請(qǐng)求失敗這個(gè)事務(wù)就失敗了磺送。勾選之后意味著他們就是一個(gè)整體。如果不勾選樣本將作為獨(dú)立樣本生成(圖3)灿意,那個(gè)失敗就會(huì)顯示出來估灿。

Include duration of timer and pre-post processors in generated sample:是否在生成樣本中包括計(jì)時(shí)器,預(yù)處理和后處理延遲缤剧。默認(rèn)值為false馅袁。一般不建議選擇。因?yàn)檫x擇會(huì)把一些額外時(shí)間算入總時(shí)間鞭执,勾選則會(huì)把其他時(shí)間算入事務(wù)總數(shù)司顿。勾完之后如果整個(gè)事務(wù)里面添加固定定時(shí)器,他會(huì)算2次的兄纺。

image.png
image.png
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載大溜,如需轉(zhuǎn)載請(qǐng)通過簡信或評(píng)論聯(lián)系作者。
  • 序言:七十年代末估脆,一起剝皮案震驚了整個(gè)濱河市钦奋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖付材,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朦拖,死亡現(xiàn)場離奇詭異,居然都是意外死亡厌衔,警方通過查閱死者的電腦和手機(jī)璧帝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來富寿,“玉大人睬隶,你說我怎么就攤上這事∫承欤” “怎么了苏潜?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長变勇。 經(jīng)常有香客問我恤左,道長,這世上最難降的妖魔是什么搀绣? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任飞袋,我火速辦了婚禮,結(jié)果婚禮上链患,老公的妹妹穿的比我還像新娘授嘀。我一直安慰自己,他們只是感情好锣险,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著览闰,像睡著了一般芯肤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上压鉴,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天崖咨,我揣著相機(jī)與錄音,去河邊找鬼油吭。 笑死击蹲,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的婉宰。 我是一名探鬼主播歌豺,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼心包!你這毒婦竟也來了类咧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎痕惋,沒想到半個(gè)月后区宇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡值戳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年议谷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堕虹。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卧晓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鲫凶,到底是詐尸還是另有隱情禀崖,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布螟炫,位于F島的核電站波附,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏昼钻。R本人自食惡果不足惜掸屡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望然评。 院中可真熱鬧仅财,春花似錦、人聲如沸碗淌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亿眠。三九已至碎罚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纳像,已是汗流浹背荆烈。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竟趾,地道東北人憔购。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像岔帽,于是被迫代替她去往敵國和親玫鸟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353