一、 Jmeter官網對邏輯控制器的解釋是:「Logic Controllers determine the order in which Samplers are processed.」。意思是說,邏輯控制器能夠控制採樣器(samplers)的執行順序。由此可知,控制器須要和採樣器一塊兒使用,不然控制器就沒有什麼意義了。放在控制器下面的全部的採樣器都會當作一個總體,執行時也會一塊兒被執行。javascript
二、JMeter中的Logic Controller分爲兩類:java
a) 控制測試計劃執行過程當中節點的邏輯執行順序,如:Loop Controller、If Controller等;dom
b) 對測試計劃中的腳本進行分組、方便JMeter統計執行結果以及進行腳本的運行時控制等,如:Throughput Controller、Transaction Controller。oop
三、Jmeter提供以下這麼多的控制器:測試
1、簡單控制器(Simple Controller):lua
做用:這是Jmeter裏最簡單的一個控制器,它可讓咱們組織咱們的採樣器和其它的邏輯控制器(分組功能),提供一個塊的結構和控制,並不具備任何的邏輯控制或運行時的功能。 線程
2、循環控制器(Loop Controller):索引
做用:指定其子節點運行的次數,可使用具體的數值(以下圖,設置爲5次),也可使用變量事務
一、Forever選項:勾選上這一項表示一直循環下去ip
二、若是同時設置了線程組的循環次數和循環控制器的循環次數,那循環控制器的子節點運行的次數爲兩個數值相乘的結果。
3、僅一次控制器(Once Only Controller):
做用:在測試計劃執行期間,該控制器下的子結點對每一個線程只執行一次,登陸場景常常會使用到這個控制器。
注意:將Once Only Controller做爲Loop Controller的子節點,Once Only Controller在每次循環的第一次迭代時均會被執行。
4、ForEach控制器(ForEach Controller):
做用:ForEach控制器通常和用戶自定義變量一塊兒使用,其在用戶自定義變量中讀取一系列相關的變量。該控制器下的採樣器或控制器都會被執行一次或屢次,每次讀取不一樣的變量值。以下圖:
參數:
用戶自定義變量:
變量名前綴爲ForEach Controller中Input variable prefix定義的name + 下劃線(上圖中咱們勾選了下劃線)+數字編號
執行結果:
總共執行了3次,每次執行時會把獲取到的變量值賦值給輸出變量outNmae,其它地方能夠經過${outNmae}進行調用。
5、事務控制器(Transaction Controller):
做用: 事務控制器會生產一個額外的採樣器,用來統計該控制器子結點的全部時間。
6、If 控制器(If Controller):
做用:根據給定表達式的值決定是否執行該節點下的子節點,默認使用javascript的語法進行判斷(以下圖紅框內的文字)。
參數:
示例一:使用變量的方式進行判斷:
示例二:選中Interpret Condition as Variable Expression?
7、Switch控制器(Switch Controller):
做用:Switch控制器經過給該控制器中的Value賦值,來指定運行哪一個採樣器。有兩種賦值方式:
當Value爲空時,默認執行第1個子節點元素。
示例:
一、Switch Controller選擇的值爲login page
二、執行結果:
8、吞吐量控制器(Throughput Controller):
做用:控制其下的子節點的執行次數與負載比例分配,也有兩種方式:
示例:
一、設置線程組循環5次:
二、Throughput Controller1的子結點執行3次:
三、Throughput Controller2的子結點執行(40% * 線程組循環次數5)= 2次:
執行結果:
9、隨機控制器(Random Controller):
做用:隨機執行其下的所某個子結點
10、隨機順序控制器(Random Order Controller):
做用:隨機執行其下的全部子結點