国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

JMeter核心元件詳解:高效性能測試的必備神器

0
分享至

很多JMeter用戶,尤其是初學(xué)者,往往止步于最簡單的“線程組”->“HTTP請求”->“查看結(jié)果樹”的工作流。這就像擁有一把瑞士軍刀卻只用來開瓶蓋,完全浪費(fèi)了它的強(qiáng)大潛力。



事實(shí)上,JMeter內(nèi)置了大量高效、實(shí)用的元件,掌握它們不僅能讓你從重復(fù)勞動(dòng)中解放出來,更能讓你設(shè)計(jì)出專業(yè)級、易維護(hù)、高復(fù)用的性能測試腳本。本文將帶你揭秘那些被嚴(yán)重低估的JMeter神器元件,用過之后你只會感嘆:為什么沒早點(diǎn)知道!



1、用戶定義的變量

(User Defined Variables)

- 腳本的“控制臺”

新手做法:將域名、端口、路徑等參數(shù)寫死在每一個(gè)HTTP請求中。切換環(huán)境?準(zhǔn)備用到令人頭皮發(fā)麻的“查找替換”功能吧!

高手做法:使用用戶定義的變量集中管理所有配置。

使用方法

在線程組起始位置右鍵 -> 添加 -> 配置元件 -> 用戶定義的變量

在表格中定義你的變量,例如:



在所有HTTP請求的“路徑”欄中,你不再填寫完整的URL,而是使用${protocol}://${domain}:${port}${version}/login 這種形式。

推薦原因

當(dāng)需要從測試環(huán)境切換到生產(chǎn)環(huán)境時(shí),你只需要在這個(gè)元件里修改一次domain的值(例如改為 api.your-app-prod.com),整個(gè)腳本的所有請求就全部自動(dòng)生效!只需改這一個(gè)地方!維護(hù)腳本的效率提升10086倍。

2、JSR223處理器- 動(dòng)態(tài)處理的終極瑞士軍刀

新手做法:遇到復(fù)雜的動(dòng)態(tài)數(shù)據(jù)(如加密簽名、MD5、復(fù)雜斷言)時(shí),試圖用各種內(nèi)置配置元件(如BeanShell、函數(shù)助手)拼湊實(shí)現(xiàn),或者干脆選擇放棄,無法完成真實(shí)的測試場景。腳本變得臃腫、低效且難以維護(hù)。

高手做法:使用JSR223處理器并選擇Groovy作為語言,用幾行代碼輕松解決一切動(dòng)態(tài)數(shù)據(jù)處理難題。Groovy語法類似Java但更簡潔,且性能遠(yuǎn)超BeanShell,是JMeter中執(zhí)行自定義邏輯的首選。

使用方法

位置:JSR223 PreProcessor:在請求發(fā)送前執(zhí)行,用于生成或處理參數(shù)。

JSR223 PostProcessor:在請求返回后執(zhí)行,用于提取或驗(yàn)證響應(yīng)數(shù)據(jù)。

添加方法:在某個(gè)HTTP請求或節(jié)點(diǎn)上右鍵->添加->預(yù)處理器/后置處理器->JSR223 PreProcessor/JSR223

PostProcessor。



Language:必須選擇 groovy。

Parameters:傳遞給腳本的參數(shù)(可選)。

Script:在下方的編輯框中編寫你的Groovy代碼。



3、吞吐量控制器- 控制業(yè)務(wù)比例的金手指

新手做法:認(rèn)為“線程數(shù)”和“循環(huán)次數(shù)”就能模擬所有場景,無法精確控制不同業(yè)務(wù)操作的比例。

高手做法:使用吞吐量控制器精確控制不同請求的執(zhí)行頻率。

使用方法

3.1、右鍵線程組->添加->邏輯控制器->吞吐量控制器

3.2、將需要控制的請求(如“瀏覽商品”、“提交訂單”)放到其下面。

3.3、選擇“百分比吞吐量”,并設(shè)置比例。

Eg:一個(gè)電商場景中,100%的用戶會瀏覽商品,但只有30%的用戶會添加購物車,最后只有10%的用戶會真正下單。就可以這樣設(shè)置:

一個(gè)吞吐量控制器(100%)->瀏覽商品請求

一個(gè)吞吐量控制器(30%)->添加購物車請求

一個(gè)吞吐量控制器(10%)->提交訂單請求



它控制的是執(zhí)行次數(shù)占總迭代次數(shù)的百分比,而不是線程數(shù)。這能極其真實(shí)地模擬出線上業(yè)務(wù)的實(shí)際壓力模型,讓你的壓測結(jié)果可信度飆升。

4、事務(wù)控制器- 業(yè)務(wù)性能的真實(shí)度量衡

新手做法:在測試報(bào)告中只關(guān)注單個(gè)請求的響應(yīng)時(shí)間(如“登錄”、“查詢商品”、“下單”各自花了多久)。但用戶感知的是一個(gè)完整操作的耗時(shí),比如“從登錄到成功下單”總共花了多少時(shí)間。單獨(dú)看每個(gè)請求無法評估整個(gè)業(yè)務(wù)流程的真實(shí)用戶體驗(yàn)。

高手做法:使用Transaction Controller將一系列相關(guān)的請求(Sampler)組合成一個(gè)邏輯上的“事務(wù)”。JMeter會自動(dòng)統(tǒng)計(jì)這個(gè)事務(wù)整體的響應(yīng)時(shí)間、吞吐量、是否成功等關(guān)鍵指標(biāo),讓你能從業(yè)務(wù)視角而非技術(shù)視角評估性能。

使用方法:右鍵線程組->添加->邏輯控制器->Transaction Controller。



參數(shù)說明

Name:控制器名稱,可以根據(jù)實(shí)際情況進(jìn)行設(shè)置
Comments:注釋,描述在業(yè)務(wù)中的作用
Generate Parent Sample:選中,事務(wù)控制器將作為其他取樣器的父級取樣器進(jìn)行展示;不選,事務(wù)控制器僅作為獨(dú)立的取樣器進(jìn)行展示
Include duration of timer and pre-post processors in generated sample:是否在生成的取樣器中統(tǒng)計(jì)包括計(jì)時(shí)器、預(yù)處理以及后置處理的延遲時(shí)間。默認(rèn)是不勾選。



執(zhí)行后,可以發(fā)現(xiàn),勾選Generate Parent Sample 后,聚合報(bào)告會將事務(wù)控制器及其下的取樣器執(zhí)行情況均匯總統(tǒng)計(jì),最終僅以事務(wù)控制器作為結(jié)果進(jìn)行匯總統(tǒng)計(jì)。



5、常數(shù)吞吐量定時(shí)器- 精準(zhǔn)控制壓力的節(jié)流閥

新手做法:為了模擬一定壓力,盲目設(shè)置線程組的“線程數(shù)”和“循環(huán)次數(shù)”,或者使用固定的“思考時(shí)間”。結(jié)果要么壓力瞬間飆高導(dǎo)致服務(wù)器被打垮,要么壓力曲線呈鋸齒狀起伏不定,無法實(shí)現(xiàn)穩(wěn)定、精確的吞吐量控制,測試結(jié)果毫無參考價(jià)值。

高手做法:使用Constant Throughput Timer,以每分鐘采樣數(shù)為單位,精確地控制整個(gè)測試計(jì)劃每秒需要發(fā)出的請求數(shù)。這是實(shí)現(xiàn)穩(wěn)定壓力模型、進(jìn)行容量規(guī)劃和穩(wěn)定性測試的終極神器。

使用方法:在測試計(jì)劃、線程組或某個(gè)HTTP請求上右鍵 -> 添加 -> 定時(shí)器 -> Constant Throughput Timer。

情景設(shè)置:假設(shè)你需要評估一個(gè)下單接口的容量,業(yè)務(wù)上這個(gè)接口的峰值流量是 每分鐘處理1200個(gè)請求(即每秒20個(gè)請求)。



JMeter會自動(dòng)計(jì)算和調(diào)節(jié)!它會智能地控制每個(gè)線程的請求間隔,確保所有線程在一分鐘內(nèi)發(fā)出的請求總數(shù)精確地等于你設(shè)定的目標(biāo)值(1200次)。這樣你得到的壓力曲線將是一條平穩(wěn)的直線,而不是劇烈波動(dòng)的鋸齒線。

這意味著:

對服務(wù)器友好:你不會用突發(fā)流量沖垮服務(wù)器,從而得到更真實(shí)的性能數(shù)據(jù)。

結(jié)果可衡量:你可以清晰地看到,在穩(wěn)定的每秒20個(gè)請求的壓力下,系統(tǒng)的響應(yīng)時(shí)間、錯(cuò)誤率、資源消耗是多少。然后你可以逐步提高目標(biāo)吞吐量(如到1500、1800...),直到系統(tǒng)出現(xiàn)瓶頸(如響應(yīng)時(shí)間陡增或錯(cuò)誤率上升),這個(gè)拐點(diǎn)就是系統(tǒng)的最大容量。

模擬真實(shí)場景:線上業(yè)務(wù)流量通常是相對平穩(wěn)的,而非瞬間爆發(fā)的,這個(gè)定時(shí)器能最真實(shí)地模擬這一特性。

關(guān)鍵配置

Target throughput (in samples per minute):目標(biāo)吞吐量。這是核心參數(shù),填寫你希望達(dá)到的每分鐘請求數(shù)。

Calculate throughput based on:吞吐量計(jì)算基準(zhǔn)。

This thread only:僅控制當(dāng)前線程的吞吐量。

All active threads (推薦):基于所有活動(dòng)線程數(shù)來計(jì)算和控制總吞吐量。

All active threads in current thread group:基于當(dāng)前線程組的所有活動(dòng)線程來計(jì)算。

All active threads (shared):跨所有線程組控制(需要設(shè)置為全局定時(shí)器)。

6、If Controller (如果控制器)

- 讓腳本擁有智能判斷的能力

新手做法:為了模擬不同場景,編寫多個(gè)獨(dú)立的測試腳本(如一個(gè)“成功登錄”的腳本,一個(gè)“登錄失敗”的腳本)?;蛘邔⑺姓埱缶€性執(zhí)行,無法根據(jù)服務(wù)器的響應(yīng)結(jié)果動(dòng)態(tài)決定后續(xù)流程,導(dǎo)致腳本僵硬、不真實(shí),且維護(hù)成本翻倍。

高手做法:使用If Controller,根據(jù)前一個(gè)請求的響應(yīng)結(jié)果、變量值或任何可評估的條件,智能地決定是否執(zhí)行其內(nèi)部的請求。這讓你的腳本能像真實(shí)用戶一樣“思考”,根據(jù)情況做出不同反應(yīng),極大增強(qiáng)了腳本的靈活性和真實(shí)性。

使用方法:右鍵線程組或控制器 -> 添加 -> 邏輯控制器 -> 如果(If)控制器。



比如上面定義了個(gè)變量,name=jmeter,下面有個(gè)百度的請求放在if控制器,if控制器條件里定義,當(dāng)name=jmeter成立時(shí),才會去執(zhí)行訪問百度的請求,否則就不執(zhí)行。



參數(shù)說明

Name(名稱)
自定義控制器名稱,建議寫清楚判斷邏輯,如:“僅當(dāng)?shù)卿洺晒r(shí)執(zhí)行”。

Condition(條件表達(dá)式)
核心參數(shù)!填寫判斷條件,比如:"${status}" == "success"

Interpret Condition as Variable Expression?(將條件解釋為變量表達(dá)式?)
勾選:條件會被當(dāng)作“字符串表達(dá)式”解析(推薦)
不勾選:條件需返回 “true”或“false”字符串(老版本兼容用,不推薦)

Evaluate for all children?(為所有子節(jié)點(diǎn)評估條件?)
勾選:每個(gè)子節(jié)點(diǎn)執(zhí)行前都重新判斷條件(動(dòng)態(tài)場景用)
不勾選:只在控制器入口判斷一次(靜態(tài)條件用,性能略優(yōu))

另外,我還想到一個(gè)很常見的場景: 登錄失敗自動(dòng)重試(最多3次):

1、登錄請求 → 提取 ${login_status}

2、If Controller條件設(shè)置:

${login_status} != "OK" ,計(jì)數(shù)器+再次登錄請求,直到計(jì)數(shù)器大于3,才會停止重試,并結(jié)束后續(xù)的操作。

7、JSON提取器- 告別又臭又長的正則表達(dá)式

新手做法:面對一個(gè)JSON格式的接口響應(yīng),依然使用復(fù)雜的正則表達(dá)式提取器,像解析HTML一樣用 "token":\s*"([^"]+)" 這種模式去匹配。一旦JSON格式稍有變化(比如多了一個(gè)空格),提取立刻失敗,調(diào)試到懷疑人生。

高手做法

位置:在需要提取數(shù)據(jù)的HTTP請求上右鍵 -> 添加 -> 后置處理器 -> JSON提取器。

假如要提取的json為:



那我們應(yīng)該設(shè)置如下:



推薦原因:精準(zhǔn)而強(qiáng)大!使用標(biāo)準(zhǔn)的JSONPath語法,無論數(shù)據(jù)嵌套在多少層之下,都可以像打開一個(gè)文件路徑一樣輕松定位。表達(dá)式直觀易讀,后期維護(hù)一看就懂,再也不用 decipher(破譯)那些天書般的正則表達(dá)式了。

配置說明
Names of created variables:定義變量名,用于存儲提取結(jié)果(例如Token)。
JSON Path expressions:填寫JSONPath表達(dá)式來定位數(shù)據(jù)(例如 $.data.token)。
Match No.:可選。如果路徑匹配到多個(gè)值,用于選擇第幾個(gè)(0表示隨機(jī),1表示第一個(gè))。
Compute concatenation var:可選。如果匹配到多個(gè)值,將所有值拼接后存入變量(變量名_s)。

附:常用JSONPath語法示例



以上就是本次分享的JMeter核心“神器”。它們絕非冷門的功能,而是真正能讓你從“腳本的搬運(yùn)工”轉(zhuǎn)變?yōu)椤靶阅軠y試的設(shè)計(jì)師”的關(guān)鍵樞紐。

然而,工具的價(jià)值永遠(yuǎn)取決于使用它的人。我希望大家學(xué)到的不僅僅是這些元件的用法,更是一種思維模式的轉(zhuǎn)變:從“能用”到“好用”,從關(guān)注“單個(gè)請求”到關(guān)注“業(yè)務(wù)流”,從“手動(dòng)操作”到“自動(dòng)化與智能化”。

??轉(zhuǎn)崗軟件I測試/野路子技能提升

??想了解更多漲薪技能提升方法

??可以到我的個(gè)人號:atstudy-js

即可加入領(lǐng)取 ??????

轉(zhuǎn)行、入門、提升、需要的各種干貨資料

內(nèi)含AI測試、 車載測試、AI大模型開發(fā)、BI數(shù)據(jù)分析、銀行/游戲測試、AIGC

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
男子在300公里高速沿途累計(jì)發(fā)現(xiàn)62具貓狗尸體,其中不少身穿寵物衣服,推測系帶貓狗上高速不放車內(nèi)遭遇意外

男子在300公里高速沿途累計(jì)發(fā)現(xiàn)62具貓狗尸體,其中不少身穿寵物衣服,推測系帶貓狗上高速不放車內(nèi)遭遇意外

大風(fēng)新聞
2026-02-28 11:54:08
5年資產(chǎn)縮水270億,賣酒套現(xiàn)1.1億,劉鑾雄終是向歲月低下了頭

5年資產(chǎn)縮水270億,賣酒套現(xiàn)1.1億,劉鑾雄終是向歲月低下了頭

八斗小先生
2026-02-28 17:24:32
6分鐘19個(gè)導(dǎo)彈連全軍覆沒,82架戰(zhàn)機(jī)被擊落,此戰(zhàn)給我們敲響警鐘

6分鐘19個(gè)導(dǎo)彈連全軍覆沒,82架戰(zhàn)機(jī)被擊落,此戰(zhàn)給我們敲響警鐘

混沌錄
2026-02-04 22:25:03
為什么交通部約談高德?業(yè)務(wù)全踩紅線,五天被約談三次

為什么交通部約談高德?業(yè)務(wù)全踩紅線,五天被約談三次

小蜜情感說
2026-02-27 06:43:29
英國宣布參與對伊朗軍事行動(dòng) 戰(zhàn)機(jī)已升空

英國宣布參與對伊朗軍事行動(dòng) 戰(zhàn)機(jī)已升空

桂系007
2026-02-28 23:56:12
金正恩向主要領(lǐng)導(dǎo)干部贈(zèng)送新一代狙擊步槍

金正恩向主要領(lǐng)導(dǎo)干部贈(zèng)送新一代狙擊步槍

環(huán)球網(wǎng)資訊
2026-02-28 06:36:25
柬埔寨國王72歲了:沒錢沒權(quán),無妻無子,和89歲老母親相依為命

柬埔寨國王72歲了:沒錢沒權(quán),無妻無子,和89歲老母親相依為命

照見古今
2025-12-31 20:48:07
樊振東落選!世界杯名單公布,王勵(lì)勤說到做到,溫瑞博成最大黑馬

樊振東落選!世界杯名單公布,王勵(lì)勤說到做到,溫瑞博成最大黑馬

冷紫葉
2026-02-28 19:07:29
被停職審查、轉(zhuǎn)移格力資產(chǎn)、搞辦公室戀情,71 歲董明珠身上的謠言越來越離譜

被停職審查、轉(zhuǎn)移格力資產(chǎn)、搞辦公室戀情,71 歲董明珠身上的謠言越來越離譜

互聯(lián)網(wǎng)思維
2026-02-28 23:34:40
特朗普聲稱伊朗最高領(lǐng)袖哈梅內(nèi)伊身亡,此前曾遭遇多次暗殺,去年6月已布局完整繼承體系,1989年曾以總統(tǒng)身份訪華

特朗普聲稱伊朗最高領(lǐng)袖哈梅內(nèi)伊身亡,此前曾遭遇多次暗殺,去年6月已布局完整繼承體系,1989年曾以總統(tǒng)身份訪華

極目新聞
2026-03-01 07:51:03
美國軍力全球第一,敢打任何國家?俄潑冷水:這4國你敢打誰?

美國軍力全球第一,敢打任何國家?俄潑冷水:這4國你敢打誰?

近史談
2026-01-19 10:09:51
玄學(xué)真相:凡事“反著來”,你就贏了——這才是人生最高級的破局之道

玄學(xué)真相:凡事“反著來”,你就贏了——這才是人生最高級的破局之道

青蘋果sht
2026-02-27 06:28:52
阿曼外交大臣:美伊談判就濃縮鈾“零庫存”達(dá)成一致

阿曼外交大臣:美伊談判就濃縮鈾“零庫存”達(dá)成一致

參考消息
2026-02-28 11:09:36
“以為是六個(gè)博士,結(jié)果是六個(gè)送外賣的!”六個(gè)兒子征婚視頻火了

“以為是六個(gè)博士,結(jié)果是六個(gè)送外賣的!”六個(gè)兒子征婚視頻火了

阿凱銷售場
2026-03-01 01:46:42
疑似王一博被爆私密聊天記錄,鹿晗肖戰(zhàn)躺槍,工作室成已取證

疑似王一博被爆私密聊天記錄,鹿晗肖戰(zhàn)躺槍,工作室成已取證

娛文速遞
2026-02-28 10:24:07
特朗普下令:所有聯(lián)邦政府機(jī)構(gòu)將立即停用Anthropic

特朗普下令:所有聯(lián)邦政府機(jī)構(gòu)將立即停用Anthropic

財(cái)聯(lián)社
2026-02-28 05:45:05
楊紫自律生活:少吃多睡,告別不良習(xí)慣

楊紫自律生活:少吃多睡,告別不良習(xí)慣

草莓解說體育
2026-03-01 10:45:01
要么投降,要么死在洞里——內(nèi)塔尼亞胡拒絕放走被困地道的哈馬斯

要么投降,要么死在洞里——內(nèi)塔尼亞胡拒絕放走被困地道的哈馬斯

桂系007
2025-11-05 23:52:21
不慣著!女子回婆家過年,車被妯娌砸爛,報(bào)警硬剛到底,結(jié)局亮了

不慣著!女子回婆家過年,車被妯娌砸爛,報(bào)警硬剛到底,結(jié)局亮了

川渝視覺
2026-02-28 09:15:48
2026鐵飯碗排名出爐!教師竟然跌到第9,第1名讓所有人都沉默了!

2026鐵飯碗排名出爐!教師竟然跌到第9,第1名讓所有人都沉默了!

金哥說新能源車
2026-02-27 05:18:50
2026-03-01 12:12:49
51Testing軟件測試網(wǎng) incentive-icons
51Testing軟件測試網(wǎng)
中國軟件測試人的精神家園
1528文章數(shù) 13252關(guān)注度
往期回顧 全部

科技要聞

小米超跑概念車全球首秀!殺入頂豪俱樂部

頭條要聞

伊朗伊斯蘭革命衛(wèi)隊(duì)總司令身亡

頭條要聞

伊朗伊斯蘭革命衛(wèi)隊(duì)總司令身亡

體育要聞

球隊(duì)主力全報(bào)銷?頂風(fēng)擺爛演都不演了

娛樂要聞

《江山為聘》:吳謹(jǐn)言陳哲遠(yuǎn)燃炸朝堂

財(cái)經(jīng)要聞

中東局勢升級 如何影響A股、黃金和原油

汽車要聞

小米汽車2月交付超20000臺 雷軍:為新SU7量產(chǎn)作準(zhǔn)備

態(tài)度原創(chuàng)

旅游
房產(chǎn)
本地
健康
數(shù)碼

旅游要聞

春節(jié)假期珠峰景區(qū)游客量創(chuàng)新高

房產(chǎn)要聞

濱江九小也來了!集齊海僑北+哈羅、寰島...江東教育要炸了!

本地新聞

津南好·四時(shí)總相宜

轉(zhuǎn)頭就暈的耳石癥,能開車上班嗎?

數(shù)碼要聞

DDR4價(jià)格已連續(xù)11個(gè)月上漲

無障礙瀏覽 進(jìn)入關(guān)懷版