JMeter有一些基礎(chǔ)的測(cè)試元件礼烈,像上一篇文章說(shuō)的用JMeter發(fā)送請(qǐng)求的練習(xí)中峭拘,測(cè)試計(jì)劃中所添加的線程組匹摇、取樣器咬扇、監(jiān)聽(tīng)器等都屬于JMeter測(cè)試計(jì)劃的元件。
下面我們就來(lái)逐一介紹一下有哪些測(cè)試計(jì)劃元件廊勃,和他們的作用懈贺。
1、測(cè)試計(jì)劃:Test Plan
測(cè)試計(jì)劃用來(lái)描述一個(gè)性能測(cè)試坡垫,包含性能測(cè)試所有相關(guān)的功能隅居。也就是說(shuō)進(jìn)行一次性能測(cè)試的所有內(nèi)容都是基于一個(gè)測(cè)試計(jì)劃中。
JMeter中一個(gè)腳本就是一個(gè)測(cè)試計(jì)劃(Test Plan)葛虐,也是一個(gè)管理單元胎源。JMeter的請(qǐng)求模擬與并發(fā)數(shù)設(shè)置都在腳本文件中一起設(shè)置。(并發(fā)數(shù)就是設(shè)置線程數(shù)屿脐,一個(gè)線程代表一個(gè)虛擬用戶)
腳本中只能有一個(gè)測(cè)試計(jì)劃涕蚤。
-
測(cè)試計(jì)劃中至少有一個(gè)線程組:Jmeter 負(fù)載是通過(guò)線程組驅(qū)動(dòng)的,所以至少要有一個(gè)線程組的诵。
我們可以把不相關(guān)聯(lián)的業(yè)務(wù)分布在不同的線程組中万栅。
至少有一個(gè)取樣器:測(cè)試的目的是模擬用戶請(qǐng)求,沒(méi)有取樣腳本就沒(méi)有意義西疤。
至少有一個(gè)監(jiān)聽(tīng)器:我們需要根據(jù)測(cè)試結(jié)果來(lái)分析系統(tǒng)性能烦粒,所以至少得有一個(gè)監(jiān)聽(tīng)器。
一個(gè)測(cè)試計(jì)劃中代赁,添加選項(xiàng)下面的內(nèi)容都是JMeter測(cè)試計(jì)劃的元件扰她,下圖所示:
2、線程(用戶):Threads(Users)
線程(用戶)就是我們通常要添加運(yùn)行的線程芭碍。通俗的講徒役,一個(gè)線程組可以看做一個(gè)虛擬用戶組,線程組中的每個(gè)線程都可以理解為一個(gè)虛擬用戶窖壕。
線程組中包含的線程數(shù)量在測(cè)試執(zhí)行過(guò)程中是不會(huì)發(fā)生改變的忧勿。每個(gè)線程完全獨(dú)立的運(yùn)行測(cè)試計(jì)劃,互不干擾瞻讽,多個(gè)線程用于模仿對(duì)服務(wù)器的并發(fā)訪問(wèn)鸳吸。
所有控制器和采樣器必須在線程組下。其他元件(例如偵聽(tīng)器)可以直接放置在測(cè)試計(jì)劃下速勇,在這種情況下晌砾,它們將應(yīng)用于所有線程組。
(1)添加線程(用戶)
“測(cè)試計(jì)劃”右鍵 —> “添加” —> “線程(用戶)”快集,有三個(gè)添加線程組的選項(xiàng)贡羔。如下圖:
注意:如果你還安裝了其他的組件或者插件的話,還會(huì)有一些其他的線程選項(xiàng)个初。
說(shuō)明:
-
Setup thread group
:setUp線程組一種特殊類型的線程組乖寒,可用于執(zhí)行預(yù)測(cè)試操作。和普通的線程組元件一樣院溺,不同的是楣嘁,這種類型的線程執(zhí)行測(cè)試前進(jìn)行定期線程組的執(zhí)行。
換句話說(shuō)珍逸,setUp線程組執(zhí)行順序是逐虚,它會(huì)在普通線程組執(zhí)行之前被觸發(fā)。
應(yīng)用場(chǎng)景舉例:測(cè)試數(shù)據(jù)庫(kù)操作功能時(shí)谆膳,用于執(zhí)行打開(kāi)數(shù)據(jù)庫(kù)連接的操作叭爱。
-
Teardown thread group
:tearDown線程組一種特殊類型的線程組,可用于執(zhí)行測(cè)試后動(dòng)作漱病。和普通的線程組元件一樣买雾,不同的是,這些類型的線程執(zhí)行測(cè)試結(jié)束后執(zhí)行定期的線程組杨帽。
換句話說(shuō)漓穿,這些類型的線程執(zhí)行測(cè)試結(jié)束后執(zhí)行定期的線程組。
應(yīng)用場(chǎng)景舉例:測(cè)試數(shù)據(jù)庫(kù)操作功能時(shí)注盈,用于執(zhí)行關(guān)閉數(shù)據(jù)庫(kù)連接的操作晃危,或者清理測(cè)試數(shù)據(jù)。
需注意:默認(rèn)情況下老客,如果測(cè)試按預(yù)期完成僚饭,則TearDown線程組將不會(huì)運(yùn)行。
如果需要運(yùn)行TearDown線程組胧砰,則需要取保
測(cè)試計(jì)劃Test Plan
界面中“Run tearDown Thread Groups after shutdown of main threads”
(主線程結(jié)束后運(yùn)行tearDown線程組)選項(xiàng)被勾選浪慌。 -
Thread group
:線程組這個(gè)就是我們通常添加運(yùn)行的線程。通俗的講一個(gè)線程組朴则,可以看做一個(gè)虛擬用戶組权纤,線程組中的每個(gè)線程都可以理解為一個(gè)虛擬用戶。
(2)線程組內(nèi)容界面說(shuō)明
線程組乌妒、setUp線程組汹想、tearDown線程組三個(gè)線程組的內(nèi)容界面是一樣的,都如下圖:
說(shuō)明:
@1撤蚊、取樣器錯(cuò)誤后要執(zhí)行的動(dòng)作(Action to be taken after a Sample error):
繼續(xù)(Continue)
:忽略錯(cuò)誤古掏,繼續(xù)執(zhí)行。啟動(dòng)下一進(jìn)程循環(huán)(Start Next Thread Loop)
: 忽略錯(cuò)誤侦啸,線程當(dāng)前循環(huán)終止槽唾,執(zhí)行下一個(gè)循環(huán)丧枪。停止線程(Stop Thread)
:當(dāng)前線程停止執(zhí)行,不影響其他線程正常執(zhí)行庞萍。停止測(cè)試(Stop Test)
:整個(gè)測(cè)試會(huì)在拧烦,當(dāng)前所有正在執(zhí)行的線程,執(zhí)行完畢后停止钝计。立即停止測(cè)試(Stop test now)
:整個(gè)測(cè)試會(huì)立即停止執(zhí)行恋博,當(dāng)前正在執(zhí)行的取樣器可能會(huì)被中斷。
@2私恬、線程屬性(Thread Praperties):
-
線程數(shù)(Number of Thread (users))
:線程數(shù)也就是并發(fā)數(shù)债沮,每個(gè)線程將會(huì)完全獨(dú)立的運(yùn)行測(cè)試計(jì)劃,互不干擾本鸣。每一個(gè)線程就相當(dāng)于一個(gè)用戶疫衩,多個(gè)線程用于模仿對(duì)服務(wù)器的并發(fā)訪問(wèn)。
-
Rum-up時(shí)間(秒)
:在該設(shè)置時(shí)間內(nèi)啟動(dòng)所有線程(就是啟動(dòng)上邊設(shè)置的線程數(shù))荣德。換句話說(shuō)隧土,就是設(shè)置時(shí)間內(nèi)把請(qǐng)求發(fā)送出去了。(并不包括返回結(jié)果的時(shí)間)
-
循環(huán)次數(shù)(Loop Count)
:該項(xiàng)設(shè)置線程組在結(jié)束前每個(gè)線程循環(huán)的次數(shù)命爬。換句話說(shuō)曹傀,就是上邊設(shè)置的線程數(shù),執(zhí)行的次數(shù)饲宛。
可以勾選永遠(yuǎn)皆愉,如果未設(shè)置運(yùn)行時(shí)間,需要手動(dòng)停止艇抠。
延遲線程創(chuàng)建直到需要(Delay Thread creation until needed)
:默認(rèn)情況下幕庐,測(cè)試開(kāi)始的時(shí)候,所有線程就被創(chuàng)建完了家淤。如果勾選了此選項(xiàng)异剥,那么線程只會(huì)在合適的需要用到的時(shí)候創(chuàng)建。調(diào)度器(Scheduler)
:可以更靈活的控制線程組執(zhí)行的時(shí)間
@3絮重、調(diào)度器配置(Scheduler Configuration):
持續(xù)時(shí)間(秒):如果選擇了調(diào)度程序復(fù)選框冤寿,控制測(cè)試執(zhí)行的持續(xù)時(shí)間,以秒為單位青伤。
啟動(dòng)延遲(秒):如果選擇了調(diào)度程序復(fù)選框督怜,控制測(cè)試在多久后啟動(dòng)執(zhí)行,以秒為單位狠角。
可以在調(diào)度器中配置持續(xù)時(shí)間(秒)和啟動(dòng)延遲(秒)來(lái)控制每個(gè)線程組的持續(xù)時(shí)間以及啟動(dòng)后的秒數(shù)号杠。當(dāng)測(cè)試開(kāi)始時(shí),JMeter將在啟動(dòng)線程組的線程之前等待啟動(dòng)延遲(秒),然后運(yùn)行配置的持續(xù)時(shí)間(秒)姨蟋。
例:如果使用了10個(gè)線程屉凯,并且啟動(dòng)周期為100秒,那么JMeter將花費(fèi)100秒來(lái)啟動(dòng)和運(yùn)行所有10個(gè)線程眼溶。每個(gè)線程將在上一個(gè)線程開(kāi)始后10(100/10)秒開(kāi)始悠砚。如果有30個(gè)線程,啟動(dòng)周期為120秒偷仿,則每個(gè)連續(xù)線程將延遲4秒啟動(dòng)哩簿。
參考: