【性能測試】-2- JMeter工具的使用

一、基礎腳本搭建

🎯?核心目標:用 JMeter 搭性能測試 “骨架”(測試計劃、線程組、取樣器、監聽器)

  • 📋?測試計劃:整個測試的 “容器”,所有測試組件都放這里
  • 🧵?線程組:模擬多少用戶(線程)、多久發請求(調度),像 “并發用戶軍團”
  • 🎲?取樣器:具體發什么請求(HTTP、JDBC 等),是 “真實干活的小兵”
  • 👂?監聽器(查看結果樹):調試時看結果(請求是否成功、返回啥數據),但性能測試時要禁用
    → 為啥?👂監聽器超占資源!圖形界面(GUI)調試用用就行,真跑性能測試得用命令行(CLI),不然 JMeter 資源被分走,測試結果就不準啦~

二、命令行執行

💻?核心目標:真正跑性能測試時,不用圖形界面,用命令行更高效!

  • JMeter 默認只給 1G 內存(1g),如果要模擬很多用戶,可能不夠用~
  • 兩種命令行玩法:

    1. 簡單版:jmeter -n -t 腳本.jmx -l 結果.jtl -e -o 報告文件夾
      → 適合快速跑腳本,生成測試報告
    2. 進階版:java -Xms2g -Xmx2g … -jar ApacheJMeter.jar …
      → 手動分配內存(比如給 2G),想咋調就咋調,超靈活!

三、腳本咋來的?兩種姿勢

1?? 純手工寫腳本

???適用場景:接口協議清晰(HTTP、TCP 等)、參數簡單,直接對著接口文檔寫

  • 要搞懂:用啥協議?接口咋調用?參數咋傳?然后在 JMeter 里一步步填信息,把請求拼出來~
2?? 錄制腳本

🎥?適用場景:接口參數復雜、流程多(比如瀏覽器里點來點去的操作),直接錄更方便!

  • 咋錄?
    1. 📦 先建 “測試計劃”+“線程組”(得有個容器存錄制的請求)
    2. 🔌 開 “HTTP 代理服務器”:設個端口(比如 8888),選好把錄制的請求存到哪個線程組里
    3. 🔐 啟動代理 → 生成 CA 證書(讓瀏覽器 / APP 信任這個代理)
    4. 🎯 在要測試的 APP / 瀏覽器里,填代理信息(IP + 端口),然后正常操作!
      → JMeter 會自動把你操作的接口請求 “錄” 下來,直接變成測試腳本~

四、腳本回放 & 調試

???核心目標:跑一遍腳本,看看請求對不對、結果準不準!

  • 👀?查看結果樹
    • 🌱 綠色:網絡請求發出去成功了,但結果對不對還得仔細看(比如返回數據是否符合預期)
    • 🔴 紅色:請求直接失敗(網絡不通、參數錯了…)
  • 🔄?HTTP 取樣器的 “重定向”
    • 跟隨重定向:顯示跳轉全過程(比如登錄→跳首頁,每一步都記下來)
    • 自動重定向:只顯示最終結果(不管中間跳了多少次)
  • 🧹?瘦身腳本:回放時,把無關請求(比如頁面廣告、多余的圖片請求)禁用 / 刪掉,讓測試更聚焦!

五、請求編碼:讓 JMeter 發對請求

📦?核心問題:發請求時,參數 / 內容編碼不對,服務器可能看不懂你的請求(比如中文亂碼),得統一編碼規則!

1. 通用編碼:取樣器填 UTF-8

在 JMeter 的 ** 取樣器(比如 HTTP 請求)** 里,把「內容編碼」設為?UTF-8
→ 作用:讓請求體(比如表單、JSON)的編碼統一,避免因編碼不一致導致服務器解析錯誤

2. 表單請求(application/x-www-form-urlencoded)

📝 場景:提交登錄表單、簡單參數時常用這種格式

  • 勾上「編碼」選項!
    → 為啥?如果參數里有中文 / 特殊字符(比如?&?%),不編碼會亂套~
    → 效果:參數會被?urlencoded?處理(比如中文轉?%E4%B8%AD%E6%96%87?),服務器能正確解析
3. JSON 請求(application/json)

📝 場景:接口用 JSON 傳參(現在超常見!)

  • 必須加?消息頭管理器,填?Content-Type: application/json;charset=utf8
    → 作用:告訴服務器 “我發的是 JSON,編碼 UTF-8”,避免 JSON 里的中文 / 特殊字符解析錯誤
4. 文件上傳(multipart/form-data)

📝 場景:傳圖片、Excel 等文件時用

  • 請求格式選?POST multipart/form-data
    → 作用:讓 JMeter 以 “分塊” 方式傳文件 + 參數,確保文件內容、文件名編碼正確

六、響應編碼:解決返回結果亂碼

🔍?核心問題:服務器返回的數據,JMeter 看不懂(亂碼),尤其是 Windows 電腦!

1. 為啥亂碼?

Windows 系統默認編碼是?GBK,JMeter 跟著也用 GBK。但如果服務器返回的是 UTF-8 編碼的內容,JMeter 用 GBK 解析就會亂碼(比如變成??????)

2. 咋解決?

改 JMeter 的?全局編碼配置

  • 找到 JMeter 安裝目錄 →?bin?文件夾 → 打開?jmeter.properties?文件
  • 搜索?sampleresult.default.encoding,改成:

    properties

    sampleresult.default.encoding=UTF-8
    
  • 重啟 JMeter!之后解析響應就用 UTF-8,不亂碼啦~

七、變量 & 參數化:讓腳本更靈活

🔄?核心目標:腳本里的參數不能寫死!要動態變(比如不同用戶用不同賬號,不同請求用不同參數)

1. 三種傳參方式

JMeter 里常用這三類 “變量容器”:

  • 📌?用戶定義的變量:全局變量,整個測試計劃都能用(適合固定值,比如環境地址?https://test-api.com?)
  • 📌?用戶參數:線程組內動態傳參(比如每個線程用不同的用戶名、密碼)
  • 📌?屬性(Properties):屬于 JMeter 工具本身的 “全局變量”,能跨線程組傳參
    → 比如:線程組 1 登錄拿到 token,線程組 2 要用這個 token 發請求,就靠屬性傳遞~
2. 性能測試必用:參數化

📝 場景:模擬 100 個用戶登錄,總不能每個用戶的賬號密碼都手寫吧?

  • 用?CSV 數據文件設置?或?用戶參數,把賬號、密碼存在文件里,讓 JMeter 循環讀、動態替換
  • 效果:每個線程(用戶)用不同的參數,測試更真實(比如模擬 100 個真實用戶操作)
3. 屬性的特殊用法

💡?跨線程組傳參:比如 “登錄線程組” 拿到的 token,想給 “下單線程組” 用

  • 用函數?__setProperty?把 token 存成屬性
  • 再用?__P?函數在另一個線程組取這個屬性
  • 適合?混合場景測試(比如先登錄、再下單、再付款,不同步驟拆分線程組)

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

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

相關文章

從零構建桌面寫作軟件的書籍管理系統:Electron + Vue 3 實戰指南

📚 從零構建桌面寫作軟件的書籍管理系統:Electron Vue 3 實戰指南 💡 本文深入探討了基于 Electron Vue 3 技術棧的桌面寫作軟件中書籍管理系統的設計與實現,涵蓋了書籍的創建、編輯、刪除等核心功能的完整技術方案,…

2025華數杯數學建模A題【 多孔膜光反射性能的優化與控制】原創論文講解(含完整python代碼)

大家好呀,從發布賽題一直到現在,總算完成了2025華數杯數學建模A題【 多孔膜光反射性能的優化與控制】完整的成品論文。本論文可以保證原創,保證高質量。絕不是隨便引用一大堆模型和代碼復制粘貼進來完全沒有應用糊弄人的垃圾半成品論文。A題論…

網絡相關(AI回答)

網管交換機都支持帶tag的以太幀嗎DeepSeek-R1 回答完成深度思考完成 用時24秒,搜索全網20篇資料是的,所有網管交換機都支持處理和轉發帶Tag(802.1Q VLAN標簽)的以太網幀,這是其核心功能之一。以下是關鍵要點&#xff1…

每日五個pyecharts可視化圖表-bars(5)

探索pyecharts庫中條形圖的高級用法與定制技巧,打造精美數據可視化圖表 在數據可視化中,條形圖是最常用的圖表類型之一。它能夠清晰地展示不同類別的數據對比,幫助我們快速理解數據特征。本文將為您介紹pyecharts庫中條形圖的5種高級用法&…

分布式版本控制工具Git

一.開發中為什么需要Git因為在多人開發中Git可以管理代碼,而且每個人都可以從庫里面下載代碼進行修改,每個人上傳和修改Git都會有記錄,如果出現大錯誤,還可以回退到正常版本。二.Git原理我們首先從代碼庫(Remote)下載代碼到工作區…

OpenAI重磅開源GPT-oss:首款支持商用的AI Agent專屬模型

今日凌晨,OpenAI宣布開源兩款全新大模型——GPT-oss-120B(1168億參數)與GPT-oss-20B(209億參數),成為全球首個支持商業化應用的開放權重推理模型。該模型專為AI智能體(Agent)設計&am…

【STM32】GPIO的輸入輸出

GPIO是通用的輸入輸出接口,可配置8種輸入模式,輸出模式下可控制端口輸出高低電平,用于點亮LED、控制蜂鳴器、模擬通信協議等;輸入模式下可以讀取端口的高低電平或者電壓,用于讀取按鍵、外接模塊的電平信號、ADC的電壓采…

5分鐘了解OpenCV

在數字化時代,圖像和視頻已經成為信息傳遞的核心載體。從手機拍照的美顏功能到自動駕駛的路況識別,從醫學影像分析到安防監控系統,視覺技術正深刻改變著我們的生活。而在這背后,OpenCV 作為一款強大的開源計算機視覺庫&#xff0c…

Oracle 關閉 impdp任務

Oracle 關閉 impdp任務 執行 impdp system/123456 attachSYS_EXPORT_TABLE_01 執行 stop_jobimmediate

數據結構——鏈表2

1.2 實現單鏈表 在上一篇文章中&#xff0c;單鏈表的實現只有一少部分&#xff0c;這一篇接著來了解單鏈表剩下的接口實現。 SList.h#pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h>//定義單鏈表就是定義節點&#xff0c;因為單鏈表…

Windows和Linux應急響應以及IP封堵

目錄 1、Windows入侵排查思路 1.1 檢查系統賬號安全 1.2 檢查異常端口、進程 1.3 檢查啟動項、計劃任務、服務 1.4 檢查系統相關信息 1.5 自動化查殺 1.6 日志分析 系統日志分析 Web 訪問日志 2、Linux 入侵排查思路 2.1 賬號安全 2.1.1、基本使用 2.1.2、入侵排查…

MIT成果登上Nature!液態神經網絡YYDS

2025深度學習發論文&模型漲點之——液態神經網絡液態神經網絡&#xff08;Liquid Neural Networks&#xff0c;LNN&#xff09;是一種受生物神經系統啟發的連續時間遞歸神經網絡&#xff08;RNN&#xff09;&#xff0c;其核心創新在于將靜態神經網絡轉化為由微分方程驅動的…

AI 對話高效輸入指令攻略(四):AI+Apache ECharts:生成各種專業圖表

- **AI與數據可視化的革命性結合**:介紹AI如何降低數據可視化門檻,提升效率。 - **Apache ECharts:專業可視化的利器**:使用表格對比展示ECharts的特點、優勢和適用場景。 - **四步實現AI驅動圖表生成**:通過分步指南講解從環境準備到圖表優化的全流程,包含多個代碼示例及…

vue2 基礎學習 day04 (結構/樣式/邏輯、組件通信、進階語法)下

一、非父子通信-event bus 事件總線1.作用非父子組件之間&#xff0c;進行簡易消息傳遞。(復雜場景→ Vuex)2.步驟創建一個都能訪問的事件總線 &#xff08;空Vue實例&#xff09;import Vue from vue const Bus new Vue() export default BusA組件&#xff08;接受方&#xf…

ubuntu 20.04 C和C++的標準頭文件都放在哪個目錄?

在 Ubuntu 20.04 中&#xff0c;C 和 C 標準頭文件的存放目錄主要由編譯器&#xff08;如 GCC&#xff09;的安裝路徑決定&#xff0c;通常分為以下兩類&#xff1a;?1. C 標準頭文件?C 語言的標準頭文件&#xff08;如 <stdio.h>、<stdlib.h> 等&#xff09;默認…

change和watch

是的&#xff0c;你理解得很對&#xff01; change 與 v-model 的結合&#xff1a;change 事件通常用于監聽 表單元素的變化&#xff0c;但它并不一定意味著值發生了變化。它主要是當 用戶與輸入框交互時&#xff08;如點擊選項、選擇文本框內容、提交表單等&#xff09;觸發的…

分布式微服務--GateWay(1)

一、什么是微服務網關&#xff08;API Gateway&#xff09; 定義&#xff1a;微服務網關是整個系統請求的統一入口&#xff0c;負責請求轉發、過濾處理、安全校驗等。 作用&#xff1a; 請求路由 日志記錄 權限控制 參數校驗 解決跨域問題 黑白名單控制 限流、熔斷、降級…

大文件斷點續傳(vue+springboot+mysql)

斷點續傳vue前端代碼后端代碼controller 層service層持久層主表&#xff0c;初始化單次上傳文件表&#xff0c;單次上傳所有的文件記錄文件分塊表科普信息參考其他博主 流程圖 vue前端代碼 這里是只做了demo示例&#xff0c;主線測試沒什么問題&#xff0c;前端同學可參考修…

Nodejs》》MySql

Node.js 操作MySQL數據庫 文檔 # 項目要先安裝mysql包npm i mysqlxx // 安裝指定版本npm i mysql // 默認安裝最新版本 # 連接 mysq// 使用連接池連接const mysql require(mysql)# 建立連接const db mysql.createPool({host:, // 數據庫的IP地址user:ro…

金倉數據庫常見問題(持續更新)

目錄 1.查看大小是否敏感寫參數&#xff0c;提示&#xff1a;未認可的配置參數 "case_sensitive" 2.sys_backup.sh init時提示can not connect the primary node 3.設置邏輯備份運行腳本時提示錯誤are not allowed to use this program (crontab) 4.修改表字段類…