Jmeter使用 - 2

5 參數化

5.1 自定義變量

線程組 --> 配置元件 --> 用戶定義的變量 可以自定義變量,通過 ${變量名} 使用

5.2 隨機函數

隨機數函數

# 生產六位數的隨機數字
${__Random(100000,999999,)}
# 生成隨機時間: 時間格式yyyy-MM-dd,開始時間,結束時間,設置時區(非必填)
${__RandomDate(yyyy:MM:dd,2030:12:31,2099:12:21,,)}
# 生成隨機字符串: 字符串長度,包含字符(支持中文,特殊字符)
${__RandomString(6,asdfghjklqwertyuiopmnbvcxz,)}
# 獲取時間戳
${__time(,time)}

加密函數

# MD5加密 明文
${__MD5(123456,)}
# Base64加密 明文
${__base64Encode(123456,)}
5.3 CSV參數化

添加配置元件–CSV數據文件配置
在這里插入圖片描述

線程共享模式

  • 所有線程:所有線程共享一份文件
  • 當前線程組:線程組內所有線程共享一份文件,多個線程順序讀取文件
  • 當前線程:每個線程都維護一份自己的文件,多個線程都從文件第一行開始順序讀取

遇到文件結束符再次循環:設置為True,線程會再次循環從第一行讀取數據,設置為False,則線程會讀取文件結束符

遇到文件結束符停止線程:設置為True,讀取文件結束符號時停止線程,設置為False,讀取文件結束符時不停止線程

  • 遇到文件結束符再次循環 ,遇到文件結束符停止線程
  • True False:一直循環讀取數據,直到線程的所有循環結束
  • True True:一直循環讀取數據,直到線程的所有循環結束
  • Flase True:讀取到文件結束符就停止線程
  • False False:遇到文件結束符不停止線程,線程一直讀取文件結束符作為參數

線程共享模式需要配合多線程(設置線程的數量大于1以及設置循環次數使用)

  • 多線程:設置線程組的線程數為n,將每個線程都會執行一遍線程組內的所有請求
  • 循環:設置循環次數為n,則每個線程都會循環執行所有請求n次
    在這里插入圖片描述

6 Cookie 鑒權

參考文檔:Apache JMeter - 用戶手冊:組件參考

HTTP Cookie管理器實現Cookie自動關聯的原理

  • 第一步:當Jmeter第一次請求服務器的時候,如果服務器有通過響應頭的Set-Cookie返回Cookie,那么Http Cookie管理器會保存這些Cookie的值
  • 第二步:當Jmeter第二次請求服務器的時候,會自動將Cookie信息添加到請求中,從而實現Cookie關聯

實現Cookie鑒權

  • 自動關聯:使用HTTP Cookie管理器對Cookie進行自動關聯

  • 手動關聯:使用正則提取器對Cookie進行提取,之后在HTTP請求頭管理器中設置Cookie請求頭
    在這里插入圖片描述
    在這里插入圖片描述

7 斷言

響應斷言

  • 響應碼相等斷言
  • 響應頭,響應體包含,相等斷言
    在這里插入圖片描述
    JSON斷言:通過JSON Path定位響應中的字段,并驗證值是否符合預期,進行斷言
    在這里插入圖片描述
    在這里插入圖片描述
    持續時間斷言:請求超過最大持續時間斷言失敗
    在這里插入圖片描述

8 跨線程–全局變量

通過正則提取器或JSON提取器提取的變量是局部變量,作用域為所在的線程組。如果需要跨線程組使用變量,需要進行下面操作。

跨線程實現變量引用

  1. 使用提取器將值保存為局部變量
  2. 通過BeanShell后置處理器將獲取的值存儲為全局屬性
# 保存局部變量為全局屬性
${__setProperty(USERNAME,${username},)}
# 引用全局屬性
${__P(USERNAME,)}
  1. 通過引用全局屬性的方法在其它線程組內使用全局屬性

跨線程實現Cookie關聯

  1. 配置JMeter全局配置文件 jmeter/bin/jmeter.properties CookieManager.save.cookies = true
  • 方便調試,進行該配置后在調試取樣器可以查看Cookie的值
  1. 提取Cookie保存為局部變量(正則提取)
  2. 通過BeanShell后置處理器將獲取的cookie的值存儲為全局屬性
// __setProperty 但是設置cookie為全局屬性,在部分版本(5.1)不會解析變量
// 會直接將${custom_cookie}作為字符串存儲到屬性中
// ${__setProperty(my_cookie,${custom_cookie},)};
// 通過嵌套groovy函數實現變量解析
${__groovy(props.put("my_cookie", vars.get("custom_cookie")),)}
  1. 添加全局的HTTP Cookie管理器,在全局Cookie管理器中添加Cookie,cookie的值通過獲取全局屬性的方法(__P方法)獲取,同時,設置Cookie生效的域名和請求路徑
  • 域:Cookie生效的域名 / 服務器 , 路徑為 / 表示所有請求都生效
    在這里插入圖片描述

9. Jmeter實現數據庫(MySQL)操作

9.1 操作步驟
  1. 添加數據庫驅動(驅動版本和數據庫版本要匹配 MySQL5.7 對應的驅動版本是 5.1
  2. 添加配置元件:在線程組下添加配置元件/JDBC Connection Configuration
  3. 添加配置信息
  4. 創建JDBC請求
  5. 獲取數據
9.2 配置信息配置
  • Max Number of Connections:連接池最大連接數。
    • 根據需求進行配置,將最大連接數設置為并發用戶數的1.2 - 1.5倍
    • 設置為0時,表示連接池的最大連接數沒有明確的限制,連接池可能會根據實際需求動態地創建新的數據庫連接(不推薦使用)
  • Max Wait:獲取連接失敗,等待連接釋放的最大等待時間
  • Time Between Eviction Runs:檢查并清理空閑連接的時間間隔
  • Auto Commit:自動提交
    • 設置為True,會在執行完SQL后自動提交事務
    • 設置為False,需要手動進行事務的提交和回滾
  • Transaction Isolation:事務隔離級別
    • default:和連接數據庫的隔離級別保持一致(推薦)
  • 是否開啟預編譯:
    • 預編譯(簡單理解):數據庫優化技術,實現參數和模板分離。
    • 預編譯步驟一:模板編譯:數據庫提前解析帶有占位符的SQL,生成執行計劃并緩存
    • 預編譯步驟二:參數綁定:執行時只需要傳遞參數值,無需二次編譯,提升性能并且防注入
      在這里插入圖片描述
      在這里插入圖片描述
9.3 創建JDBC請求

參考文檔:Apache JMeter - 用戶手冊:組件參考
在這里插入圖片描述
執行的SQL語句類型

補充:占位符替換和${}替換的區別(重要)

?占位符是將SQL中的占位符替換為參數,底層原理是對SQL進行預編譯生成執行計劃,之后執行時對參數進行替換,因此能有效的防止SQL注入的問題,同時,對于需要重復執行的SQL,占位符替換無需反復編譯,效率比較高

$ 替換是將引用的字符串直接拼接到SQL語句中,底層原理是將字符串直接拼接后編譯,因此存在SQL注入的安全問題。對于需要重復執行的SQL,每次都要拼接后編譯,因此效率比較低
在這里插入圖片描述

  • Select Statement:普通查詢SQL,支持使用 ${變量名稱} 進行參數化,不支持 ?占位符
  • Update Statement:普通修改SQL(insert / update / delete),支持使用 ${變量名稱} 進行參數化,不支持 ?占位符
  • Prepared Select Statement:預編譯查詢SQL,支持 ?占位符,不支持使用 ${變量名稱} 進行參數化
    • 可以使用${}進行參數化,但是引用的變量是字符串需要手動添加引號,較為麻煩,不支持
  • Prepared Update Statement:預編譯修改SQL,支持 ?占位符,不支持使用 ${變量名稱} 進行參數化
  • Callable Statement:調用存儲過程,支持使用 ${變量名稱} 進行參數化,支持 ?占位符
  • Commit:提交當前連接的事務,忽略SQL語句,配合AutoCommit(false)使用。
  • Rollback:回滾當前連接的事務,忽略SQL語句,配合AutoCommit(false)使用。
  • Autocommit(false):不提交事務。
  • Autocommit(true):自動提交事務。
    在這里插入圖片描述
9.4 JDBC請求參數化

使用占位符方式進行參數化,在parameter value使用${}引用變量給占位符賦值

  • 用戶自定義的變量
  • 隨機函數
  • CSV參數化
9.5 發送請求

發送請求
在這里插入圖片描述
查看結果
在察看結果樹 --> 請求 --> 請求體中查看實際執行的SQL語句
在這里插入圖片描述
在察看結果樹 --> 響應數據 – > 響應體中查看查詢結果
在這里插入圖片描述
使用結果

添加調試取樣器,可以在取樣器的響應體中查看查詢的查詢數據
在這里插入圖片描述
${result_username_#} 獲取當前列數據有多少行

${result_username_N} 獲取當前列數據的第N行,N超過數據返回,直接使用 ${result_username_N} 返回

10 Jmeter的命令行執行

-n 通過命令行執行jmeter腳本 
-t 指定jmx文件的目錄 
-l 生成jtl報告(需要使用Jmeter的察看結果樹觀看)
-e 生成html報告
-o 指定html報告的存儲路徑(必須為空目錄)生成jtl需要進行全局配置 -- 通常不使用,而是使用生成html報告
全局配置:設置輸出格式為xml,設置下面兩個屬性為true
jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true# 生成jtl報告指令
jmeter -n -t test.jmx -l report.jtl生成html報告的全局配置,設置輸出格式為csv: 
jmeter.save.saveservice.output_format=csv
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true# 生成html報告指令
jmeter -n -t csv.jmx  -l  result.jtl -e  -o reports

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

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

相關文章

部署 Zabbix 企業級分布式監控

目錄 一、監控系統的功能概述 1、監控的定義 2、監控的五個層次 (1)基礎設施監控 (2)系統層監控 (3)應用層監控 (4)業務監控 (5)端用戶體驗監控 二、…

Silly Tavern 教程②:首次啟動與基礎設置

本文介紹 Silly Tavern 首次啟動后的基礎設置,包括語言切換與 AI 后端連接,重點推薦 無需付費即可使用的免費或低成本方案,涵蓋 Groq、AI Horde、Gemini 和 OpenRouter。 一、啟動 Silly Tavern 并訪問界面 完成安裝后,執行以下命…

C#解析JSON數據全攻略

還在為C#處理網絡API返回的復雜JSON數據頭疼嗎?據統計,90%的開發者都曾在JSON解析上栽過跟頭! 本文將手把手教你用C#輕松玩轉JSON數據:- HttpClient獲取網絡JSON數據- System.Text.Json動態解析技巧- 強類型模型轉換實戰- 特殊字…

8-大語言模型—指令理解:基于 LoRA 的大語言模型指令微調框架

目錄 1、模型上下文窗口 1.1、增加上下文窗口的微調(Fine-tuning for Longer Context) 1.1.1、 核心目標 1.1.2、關鍵步驟 (1)數據準備:構建長文本訓練集 (2)微調策略:分階段適…

工業數據中臺:PLC、SCADA、MES 的實時協同架構

在智能制造升級過程中,工業數據的互聯互通是突破生產效率瓶頸的關鍵。PLC(可編程邏輯控制器)掌控著設備的實時運行參數,SCADA(監控與數據采集系統)負責車間級的狀態監控,MES(制造執行…

【Golang】Go語言基礎語法

Go語言基礎語法 文章目錄Go語言基礎語法一、Go標記二、行分隔符三、注釋四、標識符五、字符串連接六、關鍵字七、Go語言的空格八、格式化字符串一、Go標記 Go程序可以由多個標記組成嗎,可以是關鍵字、標識符、常量、字符串、符號。如下Go語句由6個標記組成&#xf…

WebRTC指紋——深度分析(中篇)

1. 引言 在上篇中,我們建立了WebRTC審查規避系統分析的理論基礎,探討了技術背景和威脅模型。中篇將深入分析WebRTC協議棧中的具體識別特征,通過對多個主流WebRTC應用的實際協議分析,揭示不同實現之間存在的顯著差異。 這些協議層面的特征差異構成了審查系統進行指紋識別的…

谷粒商城篇章13--P340-P360--k8s/KubeSphere【高可用集群篇一】

1 k8s 1.1 簡介 Kubernetes 簡稱 k8s。 是用于自動部署, 擴展和管理容器化應用程序的開源系統。 中文官網: https://kubernetes.io/zh/ 中文社區: https://www.kubernetes.org.cn/ 官方文檔: https://kubernetes.io/zh/docs/h…

從零搭建 OpenCV 項目(新手向)-- 第二天 OpenCV圖像預處理(一)

目錄 一、圖像翻轉(鏡像翻轉) 1. 定義 2. OpenCV 函數 3. 數學表達 二、圖像仿射變換 1. 定義 2. 仿射變換的基本原理 3. OpenCV 函數 4. 圖像旋轉 5. 圖像平移 6. 圖像縮放 7. 圖像剪切 8. 為什么會出現黑色背景? 三、圖像色彩…

貪心算法Day6學習心得

第一道:738. 單調遞增的數字 - 力扣(LeetCode) 這道題目暴力算法肯定是最容易想到的,先附上暴力的代碼: class Solution { private:// 判斷一個數字的各位上是否是遞增bool checkNum(int num) {int max 10;while (n…

數據的評估與清洗篇---上手清理索引和列名

重命名索引和列名 在讀取數據時,如果我們發現數據的索引或者列名亂七八糟的,可以使用DataFrame的rename方法對它們進行重新命名。 df1.rename(index={...})df1.rename(columns={...}) 重命名索引 如果想改索引就把可選參數index指定為一個字典,針對索引,把要修改…

【ICML2025】時間序列|TimePro:炸裂!線性復雜度實現高效長程多元時間序列預測!

論文地址:https://arxiv.org/pdf/2505.20774 代碼地址:https://github.com/xwmaxwma/TimePro 為了更好地理解時間序列模型的理論與實現,推薦參考UP “ThePPP時間序列” 的教學視頻。該系列內容系統介紹了時間序列相關知識,并提供配…

2025真實面試試題分析-iOS客戶端開發

以下是對iOS客戶端開發工程師面試問題的分類整理、領域占比分析及高頻問題精選(基于??85道問題,總出現次數118次??)。按技術領域整合為??7大核心類別??,按占比排序并精選高頻問題標注優先級(1-5🌟&…

計算機網絡簡答題(大雪圣期末參考資料)

1、網絡性能指標/計算機網絡有哪些常用的性能指標?答:速率,帶寬,吞吐量,時延(發送時延、傳播時延、處理時延、排隊時延),時延帶寬積,往返時間RTT和信道(或網絡…

紅寶書單詞學習筆記 list 76-100

list 76NO.WordMeaning1staleadj. 不新鮮的;陳腐的2stalln. 小隔間;攤位;牲畜棚;v. 停頓;(使) 熄火;故意拖延3staplen. 訂書釘;主要產品;主要部分;主食;v. 用…

Vue3 學習教程,從入門到精通,Vue 3 計算屬性(Computed Properties)知識點詳解與案例代碼(15)

Vue 3 計算屬性(Computed Properties)知識點詳解與案例代碼 在 Vue 3 中,計算屬性(Computed Properties) 是用于基于響應式數據派生新數據的一種方式。計算屬性具有以下特點: 緩存性:只有在依賴…

2.5 PN-PTCP

Pro?net Precision Transparent Clock Protocol (PN-PTCP) PN-PTCP(精確透明時鐘協議)是一種專用于 Profinet 的 二層協議,其作用是為網絡中的設備提供高精度的時間同步。用于實現網絡設備的高精度時間同步。

WordPress與Typecho站點CloudFlare緩存優化實戰指南

文章目錄 WordPress與Typecho站點CloudFlare緩存加速全攻略 引言 一、CloudFlare緩存基礎原理 1.1 CloudFlare工作流程 1.2 緩存類型 二、基礎配置指南 2.1 CloudFlare賬戶設置 2.2 緩存配置 2.3 頁面規則設置 三、高級緩存策略 3.1 動態內容緩存 WordPress方案: Typecho方案:…

【OpenCV實現多圖像拼接】

文章目錄1 OpenCV 圖像拼接核心原理2 OpenCV 圖像拼接實現代碼方法一:使用 OpenCV 內置 Stitcher 類(推薦)方法二:手動實現核心步驟關鍵參數說明3 常見問題處理4 增量式圖像拼接(Incremental Image Stitching&#xff…

haproxy 算法

一、靜態算法按照事先定義好的規則輪詢公平調度,不關心后端服務器的當前負載、連接數和響應速度 等,且無法實時修改權重(只能為0和1,不支持其它值),只能靠重啟HAProxy生效。(不管后端死活)1.1、static-rr:基于權重的輪…