性能測試-jmeter9-邏輯控制器、定時器壓力并發

課程:B站大學
記錄軟件測試-性能測試學習歷程、掌握前端性能測試、后端性能測試、服務端性能測試的你才是一個專業的軟件測試工程師

性能測試-jmeter邏輯控制器、定時器妙用

  • IF控制器
    • **IF 控制器的作用**
  • 循環控制器
    • 循環控制器的作用
  • ForEach控制器
    • ForEach 控制器的作用
    • **ForEach案例**
  • 定時器:
    • 同步定時器:
    • 常數吞吐量定時器
  • 實踐是檢驗真理的唯一標準


IF控制器

IF 控制器(If Controller)?? 是 JMeter 中的一種 ??邏輯控制器??,用于根據指定的條件判斷是否執行其內部的采樣器(如 HTTP 請求)或其它邏輯元件。

IF 控制器的作用

  • 1.條件化執行??:僅當指定條件為 true時,才執行控制器內的請求或邏輯(如登錄成功后才執行查詢操作)。
  • 2.??動態決策??:基于變量值、響應數據或前置條件動態控制測試流程(如根據用戶角色跳轉到不同頁面)。
  • 3.??流程控制??:實現復雜的測試場景(如循環、分支、異常處理等)。
  • 4.提升效率??:避免不必要的請求執行(如未登錄時跳過需授權的接口)。

在這里插入圖片描述

參數名稱類型默認值是否必填作用與說明
參數名稱文本-存儲 JDBC 請求中占位符對應的實際參數值,多個值用逗號分隔
參數類型文本-指定傳遞給 SQL 語句中占位符的參數的數據類型,如 VARCHAR、INTEGER 等
變量名稱文本-用于存儲從數據庫查詢結果中提取的變量名,多個變量用逗號分隔,和查詢結果列一一對應
結果變量名稱文本-把整個 JDBC 查詢結果存為一個 JMeter 變量,該變量為集合類型,可通過索引訪問結果行
查詢超時時間 (s)數字0設置 JDBC 查詢超時時間,單位秒,超時 JMeter 會中斷查詢并拋異常,0 表示不限制
限制結果集數字0限制數據庫返回結果集的行數,0 不限制,大于 0 的整數 n 則只返回前 n 行
處理結果集下拉選擇Store as String指定處理 JDBC 查詢結果集的方式,可選 Store as String(以字符串形式存儲)、Store as Object(以 Java 對象如 ResultSet 存儲,適合復雜操作)

在這里插入圖片描述

循環控制器

循環控制器(Loop Controller)?? 是 JMeter 中的一種 ??邏輯控制器??,用于控制其內部包含的 ??采樣器(如 HTTP 請求)或其它邏輯元件?? 按照指定的次數或條件進行 ??重復執行??。它允許您模擬用戶多次執行相同操作(如刷新頁面、重復提交表單等),是構建循環測試流程的核心元件。

循環控制器的作用

  • 1.??重復執行??:讓內部的請求或邏輯按固定次數循環(如模擬用戶連續點擊某個按鈕 5 次)。
  • 2.流程控制??:與 ??線程組循環次數?? 形成嵌套,實現更靈活的測試場景(如線程組循環 3 次,每個線程組循環內再執行某個請求 10 次)。
  • 3.??性能測試??:通過循環模擬高頻率操作,測試系統在持續負載下的表現(如短時間內多次查詢接口)。
  • 4.簡化腳本??:避免手動重復添加相同的采樣器,通過循環控制器統一管理重復邏輯。
參數名稱類型默認值是否必填作用與說明
名稱文本Loop Controller循環控制器的顯示名稱,在測試計劃中用于標識該元件(如"查詢接口循環5次")
注釋文本-對循環控制器的功能描述或備注信息(便于團隊協作理解)
循環次數(Loop Count)數值1指定內部元件循環執行的總次數。
- 填寫具體數字(如5):內部元件會執行5次
- 填寫Forever(或勾選下方選項):無限循環,直到手動停止測試或達到線程組的總循環限制
注意:若線程組本身也設置了循環次數,實際執行次數為線程組循環次數×循環控制器循環次數
永遠(Forever)布爾(復選框)未勾選若勾選,循環次數設置為無限循環(等同于填Forever),內部元件會一直執行,直到測試計劃停止或達到全局停止條件(如線程組的調度器時間結束)
典型場景:模擬持續不斷的用戶操作(如長連接心跳請求)

在這里插入圖片描述
在這里插入圖片描述

注意點:循環控制器針對子元件,線程組針對所有子元件

ForEach控制器

ForEach 控制器(ForEach Controller)?? 是 JMeter 中的一種 ??邏輯控制器??,用于 ??遍歷一組變量值??,并針對每個值 ??重復執行其內部的采樣器或邏輯元件??。它通常與 ??用戶定義的變量?? 或 ??提取器(如正則表達式提取器、JSON 提取器等)?? 配合使用,實現 ??基于動態數據集合的循環操作??,是處理多值關聯數據的常用元件。

ForEach 控制器的作用

  • 1.遍歷多值數據??:對一組相關的變量值(如從響應中提取的多個 ID、Token 等)進行逐個處理。
  • 2.動態關聯??:將提取器獲取的多個動態值(如列表頁商品 ID)依次傳遞給后續請求,實現批量操作(如查詢每個商品的詳情)。
  • 3.??簡化重復邏輯??:避免為每個值手動添加相同的請求,通過控制器統一管理循環流程。
  • 4.??精準控制??:按順序處理每個值,且支持自定義起始索引和結束條件。

在這里插入圖片描述

參數名稱類型默認值是否必填作用與說明
名稱文本ForEach Controller控制器的顯示名稱,在測試計劃中用于標識該元件(如"遍歷商品ID")
注釋文本-對控制器的功能描述或備注信息(便于團隊協作理解)
輸入變量前綴(Input Variable Prefix)文本-定義一組待遍歷變量的 共同前綴。這些變量通常由提取器(如正則提取器、JSON 提取器)生成,格式為 前綴_數字(如 itemId_1, itemId_2)。
示例:若提取器生成的變量為 userId_1, userId_2, userId_3,則此處填寫 userId。
Start index for loop (exclusive)數值0遍歷的起始索引(從 0 開始),但不包含該索引對應的值(即從 Start index + 1 開始處理)。
典型值:0(表示從第一個變量開始,如 前綴_1)。
用途:若提取器生成的變量從 前綴_1 開始,通常填 0;若從 前綴_0 開始,可填 0 或調整。
End index for loop (inclusive)數值-1遍歷的結束索引(包含該索引對應的值)。
- 填寫具體數字(如 3):表示處理到 前綴_數字(如 前綴_3)。
- 填寫 -1:自動遍歷所有存在的變量(直到找不到下一個 前綴_數字變量為止)。
典型值:-1(推薦,自動匹配所有提取到的值)。
輸出變量名稱(Output variable name)文本-定義一個變量名,用于存儲當前正在處理的變量值。在控制器內部的采樣器中,可通過該變量名引用當前值。
示例:填寫 currentUserId,則在循環內可通過 ${currentUserId} 獲取當前遍歷到的 userId_X 的值。

在這里插入圖片描述

ForEach案例

ForEach+用戶定義變量
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
ForEach+正則表達式提取器
ForEach循環可以搭配各個提取器共同使用
流程:
1、先i請求業務接口a,查看響應數據
2、正則表達式提取器提取值
3、foreach控制器設置
4、業務接口b引用變量進行使用
在這里插入圖片描述

定時器:

同步定時器:

思考:

  • 在電商活動中如何測試秒殺活動(絕對高并發) jmeter軟件線程數可以模擬多用戶,但是并不會在同一時刻瞬間發壓力,怎么辦?
    故jmeter有元件:同步定時器(區分sleep含函數)
    又叫做集合點(LR 的叫法),保證大量的請求在同一時間進行發送,形成絕對的并發
    實現原因:設置同步定時器,有請求要發出時,同步定時器會暫緩請求發送,一直到積攢的請求數達到,將所有的請求同步發送出去,形成絕對的并發(更大的壓力負載)
    在這里插入圖片描述
    在這里插入圖片描述
    在100個線程中,??每次觸發20個用戶同時并發請求??(模擬20組用戶同時操作),其余用戶按Ramp-Up逐步加入。超時未湊齊的線程會在5秒后自動執行,保證測試流程不卡死。
    在這里插入圖片描述

常數吞吐量定時器

??吞吐量(Throughput)?? 是衡量系統性能的關鍵指標之一,表示 ??單位時間內系統處理的請求數量??,通常用 ??"請求/秒"(Requests/Second)?? 或 ??"事務/秒"(Transactions/Second, TPS)?? 來衡量。
常數吞吐量定時器(Constant Throughput Timer)?? 是 JMeter 中用于 ??精確控制測試腳本的吞吐量(即每秒處理的請求數,Requests/Second 或 Transactions/Second)?? 的定時器元件。它的主要作用是 ??通過動態調整請求的發送間隔時間,使得測試整體達到用戶設定的目標吞吐量??,常用于模擬 ??穩定的業務負載?? 或 ??驗證系統在不同吞吐量下的性能表現??。
核心作用

  • 1.??精確控制吞吐量??:強制測試計劃以設定的目標速率(如每秒 50 個請求)發送請求,而非單純依賴線程數和循環次數。
  • 2.??模擬穩定業務負載??:適用于需要測試系統在 ??恒定業務壓力?? 下的表現(如每分鐘處理 3000 筆訂單)。
  • 3.??獨立于線程組配置??:吞吐量控制與線程組的線程數、Ramp-Up 時間等參數解耦,可單獨調整壓力強度。
  • 4.??支持動態調整??:通過變量或函數動態修改目標吞吐量,適應復雜測試場景。

在這里插入圖片描述
此處的是客戶端達不到20QPS(樣本數是1200),此處我更改為測試單線程10QPS的頻率訪問業務接口,進行統計測試
在這里插入圖片描述
在這里插入圖片描述

定時器的作用:模擬負載壓力要求,本省不代表性能是否有bug,bug分析需要通過響應時間和監控指標等各個方面分析

下節實操咱們學習分布式壓力測試

實踐是檢驗真理的唯一標準

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

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

相關文章

T:線段樹入門(無區間更新)

線段樹.線段樹介紹.線段樹框架.理解線段樹.圖式整個過程.線段樹代碼逐層解析.代碼匯總.leetcode練習.線段樹介紹 線段樹(SegmentTree)\;\;\;\;\;\;\;\;線段樹(SegmentTree)線段樹(SegmentTree) is 用于高效處理區間查詢和單點修改的數據結構,和樹狀數組很像&#xf…

【ISP】Charlite工具實操

實習一周了&#xff0c;參與了客觀拍攝和測試&#xff0c;復習一下nv工具 BLACK LEVEL&#xff08;黑電平&#xff09; eg&#xff1a; $ nv_ob 0 in_dir <input directory> out_name <ob file> nv_ob 0 in_dir D:\study\nvraw\ob1 out_name D:\study\nvraw\my_out…

普藍機器人 AutoTrack-IR-DR200 外設配置全指南

為什么外設配置對機器人研究如此重要&#xff1f;在當今機器人技術飛速發展的時代&#xff0c;高校學生研究團隊正成為創新的重要力量。無論是參加機器人競賽、開展畢業設計&#xff0c;還是進行學術研究&#xff0c;正確配置和使用外設設備都是成功的關鍵。尤其學生組裝一個服…

8、Python性能優化與代碼工程化

學習目標&#xff1a;掌握Python程序性能分析和優化的通用方法&#xff0c;建立工程化開發的規范意識&#xff0c;為后續AI項目開發奠定堅實的編程基礎在數據科學和AI開發中&#xff0c;代碼性能往往決定了項目的可行性。一個處理時間從幾小時縮短到幾分鐘的優化&#xff0c;可…

【算法--鏈表】117.填充每個節點的下一個右側節點指針Ⅱ--通俗講解

通俗算法講解推薦閱讀: 【算法–鏈表】83.刪除排序鏈表中的重復元素–通俗講解 【算法–鏈表】刪除排序鏈表中的重復元素 II–通俗講解 【算法–鏈表】86.分割鏈表–通俗講解 【算法】92.翻轉鏈表Ⅱ–通俗講解 【算法–鏈表】109.有序鏈表轉換二叉搜索樹–通俗講解 【算法–鏈…

分詞器(Tokenizer)總結(89)

分詞器(Tokenizer)總結 分詞器(Tokenizer) 分詞器的詞表(vocabulary)長度通常短于模型嵌入層(embedding layer)的長度。 結束標記(EOS token)應僅用于標記文本結尾,不可用于其他用途。 填充標記(PAD token)通常未預先定義,但你仍可能需要用到它: 對于生成式模型…

19 webUI應用中 Controlnet精講(05)-圖像修復與編輯

前面的篇章已經詳細講解了線條約束、三維關系與空間深度、人體姿態等幾類controlnet的功能與應用&#xff0c;本節內容將對通過controlnet對圖像修復與編輯進行講解。 通過controlnet也可以對圖片進行編輯、重繪及放大等操作&#xff0c;具體包括Recolor、Inpaint、Tile等&…

消息推送的三種常見方式:輪詢、SSE、WebSocket

摘要&#xff1a;本文介紹消息推送的三種常見方式&#xff1a;輪詢&#xff08;定時請求&#xff0c;易增負擔&#xff09;與長輪詢&#xff08;阻塞請求至有數據 / 超時&#xff0c;減少請求&#xff09;、SSE&#xff08;HTTP 單向實時傳輸&#xff0c;純文本、自動重連&…

論文閱讀:ACL 2024 Stealthy Attack on Large Language Model based Recommendation

總目錄 大模型相關研究&#xff1a;https://blog.csdn.net/WhiffeYF/article/details/142132328 https://arxiv.org/pdf/2402.14836 https://www.doubao.com/chat/19815566713551106 文章目錄速覽攻擊方法速覽一、攻擊核心目標與前提1. 核心目標2. 攻擊前提二、模型無關的簡單…

自動駕駛中的傳感器技術43——Radar(4)

本文對目前毫米波雷達中的天線設計進行比較全面的羅列&#xff0c;并進行簡單的設計評述 1、實際設計案例 圖1 涵蓋能寬窄覆蓋的天線設計&#xff08;無俯仰分辨率&#xff09;圖2 Bosch前雷達的天線設計&#xff08;有俯仰的分辨率但比較弱&#xff0c;也涵蓋了擴展覆蓋&…

使用反轉法線材質球,實現切換天空盒相同的功能,優點:包體變小

切換天空盒第一步先把SKY 天空球資源導入到工程里&#xff0c; 第二步&#xff1a;天空球文件下的SKY預制件拖入到場景里 第三步 選著SKY材質球&#xff0c;拖入自己的全景圖片(圖片分辨率不能超過5000*5000&#xff0c;否則手機無法顯示) 如果并沒有效果&#xff0c;看看圖…

真正有效的數據指標體系應該長什么樣?

真正有效的數據指標體系應該長什么樣&#xff1f;為什么大多數企業的指標體系都是"花架子"&#xff1f;真正有效的指標體系應該長什么樣&#xff1f;從數據到洞察&#xff1a;讓指標真正"活"起來結語在這個人人都在談數字化轉型的時代&#xff0c;企業就像…

分布式專題——6 Redis緩存設計與性能優化

1 多級緩存架構2 緩存設計 2.1 緩存穿透 2.1.1 簡介緩存穿透是什么&#xff1f;當查詢一個根本不存在的數據時&#xff0c;緩存層和存儲層都不會命中。正常邏輯下&#xff0c;存儲層查不到數據就不會寫入緩存層。這會導致&#xff1a;每次請求這個不存在的數據&#xff0c;都要…

一文了解大模型壓縮與部署

一文了解大模型壓縮與部署&#xff1a;從 INT4 量化到 MoE&#xff0c;讓大模型跑在手機、邊緣設備和云端&#x1f3af; 為什么需要模型壓縮與部署&#xff1f;你訓練了一個強大的大模型&#xff08;如 Qwen-72B、LLaMA-3-70B&#xff09;&#xff0c;但在部署時發現&#xff1…

新手向:中文語言識別的進化之路

自然語言處理&#xff08;NLP&#xff09;技術正在以前所未有的速度改變我們與機器的交互方式。根據Gartner最新報告顯示&#xff0c;全球NLP市場規模預計在2025年將達到430億美元&#xff0c;年復合增長率高達21%。而中文作為世界上使用人數最多的語言&#xff08;全球約15億使…

LeetCode100-206反轉鏈表

本文基于各個大佬的文章上點關注下點贊&#xff0c;明天一定更燦爛&#xff01;前言Python基礎好像會了又好像沒會&#xff0c;所有我直接開始刷leetcode一邊抄樣例代碼一邊學習吧。本系列文章用來記錄學習中的思考&#xff0c;寫給自己看的&#xff0c;也歡迎大家在評論區指導…

uniapp開源多商戶小程序商城平臺源碼 支持二次開發+永久免費升級

在電商行業競爭日益激烈的今天&#xff0c;擁有一個功能強大、靈活可拓展的多商戶小程序商城至關重要。今天給大家分享一款 uniapp 開源多商戶小程序商城平臺源碼&#xff0c;它不僅具備豐富的基礎功能&#xff0c;還支持二次開發&#xff0c;更能享受永久免費升級服務&#xf…

使用腳本一鍵更新NTP服務器地址為自定義地址

【使用場景】 在銀河麒麟桌面操作系統V10SP1-2303版本中使用腳本一鍵修改NTP服務器地址為自定義地址。 【操作步驟】 步驟1. 編寫shell腳本 ```bash desktop2303@desktop2303-pc:~$ vim setntptimeserver.sh #!/bin/bashfunction modifykylinconf() { # 檢查是否已存在目標配置…

linux內核 - 內核架構概覽

當 Linux 系統啟動時,內核會在啟動過程的早期階段接管控制——緊跟在固件(BIOS 或 UEFI)和引導加載程序完成任務之后。此時,壓縮的 Linux 內核鏡像會被加載到內存中,通常會附帶一個稱為 initramfs 的最小臨時根文件系統,它用于在切換到真實根文件系統并繼續系統初始化之前…

[react] react-router-dom是啥?

頁面路由&#xff0c;注意頁面路由不是路由器&#xff0c;因為我之前總是把路由和路由器搞混。而且我總是把前端頁面的路由和路由器的路由搞混。那么這里一定要明白&#xff0c;這里我所說的頁面路由就是指在瀏覽器里面的導航路由。 npm create vitelatest my-react-app – --t…