Jmeter(十九)邏輯控制器之if控制器


一、Jmeter邏輯控制器

  可以控制取樣器(Sampler)的執行順序,它由多個邏輯控制語句封裝成不同功能的組件組成。只對其子節點的Sampler有效。

  分為兩種類型:

    1、控制測試計划執行過程中節點的邏輯執行順序,如:循環控制器,if控制器等。

    2、對測試計划中的腳本進行分組,方便Jmeter統計執行結果以及進行腳本的運行時控制等,如:吞吐量控制器,事務控制器等。

 二、if控制器

  

 

 

 

 

 

Expression (must evaluate to true or false) :表達式(值必須是true或false),也就是說,在右邊文本框中輸入的條件值必須是true 或 false。

Interpret Condition as Variable Expression?:默認勾選項,將條件解釋為變量表達式(需要使用__jexl3 或者 __groovy 表達式)

Evaluate for all children?:條件作用於每個子項。

Use status of last sample:上一個取樣器執行成功后才執行if控制器下的子項

1、文本框上的黃色感嘆號,就是提示你,建議采用__jexl3 or __groovy 表達式,以提高性能,也就是默認的方式。

2、if 控制器 只能作用於其下的子項

下面通過具體例子來看下if控制器的用法:

1、新建一個測試計划,定義一個用戶變量mode,值為"baidu"

 

 

 2、新建兩個if控制器,根據mode的值進行不同的請求。默認是勾選Interpret Condition as Variable Expression?,就要使用到__jexl3 或者 __groovy函數。打開函數助手

 

 把生成的函數字符串拷貝到if控制器中的Expression中就行了。

 

 

 

 

3、添加一個監聽器“察看結果樹”,執行測試計划,察看執行結果

 

 4、把測試計划中mode的值改為"tenxun",再次執行察看結果。

 

 

 

 5、如果要直接使用表達式,不用__jexl3 或者 __groovy函數,那么就要去掉Interpret Condition as Variable Expression?的勾選,如圖:

 

 6、Evaluate for all children的用法

 新建一個測試計划,定義一個用戶變量flag,值為"Y"

 

 在線程組下新加一個if控制器,勾選Evaluate for all children,其下有三個取樣器

 在騰訊請求的取樣器下添加一個JSR233 PostProcessor的后置處理器,作用就是改變變量flag的值

 

 執行測試計划,查看結果樹

 

 可以看到第三個請求->阿里請求沒有被執行,原因就是執行完第二個請求->騰訊請求后,flag的值變為N了,已經不滿足if控制器的條件了。

如果把if控制器中的Evaluate for all children選項去掉,會怎么樣了?

 

 執行測試計划,查看結果樹

 

 可以看到if控制器下的三個取樣器都被執行了。

Evaluate for all children的作用就是使if控制器的條件作用於每一個子項。

7、Use status of last sample的用法

在測試計划下添加2個請求,百度請求和騰訊請求,騰訊請求放在if控制器下,在if控制器中點擊Use status of last sample按鈕,就會自動生成一個${JMeterThread.last_sample_ok}

 

 執行測試計划,查看結果樹,可以看到兩個取樣器都被執行了

 

 修改百度請求(把請求地址寫錯,比如寫成www.baidu1.com),使請求失敗,再次執行測試計划,查看結果樹

 

 可以看到百度請求失敗后,沒有再去執行騰訊請求了。

Use status of last sample的作用就是只有當上一個請求成功后,才會執行if控制器下的請求。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM