Jmeter之邏輯控制器(Logic Controller)

Jmeter之邏輯控制器(Logic Controller)

前言:

1、 Jmeter官網(wǎng)對(duì)邏輯控制器的解釋是:“Logic Controllers determine the order in which Samplers are processed.”。意思是說,邏輯控制器可以控制采樣器(samplers)的執(zhí)行順序。由此可知,控制器需要和采樣器一起使用,否則控制器就沒有什么意義了。放在控制器下面的所有的采樣器都會(huì)當(dāng)做一個(gè)整體,執(zhí)行時(shí)也會(huì)一起被執(zhí)行。

2、JMeter中的Logic Controller分為兩類:

  a)?控制測(cè)試計(jì)劃執(zhí)行過程中節(jié)點(diǎn)的邏輯執(zhí)行順序,如:Loop Controller、If Controller等;

  b) 對(duì)測(cè)試計(jì)劃中的腳本進(jìn)行分組、方便JMeter統(tǒng)計(jì)執(zhí)行結(jié)果以及進(jìn)行腳本的運(yùn)行時(shí)控制等,如:Throughput Controller、Transaction Controller。

3、Jmeter提供如下這么多的控制器:


一、簡單控制器(Simple Controller):

作用:這是Jmeter里最簡單的一個(gè)控制器,它可以讓我們組織我們的采樣器和其它的邏輯控制器(分組功能),提供一個(gè)塊的結(jié)構(gòu)和控制,并不具有任何的邏輯控制或運(yùn)行時(shí)的功能。

二、循環(huán)控制器(Loop Controller):

  作用:指定其子節(jié)點(diǎn)運(yùn)行的次數(shù),可以使用具體的數(shù)值(如下圖,設(shè)置為5次),也可以使用變量

  1、Forever選項(xiàng):勾選上這一項(xiàng)表示一直循環(huán)下去

  2、如果同時(shí)設(shè)置了線程組的循環(huán)次數(shù)和循環(huán)控制器的循環(huán)次數(shù),那循環(huán)控制器的子節(jié)點(diǎn)運(yùn)行的次數(shù)為兩個(gè)數(shù)值相乘的結(jié)果。


三、僅一次控制器(Once Only Controller):

  作用:在測(cè)試計(jì)劃執(zhí)行期間,該控制器下的子結(jié)點(diǎn)對(duì)每個(gè)線程只執(zhí)行一次,登錄場景經(jīng)常會(huì)使用到這個(gè)控制器。

  注意:將Once Only Controller作為Loop Controller的子節(jié)點(diǎn),Once Only Controller在每次循環(huán)的第一次迭代時(shí)均會(huì)被執(zhí)行。?

四、ForEach控制器(ForEach Controller):

?  作用:ForEach控制器一般和用戶自定義變量一起使用,其在用戶自定義變量中讀取一系列相關(guān)的變量。該控制器下的采樣器或控制器都會(huì)被執(zhí)行一次或多次,每次讀取不同的變量值。如下圖:

參數(shù):

Input Variable Prefix:輸入變量前綴

Output variable name:輸出變量名稱

Start index for loop(exclusive):循環(huán)開始的索引(這里如果不填寫,默認(rèn)從1開始,如果沒有1開始的變量,執(zhí)行時(shí)會(huì)報(bào)錯(cuò))

End index for loop(inclusive):循環(huán)結(jié)束的索引

Add”_”before number:輸入變量名稱中是否使用“_”進(jìn)行間隔。

用戶自定義變量:

變量名前綴為ForEach Controller中Input variable prefix定義的name + 下劃線(上圖中我們勾選了下劃線)+數(shù)字編號(hào)

執(zhí)行結(jié)果:

總共執(zhí)行了3次,每次執(zhí)行時(shí)會(huì)把獲取到的變量值賦值給輸出變量outNmae,其它地方可以通過${outNmae}進(jìn)行調(diào)用。


五、事務(wù)控制器(Transaction Controller):

  作用:?事務(wù)控制器會(huì)生產(chǎn)一個(gè)額外的采樣器,用來統(tǒng)計(jì)該控制器子結(jié)點(diǎn)的所有時(shí)間。

參數(shù):

Generate parent sample:(選中這個(gè)參數(shù)結(jié)果展示如下圖紅框,否則顯示為下圖藍(lán)框)

Include duration of timer and pre-post processors in generated sample:選中這一項(xiàng)會(huì)統(tǒng)計(jì)定時(shí)器(timer)的時(shí)間,否則只統(tǒng)計(jì)采樣器(sample)的時(shí)間


六、If 控制器(If Controller):

?  作用:根據(jù)給定表達(dá)式的值決定是否執(zhí)行該節(jié)點(diǎn)下的子節(jié)點(diǎn),默認(rèn)使用javascript的語法進(jìn)行判斷(如下圖紅框內(nèi)的文字)。

參數(shù):

Interpret Condition as Variable Expression?:選中這一項(xiàng)時(shí)表示:判斷變量值是否等于字符串true(不區(qū)分大小寫)

Evaluate for all children:如果選中這一項(xiàng),在每個(gè)子結(jié)點(diǎn)執(zhí)行前都會(huì)計(jì)算表達(dá)式?

示例一:使用變量的方式進(jìn)行判斷:

示例二:選中Interpret Condition as Variable Expression?


七、Switch控制器(Switch Controller):

  作用:Switch控制器通過給該控制器中的Value賦值,來指定運(yùn)行哪個(gè)采樣器。有兩種賦值方式:

第一種是數(shù)值,Switch控制器下的子節(jié)點(diǎn)從0開始計(jì)數(shù),通過指定子節(jié)點(diǎn)所在的數(shù)值來確定執(zhí)行哪個(gè)元素。

第二種是直接指定子元素的名稱,比如采樣器的Name來進(jìn)行匹配。當(dāng)指定的名稱不存在時(shí),不執(zhí)行任何元素。

當(dāng)Value為空時(shí),默認(rèn)執(zhí)行第1個(gè)子節(jié)點(diǎn)元素。?

示例:

1、Switch Controller選擇的值為login page

2、執(zhí)行結(jié)果:


八、吞吐量控制器(Throughput Controller):

?  作用:控制其下的子節(jié)點(diǎn)的執(zhí)行次數(shù)與負(fù)載比例分配,也有兩種方式:

Total Executions:設(shè)置運(yùn)行次數(shù)

Percent Executions:設(shè)置運(yùn)行比例(1~100之間)

示例:

1、設(shè)置線程組循環(huán)5次:

2、Throughput Controller1的子結(jié)點(diǎn)執(zhí)行3次:

3、Throughput Controller2的子結(jié)點(diǎn)執(zhí)行(40% * 線程組循環(huán)次數(shù)5)= 2次:

執(zhí)行結(jié)果:



九、隨機(jī)控制器(Random Controller):

?  作用:隨機(jī)執(zhí)行其下的所某個(gè)子結(jié)點(diǎn)


十、隨機(jī)順序控制器(Random Order Controller):

?  作用:隨機(jī)執(zhí)行其下的所有子結(jié)點(diǎn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容