jmeter 逻辑控制器
?
?
?
隨筆- 208? 文章- 0? 評論- 13?
jmeter 邏輯控制器
簡單的控制器
簡單的邏輯控制器可以讓你組織你的采樣器和其他 邏輯控制器。 不像其他邏輯控制器,該控制器不提供除此之外的功能 存儲設備。
控制面板簡單的控制器的截圖
?
參數
?在這個例子中,我們創建了一個測試計劃,發送兩個螞蟻和兩個HTTP請求 Log4J HTTP請求。 我們分組螞蟻和Log4J請求安置在里面 簡單的邏輯控制器。 記住,簡單的邏輯控制器如何JMeter沒有影響 流程控制器(s)添加到它。 所以,在這個例子中,JMeter發送的請求 以下訂單:Ant主頁,Ant新聞頁面,Log4J主頁,Log4J歷史頁面。
注意,文件的記者 被配置為將結果存儲在一個文件名為“?simple-test.dat?“在當前目錄。
圖6簡單控制器的例子
^
?
循環控制器
如果你添加生成或邏輯控制器回路控制器,JMeter的意志 循環遍歷這些設置一定數量的時候,除了循環值 指定的線程組。 例如,如果你添加一個HTTP請求 與循環計數兩個回路控制器,配置線程組循環 數到三,JMeter將發送?2 * 3 = 6?HTTP請求。
?
截圖的回路控制器的控制面板
參數
特殊情況:?循環控制器中嵌入?線程組?元素表現略有不同。 除非將永遠,停止測試后 給定數量的迭代已經完成。
?
當使用一個函數在這個領域時,要注意它可能多次被評估。 示例使用?__Random?將為每個孩子不同的價值評估取樣器的回路控制器和結果成不必要的行為。
?
是的,除非“永久”檢查
循環的例子
下載?這個示例(請參見圖4)。 在本例中,我們創建了一個測試計劃,發送一個特殊的HTTP請求 只有一次和5次發送另一個HTTP請求。
圖4 -環控制器的例子
?
我們配置一個線程的線程組和一個循環數的價值 一個。 而不是讓線程組控制循環,我們使用一個循環 控制器。 你可以看到,我們添加了一個HTTP請求線程組 另一個HTTP請求一個循環控制器。 我們配置了循環控制器 循環計數5的價值。
JMeter將按照以下順序發送請求:主頁、新聞頁面, 新聞頁面、新聞頁面、新聞頁面,和新聞頁面。
注意,文件的記者 被配置為將結果存儲在一個文件名為“?loop-test.dat?“在當前目錄。
^
曾經只有控制器
曾經只有邏輯控制器告訴JMeter處理控制器(s)里面只有一次每個線程,并經過任何請求 在進一步的迭代測試計劃。
曾經只有控制器將執行總是在第一次迭代的循環父控制器。 因此,如果一旦只有控制器放置在一個循環控制器指定循環5次,那么一次只在第一個迭代通過控制器將只執行循環控制器 (即每5次)。
注意這意味著一次只控制器仍然會像此前預期,如果把在一個線程組(每個測試每個線程只運行一次), 但是現在用戶更靈活地使用一只控制器。
對于測試,需要一個登錄,請考慮將登錄請求的控制器,因為每個線程只需要 建立一個會話登錄一次。
截圖曾經只有控制器的控制面板
?
?
?在本例中,我們創建了一個測試計劃,有兩個線程發送HTTP請求。 每個線程發送一個請求到主頁,緊隨其后的是三個請求到錯誤頁面。 雖然我們配置了線程組三次迭代,每個JMeter線程 發送一個請求到主頁,因為這請求住在一個曾經只有控制器。
圖5。 曾經只有控制器的例子
?
每個JMeter線程將按照以下順序發送請求:主頁,錯誤頁面, 錯誤頁面,頁面錯誤。
注意,文件記者被配置為將結果存儲在一個文件名為“?loop-test.dat?“在當前目錄。
?
曾經只有控制器下的行為以外的任何東西 線程組或一個循環控制器不是當前定義。 奇怪的事情會發生。
?
?
交錯的控制器
如果你添加生成或邏輯控制器一個交錯控制器,JMeter將每個之間的交替 為每個循環迭代其他控制器。
截圖的交錯控制器的控制面板
?
?
如果勾選此項,交錯控制器將sub-controllers像單一請求元素和一次只允許一個請求/控制器。
沒有
簡單的交錯示例
?
下載?這個示例(請參見圖1)。在這個例子中, 我們配置線程組有兩個線程,一個循環計數的五個,總共十個 每個線程的請求。 見下表順序JMeter發送HTTP請求。
圖1 -交錯控制器示例1
| 循環迭代 | 每個JMeter線程發送HTTP請求 |
| 1 | 新聞頁面 |
| 1 | 日志頁面 |
| 2 | 常見問題頁面 |
| 2 | 日志頁面 |
| 3 | 阿甘的頁面 |
| 3 | 日志頁面 |
| 4 | 因為沒有更多請求的控制器,? |
| 4 | 日志頁面 |
| 5 | 常見問題頁面 |
| 5 | 日志頁面 |
有用的交錯的例子
下載?另一個例子(參見圖2),在這 例子中,我們配置了線程組 單個線程和8的循環計數。 注意,測試計劃有一個外交錯控制器 兩個交錯控制器內。
圖2 -交錯控制器例2
?
外交錯控制器之間的交替 兩個內在的品質。 然后,每個內部交錯控制器之間交替的每個HTTP請求。 每一個JMeter 線程將按照以下順序發送請求:主頁,交錯,錯誤頁面,交錯,CVS頁面,交錯,FAQ頁,交錯。
注意,文件記者被配置為將結果存儲在一個文件名為“?interleave-test2.dat?“在當前目錄。
圖3 -交錯控制器示例3
?
如果兩個交錯控制器主要交錯控制器下而不是簡單的控制器,然后順序是:主頁,CVS頁面,交錯,錯誤頁面,FAQ頁面,交錯。
然而,如果“?忽略副控制塊?“檢查主要交錯控制器,然后順序是:主頁,交錯,錯誤頁面,交錯,CVS頁面,交錯,FAQ頁,交錯。
^
隨機的控制器
隨機邏輯控制器行為類似于交錯控制器,除了 而不是為了通過其sub-controllers和取樣器,它選擇 隨機在每個通過。
?
多個控制器之間的相互作用可以產生復雜的行為。 隨機控制器的尤其如此。 實驗之前,你認為 任何給定的交互會給什么結果
?
截圖的隨機控制器的控制面板
?
參數
屬性
描述
要求
的名字
描述性名稱顯示了這種控制器的樹。
沒有
忽略副控制塊
如果勾選此項,交錯控制器將sub-controllers像單一請求元素和一次只允許一個請求/控制器。
沒有
^
隨機順序控制器
隨機順序控制器就像一個簡單的控制器,它將執行每個孩子 元素最多一次,但節點的執行順序是隨機的。
截圖的隨機順序控制器的控制面板
?
參數
屬性
描述
要求
的名字
描述性名稱顯示了這種控制器的樹。
沒有
^
流量控制器
這個控制器是嚴重的命名,因為它不能控制的吞吐量。?請參考?常數吞吐量計時器?為一個元素,可以用來調整吞吐量。
流量控制器允許用戶控制執行的頻率。 總共有兩種模式-百分比執行和執行。
百分比執行
使控制器執行一定比例的迭代測試計劃。
總執行
使控制器停止執行一定數量的處決后發生。
像一只控制器,這個 當父母循環控制器啟動時設置重置。
截圖的吞吐量控制器的控制面板
?
?
流量控制器可以產生非常復雜的行為與其他控制器相結合,特別是與交錯或隨機控制器作為父母(也非常有用)。
?
參數
屬性
描述
要求
的名字
描述性名稱顯示了這種控制器的樹。
沒有
執行風格
控制器是否在執行百分比或全部執行模式下運行。
是的
吞吐量
一個數字。 百分比執行模式,從一個數字?0?- - - - - -?100年?顯示的百分比乘以控制器將執行。 ”?50?”是指控制器將執行在迭代通過測試計劃的一半。 總執行模式,顯示的總數乘以控制器將執行。
是的
每個用戶
如果勾選此項,每個用戶將導致控制器計算是否應該執行在每個用戶(每個線程)的基礎上。 如果不加以控制,那么計算將全球所有用戶。 例如,如果使用總執行模式,取消“?每個用戶?”,然后給定數量的吞吐量將死刑的總數。 如果“?每個用戶?“檢查,然后執行的總數將用戶的數量乘以給吞吐量。
沒有
^
運行時控制器
運行時控制器控制它的孩子被允許運行多久。
截圖的運行時控制器的控制面板
?
參數
屬性
描述
要求
的名字
描述性名稱顯示了這種控制器的樹,和使用事務。
是的
運行時間(秒)
在幾秒鐘內所需的運行時
是的
^
if控制器
如果控制器允許用戶控制是否它下面的測試元素(孩子)運行。
默認情況下,這個條件是評估初始入口只有一次,但你可以選擇把它用來評估每一個可運行的元素包含在控制器。
腳本可以處理作為一個變量表達式,而不需要Javascript。 它總是可以使用Javascript函數和變量的條件下,只要他們評估”?真正的”或“?假?”; 現在可以不使用Javascript的開銷。 例如,以前可以使用條件:?$ { __jexl($ { VAR } = = 23)}?這將被評估?真正的?/假?,結果將被傳遞給Javascript 它將返回?真正的?/?假?。 如果變量表達式選項被選中時,那么表達式進行求值 并與“?真正的?”,而無需使用Javascript。 另外,變量表達式可以返回任何值,而 Javascript條件必須返回”?真正的?“/”?假?”或者記錄一個錯誤。
?
沒有變量條件時可用腳本解釋為Javascript。 如果你需要訪問這些變量,然后選擇“?條件解釋為變量表達式??“和使用 一個__javaScript()?函數調用。 然后,您可以使用對象”?var?”、“?日志?”、“?ctx?在腳本中”等。
?
?
測試如果未定義的變量(或null)做以下假設變量命名?myvar#?表達式將:
"${myVar}" == "\${myVar}"或者使用:
"${myVar}" != "\${myVar}"為了測試定義一個變量,而不是null。
?
如果控制器的控制面板的屏幕截圖
?
例子(Javascript)
- $ {數} < 10
- " $ { VAR }”= =“abcd”
- $ { JMeterThread.last_sample_ok }?(檢查最后的樣品是否成功)
如果有一個錯誤解釋的代碼,假定為條件?假?消息,登錄?jmeter.log?。
例子(變量表達式)
- $ { __jexl($ {數} < 10)}
- $ {結果}
^
而控制器
而控制器運行它的孩子,直到條件”?假?”。
可能的條件值:
- 空白——最后一個示例循環失敗時退出循環
- 去年?——最后一個示例循環失敗時退出循環。 如果之前的最后一個示例只是循環失敗,不進入循環。
- 否則——退出時(或不輸入)循環條件等于字符串“?假?”
?
條件可以是任何變量或函數,最終等于字符串”?假?”。 這允許使用JavaScript,BeanShell、屬性或變量。
?
?
?
注意,條件是評估兩次,一次采樣前的孩子,一次在兒童抽樣,所以把 在條件(如非冪等功能?__counter?)可以引入問題。
?
例如:
- $ { VAR }?——在那里?VAR?是由其他測試元素設置為假
- $ { __javaScript($ { C } = = 10)}
- $ { __javaScript(" $ { VAR2 } " = = " abcd ")}
- $ { _P(財產)}?——屬性設置為“?假?“別的地方
截圖時控制器的控制面板
開關控制器
開關控制器就像?交錯的控制器?在它運行的一個下屬元素在每一次迭代,而是比 按順序運行,控制器運行開關定義的元素的值。
?
開關值也可以是一個名稱。
?
如果開關值的范圍,它將運行第0個元素, 因此作為默認的數值例子。 它也運行如果第0個元素值是空字符串。
如果該值為非數字(非空),然后開關控制器查找 具有相同名稱的元素(很重要)。 如果沒有一個名字匹配,那么該元素命名為“?默認的”(不重要)被選中。 如果沒有違約,然后沒有元素被選中時,控制器將不運行任何東西。
控制面板的開關控制器的截圖
?
ForEach控制器
一個ForEach循環控制器通過一組相關變量的值。 當你將取樣器(或控制器)一個ForEach控制器,每個樣本(或控制器) 執行一次或多次,在每次循環變量的新值。 輸入應包括的幾個變量,每個擴展下劃線和一個數字。 每一個這樣的變量必須有一個值。 例如當輸入變量的名字?inputVar?應該定義以下變量:
- inputVar_1 =溫迪
- 查爾斯inputVar_2 =
- inputVar_3 =彼得
- inputVar_4 =約翰
注:“?_?“現在分隔符是可選的。
當返回的變量是作為“?returnVar?”,收集取樣器和控制器根據ForEach控制器將被執行?4?連續兩次, 返回變量有各自的價值觀之上,然后可以用于采樣。
它尤其適合與正則表達式后處理器運行。 這可以“創造”必要的輸入變量的結果數據之前的請求。 通過省略“?_?“分隔符,ForEach控制器可用于循環組使用 輸入變量?refName_g?,也可以遍歷所有的團體比賽 通過使用一個輸入變量的形式?refName_ $ { C } _g?,在那里?C?是一個計數器變量。
?
ForEach控制器如果不運行任何樣品?inputVar_1?是?零?。 這將是如果沒有返回的正則表達式匹配。
?
截圖的ForEach控制器的控制面板
?
?
?在本例中,我們創建了一個測試計劃,發送一個特殊的HTTP請求 只有一次,將另一個HTTP請求發送到每一個環節,在頁面上可以找到。
圖7 - ForEach控制器的例子
我們配置一個線程的線程組和一個循環數的價值 一個。 你可以看到,我們添加了一個HTTP請求線程組 另一個HTTP請求ForEach控制器。
第一次HTTP請求后,添加一個正則表達式提取器,提取所有的html鏈接 返回的頁面,并使他們的?inputVar?變量
在ForEach循環中,HTTP取樣器添加哪些請求所有的鏈接都從第一個返回的HTML頁面。
ForEach例子
這是?另一個例子?你可以下載。 這有兩個正則表達式和ForEach控制器。 第一個匹配,但第二個不匹配, 所以沒有樣品是由第二個ForEach控制器
圖8 - ForEach控制器例2
線程組有一個單線程和一個循環計數兩種。
示例1使用JavaTest取樣器返回的字符串”?a b c d?”。
正則表達式提取器使用表達式?(\ w)\ s?匹配一個字母后跟一個空間, 并返回這封信(不是空間)。 任何與字符串前綴匹配”inputVar?”。
ForEach控制器提取所有變量前綴”?inputVar_?”,并執行它 樣本,通過變量中的值”?returnVar?”。 在這種情況下它將設置變量值”?一個?”“?b?”和“?c?”。
的?1?取樣器是另一個Java取樣器使用返回變量”?returnVar?“樣品標簽的一部分 隨著取樣器的數據。
示例2?,?正則表達式2?和?2?幾乎是相同的,除了Regex已經改為“?(\ w)\ sx?”, 這顯然不匹配。 因此,?2?取樣器將不會運行。
^
模塊控制器
模塊控制器提供了一種機制來代替測試計劃片段到當前測試計劃在運行時。
一個測試計劃片段由一個控制器和所有的測試元素(取樣器等)中包含它。 片段可以位于任何線程組,或?工作臺?。 如果片段位于線程組,則可以禁用其控制器,防止正在運行的片段 除了模塊控制器。 或者你可以將片段存儲在一個虛擬線程組,和禁用整個線程組。
可以有多個片段,每一個都有不同的系列 取樣器。 該模塊控制器可以用于輕松切換這些只需選擇多個測試用例 適當的控制器的下拉框。 這提供了方便快速、輕松地運行許多替代測試計劃。
一個片段的名稱是由控制器名稱及其父母的名字。 例如:
Test Plan / Protocol: JDBC / Control / Interleave Controller (Module1)任何?碎片模塊所使用的控制器必須有一個唯一的名稱?, 正如它的名字被用來找到目標控制器測試計劃時重新加載。 出于這個原因,最好確??刂破鲝哪J的名字是改變 -如上面的例子所示 否則重復可能意外時創建新元素添加到測試計劃中。
截圖模塊控制器的控制面板
?
模塊控制器與遠程測試不應使用或非gui測試與工作臺部件因為工作臺測試元素并沒有測試計劃的一部分?jmx?文件。 任何這樣的測試就會失敗。
?
包括控制器
包括控制器被設計成使用一個外部jmx文件。 使用它,創建一個測試片段 下面的測試計劃和添加任何所需的取樣器,控制器等。 然后保存測試計劃。 文件現在可以包含其他測試計劃的一部分。
為了方便起見,?線程組?也可以添加外部JMX文件中用于調試目的。 一個?模塊控制器?可以用來參考測試片段。 的?線程組?期間將被忽略 包括過程。
如果測試使用Cookie經理或用戶定義的變量,這些應放置在頂層 測試計劃,包括文件,否則不能保證工作。
?
此元素不支持變量/函數在文件名字段中。?
但是,如果屬性?includecontroller.prefix?定義, 內容使用前綴路徑名。
?
?
當使用包括控制器和包括相同的JMX文件,確保你的名字包括控制器不同,以避免面對已知問題?錯誤 50898年?。
?
如果文件不能被發現的位置?前綴?+?文件名?,那么控制器 嘗試打開?文件名?相對于JMX啟動目錄。
截圖,包括控制器的控制面板
?
事務控制器
事務控制器產生一個額外的 的樣品的總時間采取措施執行嵌套的測試元素。
?
注意:當”的復選框?包括時間的計時器和張后處理器生成的樣本?“檢查, 控制器內的時間包括所有處理范圍,而不僅僅是樣品。
?
有兩種操作模式:
- 添加額外的樣品后,嵌套的樣品
- 添加額外的樣品作為父母的嵌套的樣品
生成的示例包括所有次嵌套取樣器默認扣除(自2.11年)定時器和處理時間的前/后處理器 除非復選框”?包括時間的計時器和張后處理器生成的樣本?”檢查。 根據時鐘分辨率,它可能略微超過個體采樣+計時器的總和。 時鐘可能蜱蟲后控制器記錄開始時間之前第一個示例開始。 最后同樣。
生成的示例僅僅是如果所有使成功視為成功。
在家長模式中,單個樣品仍然可以看到在樹視圖中偵聽器, 但不再作為單獨的條目出現在其他聽眾。 同時,使沒有出現在CSV日志文件,但他們可以保存到XML文件。
?
在家長模式中,斷言(等等)可以被添加到事務控制器。 但是默認情況下它們將被應用到單個樣本和樣本總體事務。 限制范圍的斷言,使用一個簡單的控制器控制樣本,并添加斷言 簡單的控制器。 父模式控制器正常目前不支持嵌套事務控制器的類型。
?
截圖的事務控制器的控制面板
記錄控制器
錄音控制器是一個地方持有人指示代理服務器 記錄樣品。 在測試運行期間,它沒有效果,類似于簡單的控制器。 但在 記錄使用HTTP(S)測試腳本錄音機?默認情況下,所有記錄樣品 被保存在錄音控制器。
截圖記錄控制器的控制面板
臨界段控制器
臨界段控制器確保其子元素(取樣器/控制器等)將被執行 只有一個線程作為一個名叫鎖將在執行之前的控制器。
截圖的臨界段控制器的控制面板
下圖顯示了一個示例使用臨界區控制器,控制器確保下圖2中至關重要的部分 :
- DS2 - $ { __threadNum }?一次只有一個線程執行嗎
- DS4 - $ { __threadNum }?一次只有一個線程執行嗎
測試計劃使用臨界區控制器
?
轉載于:https://www.cnblogs.com/jingdenghuakai/p/11125905.html
總結
以上是生活随笔為你收集整理的jmeter 逻辑控制器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: maven的内部属性
- 下一篇: 20190703 关于如何驱动