Apache JMeter 入門教程(5.6.3版本)

\color{red}{官網(wǎng)安裝包已從5.2.1版本升級(jí)為5.6.3版本峦失,操作內(nèi)容未變化無更新坯沪。}

1悴灵、簡(jiǎn)述

Apache JMeter是Apache組織開發(fā)的基于Java的壓力測(cè)試工具扛芽。用于對(duì)軟件做壓力測(cè)試,它最初被設(shè)計(jì)用于Web應(yīng)用測(cè)試积瞒,但后來擴(kuò)展到其他測(cè)試領(lǐng)域川尖。 它可以用于測(cè)試靜態(tài)和動(dòng)態(tài)資源,例如靜態(tài)文件茫孔、Java 小服務(wù)程序叮喳、CGI 腳本、Java 對(duì)象缰贝、數(shù)據(jù)庫馍悟、FTP 服務(wù)器, 等等剩晴。JMeter 可以用于對(duì)服務(wù)器锣咒、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,來自不同壓力類別下測(cè)試它們的強(qiáng)度和分析整體性能赞弥。另外毅整,JMeter能夠?qū)?yīng)用程序做功能/回歸測(cè)試,通過創(chuàng)建帶有斷言的腳本來驗(yàn)證你的程序返回了你期望的結(jié)果绽左。為了最大限度的靈活性悼嫉,JMeter允許使用正則表達(dá)式創(chuàng)建斷言。

2拼窥、下載安裝

由于Jmeter是基于java開發(fā)戏蔑,首先需要下載安裝JDK,配置環(huán)境變量闯团。JMeter最低要求Java 8,可兼容更高版本仙粱,官網(wǎng)建議使用最低要求版本房交。

Jmeter官網(wǎng)下載地址:https://jmeter.apache.org/download_jmeter.cgi

下載Jmeter

下載完成后解壓zip包,找到bin目錄下 apache-jmeter-5.6.3\bin\jmeter.bat雙擊啟動(dòng)Jmeter

啟動(dòng)Jmeter
  • 注意:打開的時(shí)候會(huì)有兩個(gè)窗口伐割,Jmeter的命令窗口和Jmeter的圖形操作界面候味,不可以關(guān)閉命令窗口刃唤。
大致界面

3、基礎(chǔ)設(shè)置

Jmeter的語言切換

  • 臨時(shí)方法:依次點(diǎn)擊 OptionsChoose LanguageChinese(Simplified) 可切換為簡(jiǎn)體中文白群,僅針對(duì)本次尚胞,關(guān)閉Jmeter后下次啟動(dòng)會(huì)恢復(fù)默認(rèn)語言。
切換語言
  • 永久方法:打開Jmeter解壓后文件下的bin目錄帜慢,找到jmeter.properties文件并用編輯器打開笼裳,在#language=en下面插入一行language=zh_CN,修改后保存粱玲,重啟Jmeter界面默認(rèn)顯示為中文簡(jiǎn)體躬柬。
修改默認(rèn)語言

修改Jmeter默認(rèn)編碼為utf-8解決控制臺(tái)亂碼

  • 5.6.1版本開始Jmeter默認(rèn)utf-8無需額外設(shè)置
默認(rèn)編碼

5.6.1版本之前設(shè)置方法

  1. 打開Jmeter解壓后文件下的bin目錄,找到jmeter.properties文件并用編輯器打開
  2. #The encoding to be used if none is provided (default ISO-8859-1)抽减、> > #sampleresult.default.encoding=ISO-8859-1
  3. 下面插入一行The encoding to be used if none is provided (default utf-8)允青、sampleresult.default.encoding=utf-8
  4. 修改后保存重啟Jmeter
修改編碼

4、編寫項(xiàng)目測(cè)試腳本

4.1卵沉、添加線程組

  • 右鍵點(diǎn)擊 "測(cè)試計(jì)劃” → “添加” → “線程(用戶)” → “線程組”
新建線程組
  • 配置線程組參數(shù)
配置
線程組主要參數(shù)詳解:
  1. 線程數(shù):虛擬用戶數(shù)颠锉。一個(gè)虛擬用戶占用一個(gè)進(jìn)程或線程。模擬多少用戶訪問也就填寫多少個(gè)線程數(shù)量史汗。

  2. Ramp-Up時(shí)間(秒):設(shè)置的虛擬用戶數(shù)需要多長(zhǎng)時(shí)間全部啟動(dòng)琼掠。如果線程數(shù)為100,準(zhǔn)備時(shí)長(zhǎng)為5淹办,那么需要5秒鐘啟動(dòng)100個(gè)線程眉枕,也就是每秒鐘啟動(dòng)20個(gè)線程。 相當(dāng)于每秒模擬20個(gè)用戶進(jìn)行訪問怜森,設(shè)置為零我理解為并發(fā)訪問速挑。

  3. 循環(huán)次數(shù):如果線程數(shù)為100,循環(huán)次數(shù)為100副硅。那么總請(qǐng)求數(shù)為100*100=10000 姥宝。如果勾選了“永遠(yuǎn)”,那么所有線程會(huì)一直發(fā)送請(qǐng)求恐疲,直到選擇停止運(yùn)行腳本腊满。

4.2、添加測(cè)試接口

  • 右鍵點(diǎn)擊 “你的線程組” → “添加” → “取樣器” → “HTTP請(qǐng)求”
添加請(qǐng)求
  • 填寫接口請(qǐng)求參數(shù)培己,我這里對(duì)本地的 Spring-boot 服務(wù)進(jìn)行測(cè)試(本教程所用demo源碼在文章最后)碳蛋,可以參考下圖填寫:
填寫接口
Http請(qǐng)求主要參數(shù)詳解(做過接口測(cè)試的應(yīng)該上手很快):
  • 協(xié)議:向目標(biāo)服務(wù)器發(fā)送HTTP請(qǐng)求協(xié)議,可以是HTTPHTTPS省咨,默認(rèn)為HTTP肃弟。
  • 服務(wù)器名稱或IP :HTTP請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱或IP
  • 端口號(hào):目標(biāo)服務(wù)器的端口號(hào),默認(rèn)值為80
  • 方法:發(fā)送HTTP請(qǐng)求的方法笤受,可用方法包括GET穷缤、POSTHEAD箩兽、PUT津肛、OPTIONSTRACE汗贫、DELETE等身坐。
  • 路徑:目標(biāo)URL路徑(URL中去掉服務(wù)器地址、端口及參數(shù)后剩余部分)芳绩。
  • 內(nèi)容編碼:編碼方式掀亥,默認(rèn)為ISO-8859-1編碼,這里配置為utf-8妥色。
  • 參數(shù):同請(qǐng)求一起發(fā)送參數(shù) 搪花,在請(qǐng)求中發(fā)送的URL參數(shù),用戶可以將URL中所有參數(shù)設(shè)置在本表中嘹害,表中每行為一個(gè)參數(shù)(對(duì)應(yīng)URL中的 key=value)撮竿,注意參數(shù)傳入中文時(shí)需要勾選“編碼”。

4.3笔呀、添加察看結(jié)果樹

  • 右鍵點(diǎn)擊 “你的線程組” → “添加” → “監(jiān)聽器” → “察看結(jié)果樹”
添加結(jié)果
  • 這里幢踏,我們修改響應(yīng)數(shù)據(jù)格式(你返回什么格式就選什么,我這里是返回json)许师,運(yùn)行Http請(qǐng)求房蝉,可以看到本次請(qǐng)求返回的響應(yīng)數(shù)據(jù)。
查看結(jié)果

4.4微渠、添加用戶自定義變量

  • 添加用戶自定義變量用以Http請(qǐng)求參數(shù)化搭幻,右鍵點(diǎn)擊 “你的線程組” → “添加” → “配置元件” → “用戶定義的變量”:
自定義變量
  • 新增一個(gè)用戶名參數(shù)(與你實(shí)際請(qǐng)求參數(shù)key對(duì)應(yīng),做過接口測(cè)試的應(yīng)該特別明白)
添加變量
  • 在Http請(qǐng)求中使用該參數(shù)逞盆,格式為:${key} ,例如:
使用參數(shù)
  • 這里我有一個(gè)根據(jù)用戶名查詢用戶的方法檀蹋,所以改變參數(shù)后,再次運(yùn)行結(jié)果為zero用戶數(shù)據(jù)
再次查看結(jié)果樹

4.5云芦、json斷言(因?yàn)槲疫@里返回是json,其他需求更據(jù)實(shí)際情況選擇)

  • 添加斷言:右鍵點(diǎn)擊 “你的HTTP請(qǐng)求” → “添加” → “斷言” → “json斷言”
image.png
  • 配置json斷言具體內(nèi)容
斷言內(nèi)容
  • 斷言結(jié)果:右鍵點(diǎn)擊 “你的HTTP請(qǐng)求” → “添加” → “監(jiān)聽器” → “斷言結(jié)果”
斷言結(jié)果
斷言成功

為了演示失敗俯逾,我將斷言內(nèi)容進(jìn)行修改為zer


斷言失敗

4.6、添加聚合報(bào)告

  • 右鍵點(diǎn)擊 “你的線程組” → “添加” → “監(jiān)聽器” → “聚合報(bào)告”舅逸,用以存放性能測(cè)試報(bào)告
添加報(bào)告

到此我們已經(jīng)完成了一個(gè)最基礎(chǔ)的接口測(cè)試腳本

5桌肴、性能測(cè)試

  • 為了測(cè)試出效果,我這里模擬100個(gè)用戶并發(fā)訪問獲取數(shù)據(jù)琉历,循環(huán)6次坠七,線程組數(shù)據(jù)修改如下:
修改線程組
  • 回到聚合報(bào)告運(yùn)行本次壓力測(cè)試
壓力測(cè)試
  • 分析測(cè)試報(bào)告(先得讓本次壓力測(cè)試運(yùn)行完畢)
測(cè)試數(shù)據(jù)
聚合報(bào)告參數(shù)詳解:
  1. Label:每個(gè) JMeterelement(例如我這里只有一個(gè) Spring WebFlux)都有一個(gè) Name 屬性,這里顯示的就是 Name 屬性的值。

  2. 樣本(Samples):請(qǐng)求數(shù)——表示這次測(cè)試中一共發(fā)出了多少個(gè)請(qǐng)求灼捂,我這里模擬了100個(gè)用戶循環(huán)6次也就為100*6=600

  3. 平均值(Average):平均響應(yīng)時(shí)間(單位:ms)换团。默認(rèn)是單個(gè)Request的平均響應(yīng)時(shí)間悉稠,當(dāng)使用了Transaction Controller時(shí),也可以是Transaction為單位顯示平均響應(yīng)時(shí)間艘包。

  4. 中位數(shù)(Median):也就是 50% 用戶的響應(yīng)時(shí)間的猛。

  5. 90% 百分位(Line):90% 用戶的響應(yīng)時(shí)間。相鄰幾個(gè)*%同意想虎。

  6. 最小值(Min):最小響應(yīng)時(shí)間卦尊。

  7. 最大值(Max):最大響應(yīng)時(shí)間。

  8. 異常(Error) %:錯(cuò)誤率——錯(cuò)誤請(qǐng)求數(shù)/請(qǐng)求總數(shù)舌厨。

  9. 吞吐量(Throughput):吞吐量——默認(rèn)情況下表示每秒完成的請(qǐng)求數(shù)(Request per Second)岂却,當(dāng)使用了 Transaction Controller 時(shí),也可以表示類似 LoadRunnerTransaction per Second 數(shù) 裙椭。

  10. 接收 KB/Sec:每秒從服務(wù)器端接收到的數(shù)據(jù)量躏哩,相當(dāng)于LoadRunner中的Throughput/Sec

  11. 發(fā)送 KB/Sec:每秒向服務(wù)器發(fā)送的數(shù)據(jù)量揉燃,相當(dāng)于LoadRunner中的Throughput/Sec扫尺。

后記

  • 本次教程演示所用為 Spring WebFlux demo ,源碼直鏈:webflux-demo

一般而言炊汤,性能測(cè)試中我們需要重點(diǎn)關(guān)注的數(shù)據(jù)有: \color{green}{Samples} 請(qǐng)求數(shù)正驻,\color{#99CCFF}{Average} 平均響應(yīng)時(shí)間,\color{blue}{Min} 最小響應(yīng)時(shí)間抢腐,\color{#9966CC}{Max} 最大響應(yīng)時(shí)間姑曙,\color{red}{Error}% 錯(cuò)誤率及\color{#FF9900}{Throughput} 吞吐量。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末氓栈,一起剝皮案震驚了整個(gè)濱河市渣磷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌授瘦,老刑警劉巖醋界,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異提完,居然都是意外死亡形纺,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門徒欣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逐样,“玉大人,你說我怎么就攤上這事≈拢” “怎么了挪捕?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)争便。 經(jīng)常有香客問我级零,道長(zhǎng),這世上最難降的妖魔是什么滞乙? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任奏纪,我火速辦了婚禮,結(jié)果婚禮上斩启,老公的妹妹穿的比我還像新娘序调。我一直安慰自己,他們只是感情好兔簇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布发绢。 她就那樣靜靜地躺著,像睡著了一般垄琐。 火紅的嫁衣襯著肌膚如雪朴摊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天此虑,我揣著相機(jī)與錄音甚纲,去河邊找鬼。 笑死朦前,一個(gè)胖子當(dāng)著我的面吹牛介杆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播韭寸,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼春哨,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了恩伺?” 一聲冷哼從身側(cè)響起赴背,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晶渠,沒想到半個(gè)月后凰荚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡褒脯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年便瑟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片番川。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡到涂,死狀恐怖脊框,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情践啄,我是刑警寧澤浇雹,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站屿讽,受9級(jí)特大地震影響箫爷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜聂儒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望硫痰。 院中可真熱鬧衩婚,春花似錦、人聲如沸效斑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缓屠。三九已至奇昙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間敌完,已是汗流浹背储耐。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滨溉,地道東北人什湘。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像晦攒,于是被迫代替她去往敵國和親闽撤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容