JMeter:循環控制器While Controller的用法小結

前言

在之前的博文“JMeter案例優化:測試執行結束后,實現tearDown的幾種方式”中,嘗試了JMeter的循環控制器While Controller,發現還有點小復雜,將學習過程記錄下來,免得遺忘。

注:我使用的是JMeter 5.5

添加While Controller

右擊需要添加While Controller的線程組,選擇Add->Logic Controller->While Controller

添加成功后,界面如下:

最重要的,就是Condition這個文本框了,循環條件。

循環條件

While Controller的循環條件有三種可能值:空,LAST和表達式,下面將一一舉例說明。

1、空:

條件為空時,本循環體中最后一個采樣器執行失敗時退出。

1.1 循環體內最后一個采樣器執行失敗的情形

1.1.1 While Controller中添加兩個Dummy Sampler,分別命名為11和22
1.1.2 改寫22的Response Data,響應中的result字段為1-10的隨機數
{"result": "${__Random(1,10,)}"}

1.1.3 22添加JSON Assertion:result <= 7。則當result>7時,斷言失敗,構造出本采樣器失敗的情形。
^[0-7]?$

?1.1.4 循環提外添加一個Dummy Sampler,當循環結束后,執行本采樣器。

構造完畢,執行一次:

當采樣器22的響應為8時,斷言失敗,循環體內最后一個采樣器的執行結果為fail,滿足循環結束條件,循環結束。

1.2?循環體內非最后一個采樣器執行失敗的情形(第一個采樣器失敗)

?將上例中的11 和 22調換位置,22作為循環體內的第一個采樣器,重新執行

可以看到,雖然22已經斷言失敗了,但是循環繼續。因為循環條件僅判斷循環體內最后一個采樣器的結果。

2、LAST

值為LAST時,有兩個條件

1、循環進入條件:若循環體前面的最后一個采樣器失敗,不進入循環。

2、循環退出條件:當循環體內的最后一個采樣器失敗時退出;

第2條,與表達式為空時一樣。所以我們著重看第一個條件。

2.1 循環體前面的最后一個采樣器成功,進入循環

我們將之前的While Controller復制一份,稍加改造

2.1.1 while Controller表達式改為LAST

2.1.2 循環體內仍然是最后一個采樣器可能出現失敗的情況

2.1.3 循環外的采樣器放到循環體前面去,以便構造循環體前面的最后一個采樣器成功的情形
2.1.4?循環外的采樣器Response Data 修改為
{"result": true}

2.1.5?循環外的采樣器添加JSON Assertion:

這樣,這個采樣器將斷言成功,

執行一下

可見,因循環體前面的最后一個采樣器執行成功,成功進入循環;

并在循環體內的最后一個采樣器執行失敗時,退出循環。

2.2?循環體前面的最后一個采樣器失敗,不進入循環

修改循環外的采樣器的Response Data為:

{"result": false}

這樣斷言將失敗,不會進入循環:

3、循環條件為變量、屬性或函數,將一直循環,直到循環條件變成false

3.1 變量、屬性

?以變量為例,同樣,將前面的While Controller復制一份,稍加改造

3.1.1 11的Response Data 修改為
{"result": false}
?3.1.2 11添加JSON Extractor

?3.1.2 While Controller的Condition修改為${result}

執行結果:

1、進入循環,順序執行11和22采樣器

2、再次判斷:11采樣器的響應result為false,即所獲取的變量${result}為false,滿足循環退出條件,于是循環結束,沒有執行第二輪。

3.2?函數

可以是__jexl3或__groovy函數。當函數的結果為false是,結束循環

比如JMeter案例優化:測試執行結束后,實現tearDown的幾種方式中的例子:

${__jexl3(${__time(,)}-${__P(TESTSTART.MS,)}<=10000)}

當執行時間<=10秒時為true,繼續循環;

當執行時間>10秒時為false,結束循環?。

Tip:循環次數:

JMeter提供了一個變量__jm__<Name of your element>__idx來統計循環次數,比如下圖,循環控制器組件的名稱是While Controller-var,便可以通過${__jm__While Controller-var__idx}來獲取循環次數

從0開始計數:

不過這個變量作用域僅限于循環體內,出了循環體就不能用了。目前還沒想到什么應用場景。

附:__jexl3常用語法總結

${__jexl3(${__Random(0,50,)}==0,)} //數字等于

${__jexl3(${__Random(0,50,)}!=0,)} //數字不等于

${__jexl3("${var}".equals("qwe"),)} //字符串相等

${__jexl3("${var}" eq "qwe",)}

${__jexl3("${var}" == "qwe",)}

${__jexl3(!"${var}".equals("q1we"),)} //字符串不相等

${__jexl3("${var}" ne "qwe1",)}

${__jexl3("${var}" != "qwe",)}

${__jexl3("${var}}".contains("pre"),)} //字符串包含

${__jexl3(!"${var}".contains("pre"),)} //字符串不包含

${__jexl3("${var}".size() < 3,)} //字符串長度,可以用size()或者length(),效果一樣

${__jexl3("${var}".size() > 3,)}

${__jexl3("${var}".size() == 3,)}

${__jexl3("${var}".empty(),re)} //字符串為空

${__jexl3(${__Random(0,50,)}==0 || "${var}".contains("pre"),)} //組合條件zhozho

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41644.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41644.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41644.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《C++20設計模式》外觀模式

文章目錄 一、前言二、實現1、UML類圖2、實現 一、前言 一句話總結外觀模式&#xff1a;簡化接口&#xff0c;或者簡化流程。&#x1f642; 相關代碼可以在這里&#xff0c;如有幫助給個star&#xff01;AidenYuanDev/design_patterns_in_modern_Cpp_20 二、實現 原來需要很…

動手學深度學習(Pytorch版)代碼實踐 -循環神經網絡-54~55循環神經網絡的從零開始實現和簡潔實現

54循環神經網絡的從零開始實現 import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l import matplotlib.pyplot as plt import liliPytorch as lp# 讀取H.G.Wells的時光機器數據集 batch_size, num_steps 32, …

多特征線性回歸

目錄 一、多特征符號意義說明&#xff1a;二、多特征模型表示&#xff1a;三、Numpy向量表示、內積計算&#xff1a;1.向量表示&#xff1a;2.內積計算&#xff1a; 四、多元線性回歸梯度下降算法&#xff1a; 一、多特征符號意義說明&#xff1a; x下標j&#xff1a;表示第j個…

怎么做外貿推廣:10個詳細教程和工具

1. 介紹 1.1 什么是外貿推廣 外貿推廣指的是將產品或服務推廣到國際市場的過程。它的主要目的是吸引海外客戶&#xff0c;增加銷售額&#xff0c;并擴大企業的全球影響力。外貿推廣不僅僅是銷售產品&#xff0c;它還包括品牌建設、市場研究和客戶關系管理。 谷歌外貿推廣案例…

機器學習---線性回歸

1、線性回歸 例如&#xff1a;對于一個房子的價格&#xff0c;其影響因素有很多&#xff0c;例如房子的面積、房子的臥室數量、房子的衛生間數量等等都會影響房子的價格。這些影響因子不妨用 x i x_{i} xi?表示&#xff0c;那么房價 y y y可以用如下公式表示&#xff1a; y …

吳恩達機器學習 第三課 week3 強化學習(月球著陸器自動著陸)

目錄 01 學習目標 02 概念 2.1 強化學習 2.2 深度Q學習&#xff08;Deep Q-Learning &#xff09; 03 問題描述 04 算法中的概念及原理 05 月球著陸器自動著陸的算法實現 06 拓展&#xff1a;基于pytorch實現月球著陸器著陸 07 總結 寫在最前&#xff1a;關于強化學習…

python conda查看源,修改源

查看源 conda config --show-sources 修改源 可以直接vim .condarc修改源&#xff0c;

Shell學習——Shell變量

文章目錄 Shell變量使用變量只讀變量刪除變量變量類型字符串變量&#xff1a; 在 Shell中&#xff0c;變量通常被視為字符串。整數變量&#xff1a; 在一些Shell中&#xff0c;你可以使用 declare 或 typeset 命令來聲明整數變量。數組變量&#xff1a; Shell 也支持數組&#…

平價貓糧新選擇!福派斯鮮肉貓糧,讓貓咪享受美味大餐!

福派斯鮮肉貓糧&#xff0c;作為一款備受鏟屎官們青睞的貓糧品牌&#xff0c;憑借其卓越的品質和高性價比&#xff0c;為眾多貓主帶來了健康與美味的雙重享受。接下來&#xff0c;我們將從多個維度對這款貓糧進行解析&#xff0c;讓各位鏟屎官更加全面地了解它的魅力所在。 1?…

【三】ubuntu24虛擬機集群配置免密登陸

文章目錄 環境背景1. 配置域名映射2. 配置免密登錄2.1 在每臺機器上生成SSH密鑰對&#xff1a;2.2 將公鑰分發到其他機器&#xff1a;2.2.1 報錯問題2.2.2 修復方法 3. 驗證免密登錄在 ubuntu1 上&#xff1a;在 ubuntu2 上&#xff1a;在 ubuntu3 上&#xff1a; 測試連接 環境…

三級_02_網絡系統結構與設計的基本原則

1.下列關于接入技術特征的描述中&#xff0c;錯誤的是()。 無線統一網絡中AC如果發現某個AP出現故障&#xff0c;將自動調高周圍AP的發射功率以覆蓋出現的空洞 ADSL技術具有非對稱帶寬特性 APON是一種無線接入技術 Cable Modem利用頻分復用的方法將信道分為上行信道和下行信…

Linux系統的服務——以Centos7為例

一、Linux系統的服務簡介 服務是向外部提供對應功能的進程&#xff0c;其運行在系統后臺&#xff0c;能夠7*24小時持續不斷的提供外界隨時發來的服務請求&#xff0c;且服務進程常駐在內存中&#xff0c;具有固定的端口號&#xff0c;通過端口號就能找到服務內容。 提供服務的一…

【PB案例學習筆記】-27制作一個控制任務欄顯示與隱藏的小程序

寫在前面 這是PB案例學習筆記系列文章的第27篇&#xff0c;該系列文章適合具有一定PB基礎的讀者。 通過一個個由淺入深的編程實戰案例學習&#xff0c;提高編程技巧&#xff0c;以保證小伙伴們能應付公司的各種開發需求。 文章中設計到的源碼&#xff0c;小凡都上傳到了gite…

柯西施瓦茨不等式證明過程

柯西-施瓦茨不等式&#xff08;Cauchy-Schwarz Inequality&#xff09;是數學分析中的一個重要不等式&#xff0c;它在向量空間、內積空間等多個領域都有廣泛應用。對于實數或復數域上的內積空間&#xff0c;柯西-施瓦茨不等式可以表述為&#xff1a; 對于任意向量 u \mathbf…

Android Gradle 開發與應用 (七): Gradle 插件開發與發布

目錄 一、概述 二、Gradle插件的基礎知識 2.1 Gradle插件的定義 2.2 Gradle插件的種類 2.3 Gradle插件的生命周期 三、開發一個Gradle插件 3.1 創建Gradle插件項目 3.2 編寫插件實現 3.3 配置插件元數據 3.4 構建和測試插件 3.5 在項目中應用插件 四、發布Gradle插…

計算機未來大方向的選擇

選專業要了解自己的興趣所在。 即想要學習什么樣的專業&#xff0c;如果有明確的專業意向&#xff0c;就可以有針對性地選擇那些專業實力較強的院校。 2.如果沒有明確的專業意向&#xff0c;可以優先考慮一下院校。 確定一下自己想要選擇綜合性院校還是理工類院校或是像財經或者…

C語言結構體的相關知識

前言 從0開始記錄我的學習歷程&#xff0c;我會盡我所能&#xff0c;寫出最最大白話的文章&#xff0c;希望能夠幫到你&#xff0c;謝謝。 1.結構體類型的概念及定義 1.1、概念&#xff1a; 結構體是一種構造類型的數據結構&#xff0c; 是一種或多種基本類型或構造類型的數…

springboot集成gzip和zip數據壓縮傳輸-滿足2k數據自動壓縮(適用大數據信息傳輸)

文章目錄 1&#xff09;、springboot的gzip壓縮-滿足2k數據自動壓縮1.1后端壓縮1.2前端解壓1.3 滿足最小響應大小&#xff08;2KB&#xff09;和指定MIME類型的響應進行GZIP壓縮yml配置自定義配置或者使用Java配置 2&#xff09;、gzip壓縮1.1接口使用-數據壓縮發送前端1.2 接口…

Java面試題系列 - 第3天

題目&#xff1a;Java集合框架詳解與高效使用策略 背景說明&#xff1a;Java集合框架是Java標準庫的重要組成部分&#xff0c;提供了一系列容器類&#xff0c;如List、Set、Map等&#xff0c;用于存儲和操作集合數據。熟練掌握集合框架的使用&#xff0c;對于編寫高效、健壯的…

機器學習之神經網絡

簡介 神經網絡(Neural Network)是一種模仿人類大腦的機器學習算法,由一系列相互連接的神經元組成。它能夠自動學習數據的特征和規律,并對新的輸入數據進行預測和分類。 神經網絡作為一種模仿生物大腦機制的機器學習算法,其產生和發展主要源于以下幾個方面的背景: 對人腦認知…