溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

發(fā)布時(shí)間:2020-08-11 12:36:02 來(lái)源:網(wǎng)絡(luò) 閱讀:1974 作者:小強(qiáng)測(cè)試 欄目:軟件技術(shù)

1今日主題:詳解jmeter邏輯控制器


Jmeter邏輯控制器(Logic Controller)介紹:

1、 Jmeter官網(wǎng)對(duì)邏輯控制器的解釋是:“Logic Controllers determine the order in which Samplers are processed.”。

意思是說(shuō),邏輯控制器可以控制采樣器(samplers)的執(zhí)行順序。由此可知,控制器需要和采樣器一起使用,否則控制器就沒(méi)有什么意義了。放在控制器下面的所有的采樣器都會(huì)當(dāng)做一個(gè)整體,執(zhí)行時(shí)也會(huì)一起被執(zhí)行。

2、JMeter中的Logic Controller分為兩類(lèi):

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

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

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

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器


2jmeter控制器之一


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

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


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

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

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

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í)行一次,登錄場(chǎng)景經(jīng)常會(huì)使用到這個(gè)控制器。

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


四、ForEach控制器(ForEach Controller):

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

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

參數(shù):

· Input Variable Prefix:輸入變量前綴

· Output variable name:輸出變量名稱(chēng)

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

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

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


用戶(hù)自定義變量:

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

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

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

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

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器


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

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

· 應(yīng)用場(chǎng)景完成一個(gè)完整的頁(yè)面請(qǐng)求或一組請(qǐng)求

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

參數(shù):

  • Generate parent sample:勾選后,所有的結(jié)果將在父結(jié)點(diǎn)中展示(選中這個(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í)間

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器


3jmeter控制器之二


六、If 控制器(If Controller):

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

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

參數(shù):

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

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

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

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

示例二:選中Interpret Condition as Variable Expression?,使用變量的方式判斷

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器


七、Switch控制器(Switch Controller):

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

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

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

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

示例:

1Switch Controller選擇的值為login page

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

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

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器


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

作用:控制其下的子節(jié)點(diǎn)的執(zhí)行次數(shù)與負(fù)載比例分配,別被名字迷惑了,跟吞吐量沒(méi)任何關(guān)系。也有兩種方式:

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

  • Total Executions:設(shè)置運(yùn)行次數(shù),整個(gè)測(cè)試計(jì)劃中總計(jì)執(zhí)行次數(shù)

  • Percent Executions:設(shè)置運(yùn)行比例(1~100之間),整個(gè)測(cè)試計(jì)劃中總計(jì)執(zhí)行百分比

  • Throughtput: 設(shè)計(jì)的數(shù)值

  • Per User: 依據(jù)網(wǎng)上的說(shuō)明在選擇Total Executions時(shí),勾選時(shí)會(huì)在每個(gè)線程中執(zhí)行的次數(shù)。但在3.0版本中嘗試使用無(wú)效 

示例:

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

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

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

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

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

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

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

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器


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

作用:隨機(jī)執(zhí)行其下的某個(gè)子結(jié)點(diǎn),隨機(jī)選擇控制器中的請(qǐng)求進(jìn)行執(zhí)行

  應(yīng)用場(chǎng)景頁(yè)面的隨機(jī)訪問(wèn)

配置說(shuō)明:ignore sub-controller blocks: 忽略子控制器 


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

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

· Random Controller不同的是,這個(gè)控制器會(huì)先將需要隨機(jī)的內(nèi)容均執(zhí)行一遍,但次序不定

· 應(yīng)用場(chǎng)景頁(yè)面的隨機(jī)訪問(wèn),但均需要訪問(wèn),且次序不限


4jmeter控制器之三


十一、Critical Section Controller 關(guān)鍵部分控制器

作用:用于核心部分的控制,確保其子節(jié)點(diǎn)下的取樣器或控制器在一個(gè)線程中僅會(huì)執(zhí)行一次

應(yīng)用場(chǎng)景用戶(hù)登錄

配制說(shuō)明

· Lock name: 鎖名稱(chēng),這里可以填入其子節(jié)點(diǎn)下執(zhí)行的線程的名稱(chēng),這個(gè)線程作為一個(gè)全局鎖存在

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器


十二、Include Controller 引用外部測(cè)試計(jì)劃控制器

  • 應(yīng)用場(chǎng)景測(cè)試過(guò)程中,需要引用外部的測(cè)試計(jì)劃

  • 配制說(shuō)明

    · Include Test Plan-Filename: 選擇需要引入的外部測(cè)試計(jì)劃文件 

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器


十三、Interleave Controller 間隔控制器

  也稱(chēng)交替控制器,使得該控制器包含的取樣器步驟交錯(cuò)執(zhí)行在每個(gè)循環(huán)中,每個(gè)線程用戶(hù)僅執(zhí)行一次控制器內(nèi)的請(qǐng)求,線程用戶(hù)依據(jù)循環(huán)的次數(shù)請(qǐng)求控制器中的請(qǐng)求數(shù)

配制說(shuō)明:ignore sub-controller blocks是否忽略子控制器 

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器


十四、Module Controller 模塊控制器

· 模塊控制器,用于跳轉(zhuǎn)到選定的控制器位置并執(zhí)行對(duì)應(yīng)的控制器

· 應(yīng)用場(chǎng)景業(yè)務(wù)邏輯的跳轉(zhuǎn)

· 配制說(shuō)明

· Module to Run: 選擇需要跳轉(zhuǎn)到的目標(biāo)控制器 

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

尋找目標(biāo)元素(Find target element)

  • 尋找測(cè)試計(jì)劃中需要特定測(cè)試的元素,模塊;也可理解為該控制器可以控制已經(jīng)封裝好的模塊元素

  • 一個(gè)測(cè)試計(jì)劃由一個(gè)控制器和所有的測(cè)試元素(取樣器等)組成,測(cè)試計(jì)劃可以位于任何線程組或工作臺(tái);如果計(jì)劃位于線程組,則可以禁用其他控制器,防止正在運(yùn)行的測(cè)試計(jì)劃被影響(除了模塊控制器)

  • 模塊控制器的優(yōu)勢(shì)在于:當(dāng)存在多個(gè)線程組時(shí),該控制器可以輕松切換,只需要選擇對(duì)應(yīng)的取樣器,方便快捷,替代了創(chuàng)建很多測(cè)試計(jì)劃的繁瑣操作

  • 任何一個(gè)模塊所用的控制器名字必須唯一,因?yàn)槠涿直挥脕?lái)找到目標(biāo)控制器時(shí)重新加載;出于這個(gè)原因,最好保證控制器名字不同,否則執(zhí)行測(cè)試時(shí)候可能發(fā)生意外

  • 模塊控制器與遠(yuǎn)程測(cè)試不應(yīng)使用或非gui測(cè)試與工作臺(tái)部件,因?yàn)楣ぷ髋_(tái)測(cè)試元素并沒(méi)有測(cè)試計(jì)劃的一部分 jmx 文件。 任何這樣的測(cè)試就會(huì)失敗


十五、Runtime Controller 運(yùn)行時(shí)間控制器

· 運(yùn)行時(shí)間控制器,設(shè)置控制器中的請(qǐng)求運(yùn)行時(shí)間,單位:秒

· 應(yīng)用場(chǎng)景對(duì)業(yè)務(wù)請(qǐng)求時(shí)間進(jìn)行限制

· 配制說(shuō)明

· Runtime(seconds): 配制需要設(shè)置的運(yùn)行時(shí)間,單位秒 

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器


十六、While Controller 循環(huán)控制器

· 循環(huán)控制器,與開(kāi)發(fā)語(yǔ)言中的While功能一致。直到條件為false時(shí),停止運(yùn)行

· 應(yīng)用場(chǎng)景循環(huán)執(zhí)行一個(gè)請(qǐng)求,僅判斷一種狀態(tài)下退出循環(huán)

· 配制說(shuō)明

· Condition(function or variable): 可配制為空/LAST/變量或方法 

jmeter學(xué)習(xí)指南之快速玩轉(zhuǎn)16個(gè)邏輯控制器

可能的條件值有:

  • 空:最后一個(gè)示例循環(huán)失敗時(shí)退出循環(huán)

  • LAST:最后一個(gè)示例循環(huán)失敗時(shí)退出循環(huán)。 如果之前的最后一個(gè)示例只是循環(huán)失敗,不進(jìn)入循環(huán)。

  • false:退出時(shí)(或不輸入)循環(huán)條件等于字符串“  ”

  • 條件可以是任何變量或函數(shù),最終等于字符串”  ”。需要注意的是:條件是評(píng)估兩次,一次取樣前,一次隨機(jī)取樣


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI