史上最全jmeter逻辑控制器案例详解
在jmeter中邏輯控制器可以控制采樣器(samplers)的執(zhí)行順序。由此可知,控制器需要和采樣器一起使用,否則控制器就沒有什么意義了。放在控制器下面的所有的采樣器都會當(dāng)做一個整體,執(zhí)行時也會一起被執(zhí)行。
(1)控制測試計劃或者線程組中節(jié)點(diǎn)的邏輯執(zhí)行順序。
(2)對測試計劃或者線程組中的腳本進(jìn)行分組、方便jmeter統(tǒng)計執(zhí)行結(jié)果以及腳本運(yùn)行時的控制等。
jmeter中邏輯控制器(Logic Controllers)的作用域只對其子節(jié)點(diǎn)的sampler有效,作用是控制采樣器的執(zhí)行順序。
測試計劃—線程組—邏輯控制器
一、簡單控制器(Simple Controller):
從下圖看出監(jiān)聽器生效于控制器內(nèi)的所有采樣器,有多個簡單控制器時,采樣器按順序執(zhí)行
?
二、循環(huán)控制器(Loop Controller):
作用:指定其子節(jié)點(diǎn)運(yùn)行的次數(shù),可以使用具體的數(shù)值,也可以使用變量
1、Forever選項(xiàng):勾選上這一項(xiàng)表示一直循環(huán)下去
2、如果同時設(shè)置了線程組的循環(huán)次數(shù)和循環(huán)控制器的循環(huán)次數(shù),那循環(huán)控制器的子節(jié)點(diǎn)運(yùn)行的次數(shù)為兩個數(shù)值相乘的結(jié)果。
?
循環(huán)控制器1設(shè)置循環(huán)3次,循環(huán)控制器2設(shè)置循環(huán)2次,線程組1循環(huán)次數(shù)1時:
HTTP請求3未處于循環(huán)控制器下,故只執(zhí)行1次
?
循環(huán)控制器1設(shè)置循環(huán)3次,循環(huán)控制器2設(shè)置循環(huán)2次,線程組1循環(huán)次數(shù)2時:
先循環(huán)控制器2 2次,再循環(huán)控制器1 3次,再線程1循環(huán)2次
?
?
三、僅一次控制器:
僅一次控制器,在循環(huán)執(zhí)行中對該控制器下的請求進(jìn)行執(zhí)行一次,然后在接下來的循環(huán)執(zhí)行中將會跳過該控制器下的所有請求。
在進(jìn)行登錄的測試中,可以考慮將登錄請求放在僅一次控制中,這樣登錄請求只執(zhí)行一次。在并發(fā)查詢時,可能會使用到僅一次控制器,在并發(fā)查詢時,我們只需要登錄請求執(zhí)行一次即可。Jmeter中的僅一次控制器相當(dāng)于loadrunner中的init的初始化action。
線程循環(huán)設(shè)置5
HTTP請求2不在控制器內(nèi)
?
四:隨機(jī)控制器
隨機(jī)控制器下的sampler添加3個
線程組循環(huán)設(shè)置1時,每運(yùn)行一次會隨機(jī)地運(yùn)行1個sampler
?
線程組循環(huán)設(shè)置2時,每運(yùn)行一次會隨機(jī)地運(yùn)行2個sampler
五、隨機(jī)順序控制器
隨機(jī)順序控制器下的sampler添加3個
隨機(jī)順序控制器執(zhí)行一次,會隨機(jī)打亂執(zhí)行它下面的所有的sampler一次
線程組循環(huán)設(shè)置1時,每運(yùn)行1次會運(yùn)行3個sampler,順序打亂隨機(jī)
?
線程組循環(huán)設(shè)置2時,每運(yùn)行1次會運(yùn)行3個sampler,循環(huán)2次,共計6個sampler,順序打亂隨機(jī)
六、交替控制器
循環(huán)控制器(設(shè)置循環(huán)7次)——交替控制器,下面添加3個sampler?
循環(huán)時順序迭代交替控制器下的sampler?
?
線程組1循環(huán)設(shè)置1次,循環(huán)控制器設(shè)置7次,順序循環(huán)7次sampler? 1231231
?
?
線程組1循環(huán)設(shè)置2次,循環(huán)控制器設(shè)置7次,順序循環(huán)7次sampler ,再循環(huán)線程的2輪
?
?
七、Runtime控制器
Runtime(seconds):設(shè)置為N,則其下所有節(jié)點(diǎn)的運(yùn)行時間為N秒。其下所有節(jié)點(diǎn),跑完一輪,耗費(fèi)時間小于N秒,此時,再從頭執(zhí)行一邊,直到執(zhí)行時間等于N,跳出控制器。
八、如果(If)控制器
if控制器條件滿足,執(zhí)行控制器下的Sampler;不滿足、不填寫條件,則不執(zhí)行
1.Interpret Condition as Variable Expression?:這個選項(xiàng)勾選了之后,條件中,如果寫“${a}" == "${b}”(及時變量a和變量b的值相等,也不會執(zhí)行)。這個地方,就必須要填寫一個返回True的表達(dá)式,比如${JMeterThread.last_sample_ok},這樣的表達(dá)式。
2.Evaluate for all children:假如這個控制器下面,有3個HTTP請求。如果需要在執(zhí)行每個HTTP請求前,進(jìn)行判斷是否滿足控制器中的條件,則需要勾選該復(fù)選框。
?
debug Sampler? 響應(yīng)數(shù)據(jù)? JMeterThread.last_sample_ok=true
條件設(shè)置為${JMeterThread.last_sample_ok},這是判斷boolean類型,true執(zhí)行,false不執(zhí)行
條件設(shè)置為"${JMeterThread.last_sample_ok}"=="AAA",成立執(zhí)行,不成立不執(zhí)行
?
?
九、While控制器
執(zhí)行該控制器下所有節(jié)點(diǎn),直到它的條件被判斷為false,才會跳出控制器,執(zhí)行后續(xù)sampler
1、哪些條件會導(dǎo)致While Controller控制器跳出循環(huán)退出?
成功的sampler在前面 失敗的sampler在后面 執(zhí)行到fail會跳出循環(huán)
條件中的方法或者變量為false? ?Condition? ?? ${BooleanValue}
條件不滿足了??Condition? ? ?"${BooleanValue}"=="AAA"
這個控制器下的sampler執(zhí)行結(jié)果失敗
?
2、哪些條件會導(dǎo)致While Controller控制器下sampler一直循環(huán)執(zhí)行?
Condition什么都不寫(會一直循環(huán)執(zhí)行 知道執(zhí)行到有fail跳出循環(huán))
失敗的sampler在前面 成功的sampler在后面 這種情況會一直執(zhí)行死循環(huán)
Condition寫LAST(會一直循環(huán)執(zhí)行 知道執(zhí)行到有fail跳出循環(huán))Condition? ? ?LAST
十、While控制器
Switch Value可以填什么?
1.什么都不填寫:此時,執(zhí)行第一個節(jié)點(diǎn)?
2.填寫數(shù)字:填寫N,則會執(zhí)行這個控制器下面的第N+1個Sampler?
3.填寫字符:會進(jìn)行sampler名稱字符串全匹配? ? ?填寫? ? ?sampler名稱全匹配?
?
十一、遍歷循環(huán)控制器ForEach 控制器
作用:ForEach控制器一般和用戶自定義變量一起使用,其在用戶自定義變量中讀取一系列相關(guān)的變量。該控制器下的采樣器或控制器都會被執(zhí)行一次或多次,每次讀取不同的變量值(多個變量執(zhí)行多次)
示例:1、創(chuàng)建不同權(quán)限的用戶,賬號用隨機(jī)變量創(chuàng)建,類型0和1用自定義變量
輸入變量前綴:在其中輸入需要遍歷的用戶參數(shù)(User Parameter)
Start index for loop(exclusive):循環(huán)指數(shù)開始(唯一)→ 遍歷查詢的變量范圍,開始的值(這里如果不填寫,默認(rèn)從1開始,如果沒有1開始的變量,執(zhí)行時會報錯)
End index for loop(inclusive):循環(huán)指數(shù)結(jié)束(包含)→ 遍歷查詢的變量范圍,結(jié)束的值
輸出變量名稱:將遍歷查詢到的符合條件的用戶參數(shù)賦值給輸入變量(Vname),然后就可以在控制器下的取樣器使用,格式為${輸出變量名}
Add”_”before number:輸入變量名稱中是否使用“_”進(jìn)行間隔
PS:這個控制器一般配合配置元件→ 正則表達(dá)式提取器來一起使用,可對頁面上的某些元素進(jìn)行重復(fù)處理。
十二、事務(wù) 控制器
作用:事務(wù)控制器會生產(chǎn)一個額外的采樣器,用來統(tǒng)計該控制器子結(jié)點(diǎn)的所有時間。
應(yīng)用場景:?完成一個完整的頁面請求或一組請求或一組測試場景(多線程時是順序執(zhí)行的)
參數(shù):
- Generate parent sample:勾選后,所有的結(jié)果將在父結(jié)點(diǎn)中展示(選中這個參數(shù)結(jié)果展示如下圖紅框,否則顯示為下圖藍(lán)框)
- Include duration of timer and pre-post processors in generated sample:選中這一項(xiàng)會統(tǒng)計定時器(timer)的時間,否則只統(tǒng)計采樣器(sample)的時間
1、事務(wù)下有多個取樣器,其中一個取樣器請求失敗,這個事務(wù)就失敗了
?
十三、吞吐量控制器throughput controller
待續(xù)————————————————————————————————
?
?
總結(jié)
以上是生活随笔為你收集整理的史上最全jmeter逻辑控制器案例详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Liunx服务器】阿里云服务器下部署多
- 下一篇: java gzip rest_RestT