一、臨界區(qū)控制器(critical section Controller)
作用:臨界區(qū)控制器確保其子節(jié)點(diǎn)下的取樣器或控制器將被執(zhí)行(只有一個(gè)線程作為一個(gè)鎖)
名稱和注釋很簡(jiǎn)單,就是給控制器添加一個(gè)備注,使人明白這個(gè)控制器的解釋含義的意思
Lock name:鎖名稱,這里可以填入其子節(jié)點(diǎn)下執(zhí)行的線程的名稱,這個(gè)線程作為一個(gè)全局鎖存在
2、遍歷循環(huán)控制器(ForEach Controller)
作用:用來(lái)遍歷當(dāng)前元素的所有可執(zhí)行場(chǎng)景;在用戶自定義變量中讀取一系列相關(guān)的變量,該控制器下的采樣器或控制器都會(huì)被執(zhí)行一次或多次,每次讀取不同的變量值;
輸入變量前綴:在其中輸入需要遍歷的用戶參數(shù)(User Parameter)
Start index for loop(exclusive):循環(huán)指數(shù)開(kāi)始(唯一)→ 遍歷查詢的變量范圍,開(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)指數(shù)結(jié)束(包含)→ 遍歷查詢的變量范圍,結(jié)束的值
輸出變量名稱:將遍歷查詢到的符合條件的用戶參數(shù)賦值給輸入變量(Vname),然后就可以在控制器下的取樣器使用,格式為${輸出變量名}
Add”****_”****before number:輸入變量名稱中是否使用“_”進(jìn)行間隔
PS:這個(gè)控制器一般配合配置元件→ 正則表達(dá)式提取器來(lái)一起使用,可對(duì)頁(yè)面上的某些元素進(jìn)行重復(fù)處理。
3、包含控制器(Include Controller)
作用:用于引用外部的Jmx文件;從而控制多個(gè)測(cè)試計(jì)劃組合
include Test Plan:包含測(cè)試計(jì)劃的文件名,可以點(diǎn)擊瀏覽,從文件夾保存的JMX文件夾目錄下選擇對(duì)應(yīng)的JMX文件
使用方法:創(chuàng)建一個(gè)測(cè)試計(jì)劃,下面可添加取樣器/控制器等,然后保存測(cè)試計(jì)劃,為了方便起見(jiàn), 線程組也可以添加外部JMX文件中用于調(diào)試;
如果測(cè)試使用Cookie或用戶定義的變量,這些應(yīng)放置在頂層(包括文件),否則無(wú)法正常工作;此元素不支持變量/函數(shù)在文件名字段中;但是,如果屬于包含控制器定義的內(nèi)容,則使用前綴路徑名。
當(dāng)使用包含控制器中包含相同的JMX文件,則要確保文件名不同,以避免無(wú)法讀取;如果文件不能被發(fā)現(xiàn),那么控制器會(huì)嘗試打開(kāi)文件名相對(duì)于JMX啟動(dòng)目錄。
4、生命周期/運(yùn)行周期控制器(Runtime Controller)
作用:用于控制該控制器下的取樣器/控制器的運(yùn)行時(shí)間
Runtime(seconds):運(yùn)行時(shí)間,單位為:秒
5、轉(zhuǎn)換控制器(Switch Controller)
作用:通過(guò)給該控制器中的value賦值,來(lái)指定運(yùn)行哪個(gè)取樣器(也可以理解為開(kāi)關(guān)控制器)
Switch value:控制器具體賦值的value值字段
有兩種賦值方式:
①.第一種是數(shù)值,Switch控制器下的子節(jié)點(diǎn)從0開(kāi)始計(jì)數(shù),通過(guò)指定子節(jié)點(diǎn)所在的數(shù)值來(lái)確定執(zhí)行哪個(gè)元素。
②.第二種是直接指定子元素的名稱,比如采樣器的Name來(lái)進(jìn)行匹配。當(dāng)指定的名稱不存在時(shí),不執(zhí)行任何元素。
當(dāng)Value為空時(shí),默認(rèn)執(zhí)行第1個(gè)子節(jié)點(diǎn)元素。
6、當(dāng)/判斷控制器(While Controller)
作用:運(yùn)行其子節(jié)點(diǎn)下的取樣器/控制器,直到條件為“假”
Condition(function or variable):條件(函數(shù)或變量):里面可填入判斷依據(jù)的條件,參照
使用方法:可能的條件值有:
①.空白:最后一個(gè)示例循環(huán)失敗時(shí)退出循環(huán)
②.最后一個(gè)值:最后一個(gè)示例循環(huán)失敗時(shí)退出循環(huán)。 如果之前的最后一個(gè)示例只是循環(huán)失敗,不進(jìn)入循環(huán)。
③.否則:退出時(shí)(或不輸入)循環(huán)條件等于字符串“ 假 ”
條件可以是任何變量或函數(shù),最終等于字符串” 假 ”。需要注意的是:條件是評(píng)估兩次,一次取樣前,一次隨機(jī)取樣
7、事務(wù)控制器(transaction controller)
作用:生成一個(gè)額外的采樣器來(lái)測(cè)量其下測(cè)試元素的總體時(shí)間;值得注意的是,這個(gè)時(shí)間包含該控制器范圍內(nèi)的所有處理時(shí)間,而不僅僅是采樣器的
Generate parent sample:生成父樣本(不同的模式選擇)
include duration of timer and pre-post processors in generated sample:包含時(shí)間的計(jì)時(shí)器和前后處理器生成的示例(不同的模式選擇)
對(duì)于Jmeter2.3以上的版本,有兩種模式的操作
①.事務(wù)采樣器是添加到其下采樣器后面的
②.事務(wù)采樣器是作為其下采樣器的父采樣器
生成的事務(wù)采樣器的測(cè)量的時(shí)間包括其下采樣器以及其他的一切時(shí)間。由于時(shí)鐘頻率問(wèn)題,這個(gè)時(shí)間可能略大于單個(gè)采樣器的時(shí)間之和;
時(shí)鐘開(kāi)始時(shí)間介于控制器記錄開(kāi)始時(shí)間與第一個(gè)采樣器開(kāi)始之間,時(shí)鐘結(jié)束時(shí)間亦然。
事務(wù)采樣器只有在其子采樣器都成功的情況下才顯示成功。
在父模式下,事務(wù)控制器下的各個(gè)采樣器只有在結(jié)果樹(shù)里才能看到;同時(shí),子采樣器的數(shù)據(jù)也不會(huì)在CSV文件中顯示,但是在XML文件中可以看到。
8、交替控制器(creatleave controller)
作用: 交替控制,使得該控制器包含的取樣器步驟交錯(cuò)執(zhí)行在每個(gè)循環(huán)中
忽略子控制器模塊(Ignore sub-contorller blocks):如果勾選此項(xiàng),交錯(cuò)控制器將sub-controllers像單一請(qǐng)求元素一樣,一次只允許一個(gè)請(qǐng)求/控制器
使用方法:假使該控制器下有2個(gè)取樣器A和B,交替執(zhí)行A和B2個(gè)請(qǐng)求,即每次傳遞一個(gè)子請(qǐng)求到這個(gè)測(cè)試,按子元件的排列順序
9、僅一次控制器(once only controller)
作用:在多線程循環(huán)的時(shí)候,將使其子節(jié)點(diǎn)下的取樣器請(qǐng)求只運(yùn)行一次
10、流量控制器(throughput controller)
作用:jmeter自帶的翻譯這里是錯(cuò)誤的,因?yàn)樗⒉荒芸刂仆掏铝浚ㄍ掏铝康母拍钫?qǐng)自行百度);其實(shí)質(zhì)作用是允許用戶控制執(zhí)行的頻率
總共有兩種執(zhí)行模式:百分比執(zhí)行和總執(zhí)行
總執(zhí)行(Total Executions):使控制器停止執(zhí)行一定數(shù)量的測(cè)試計(jì)劃
百分比執(zhí)行(Percent Executions):使控制器按一定比例執(zhí)行迭代的測(cè)試計(jì)劃
流量(Throughput):對(duì)應(yīng)上面的執(zhí)行數(shù)量或者比例
每個(gè)用戶(Per User):每個(gè)用戶
如果勾選此項(xiàng),將導(dǎo)致控制器計(jì)算是否應(yīng)該執(zhí)行在每個(gè)用戶(每個(gè)線程)的基礎(chǔ)上;如果不加以控制,那么將計(jì)算全球所有用戶
11、IF控制器(If Controller)
作用:允許用戶控制該控制器下面的取樣器/控制器是否執(zhí)行該節(jié)點(diǎn)下的子節(jié)點(diǎn);
條件(默認(rèn)JavaScript)(Condition(default javascript)):使用JavaScript的函數(shù)或變量進(jìn)行評(píng)估判斷條件為真或假
條件解釋為變量表達(dá)式(interpret condition as variable expression):如果勾選該項(xiàng),那么變量表達(dá)式會(huì)進(jìn)行求值,并與“ture”或“false”進(jìn)行比較,而無(wú)需使用JavaScript
對(duì)所有子條件執(zhí)行(evaluate for all children):如果勾選該項(xiàng),則該controller在沒(méi)一個(gè)子節(jié)點(diǎn)執(zhí)行時(shí)執(zhí)行一次;
默認(rèn)情況下,該控制器可以對(duì)包含在其下面的所有可運(yùn)行的元素進(jìn)行執(zhí)行,但只在入口執(zhí)行一次
12、錄制控制器(Recording Controller)
作用:類似代理服務(wù)器的作用,在測(cè)試執(zhí)行期間記錄測(cè)試樣本
清除所有記錄的樣本(Clear all the recorded samples):點(diǎn)擊可以清除所有已經(jīng)記錄的測(cè)試樣本
一般情況下,在測(cè)試執(zhí)行時(shí)候,它沒(méi)有效果,但是在執(zhí)行HTTPS測(cè)試腳本時(shí),會(huì)記錄下所有測(cè)試樣本
13、循環(huán)控制器(Loop Controller)
作用:該控制器下的取樣器請(qǐng)求可以循環(huán)運(yùn)行
循環(huán)次數(shù)(Loop Count):在輸入框中輸入需要循環(huán)的次數(shù),控制器下的請(qǐng)求即可循環(huán)運(yùn)行
永遠(yuǎn)(forever):如果勾選該項(xiàng),那么控制器下的請(qǐng)求可一直運(yùn)行
14、模塊控制器(Module Controller)
作用:測(cè)試控制器子節(jié)點(diǎn)下的某一個(gè)模塊,而不是整個(gè)測(cè)試計(jì)劃
尋找目標(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ì)失敗
15、簡(jiǎn)單控制器(Simple Controller)
作用:用來(lái)組合取樣器和其他邏輯控制器
簡(jiǎn)單控制器是最基本的控制器,對(duì)jmeter測(cè)試運(yùn)行沒(méi)有任何影響,可用來(lái)命名某些操作
16、隨機(jī)控制器(Random Controller)
作用:類似交替控制器,但該控制器隨機(jī)選取某一個(gè)取樣器請(qǐng)求并執(zhí)行
忽略子控制器模塊(Ignore sub-controller blocks):如果勾選此項(xiàng),交錯(cuò)控制器將sub-controllers像單一請(qǐng)求元素一樣,一次只允許一個(gè)請(qǐng)求/控制器
17、隨機(jī)順序控制器(Random Order Controller)
作用:類似于簡(jiǎn)單控制器,將執(zhí)行每個(gè)子節(jié)點(diǎn)下的取樣器請(qǐng)求一次,但是執(zhí)行是隨機(jī)的