性能測(cè)試——jmeter教程

一.下載及安裝教程


1. http://jmeter.apache.org/download_jmeter.cgi?下載


2.解壓這個(gè)jmeter包


3.cd到這個(gè)解壓包的bin目錄


4.sh jmeter 打開(kāi)jmeter


二.第一個(gè)jmeter測(cè)試

1.添加線(xiàn)程組

??????? 在測(cè)試計(jì)劃右鍵彈出下拉菜單(添加-->Threads(Users)--->線(xiàn)程組)中選擇線(xiàn)程組即可省有。


??????? 線(xiàn)程組主要包含三個(gè)參數(shù):線(xiàn)程數(shù)骗爆、準(zhǔn)備時(shí)長(zhǎng)(Ramp-Up?Period(in?seconds))、循環(huán)次數(shù)枉昏。

(1)線(xiàn)程數(shù):虛擬用戶(hù)數(shù)干花。一個(gè)虛擬用戶(hù)占用一個(gè)進(jìn)程或線(xiàn)程妄帘。設(shè)置多少虛擬用戶(hù)數(shù)在這里也就是設(shè)置多少個(gè)線(xiàn)程數(shù)。

(2)準(zhǔn)備時(shí)長(zhǎng):?設(shè)置的虛擬用戶(hù)數(shù)需要多長(zhǎng)時(shí)間全部啟動(dòng)池凄。如果線(xiàn)程數(shù)為20?抡驼,準(zhǔn)備時(shí)長(zhǎng)為10?,那么需要10秒鐘啟動(dòng)20個(gè)線(xiàn)程肿仑。也就是每秒鐘啟動(dòng)2個(gè)線(xiàn)程致盟。

(3)循環(huán)次數(shù):每個(gè)線(xiàn)程發(fā)送請(qǐng)求的次數(shù)。如果線(xiàn)程數(shù)為20?尤慰,循環(huán)次數(shù)為100?馏锡,那么每個(gè)線(xiàn)程發(fā)送100次請(qǐng)求「钤瘢總請(qǐng)求數(shù)為20*100=2000?眷篇。如果勾選了“永遠(yuǎn)”,那么所有線(xiàn)程會(huì)一直發(fā)送請(qǐng)求荔泳,一到選擇停止運(yùn)行腳本蕉饼。

??????? 設(shè)置合理的線(xiàn)程數(shù)對(duì)于能否達(dá)到測(cè)試目標(biāo)有決定性的影響虐杯。在本例中,要求得到網(wǎng)站首頁(yè)在20?QPS?負(fù)載情況下的響應(yīng)時(shí)間昧港,如果如果線(xiàn)程數(shù)量設(shè)置的過(guò)小擎椰,則很可能無(wú)法達(dá)到設(shè)定的QPS要求。另外创肥,設(shè)置合理的循環(huán)次數(shù)也很重要达舒,除了上面介紹的固定循環(huán)次數(shù)與永遠(yuǎn)外;也可以靈活的選擇設(shè)定測(cè)試運(yùn)行時(shí)間叹侄。勾選“調(diào)度器”巩搏,進(jìn)行調(diào)度器配置。


2.添加http請(qǐng)求

??????? 線(xiàn)程組上右鍵菜單(添加--->Sampler--->HTTP請(qǐng)求)選擇HTTP請(qǐng)求趾代。


配置參數(shù):

(1)名稱(chēng):本屬性用于標(biāo)識(shí)一個(gè)取樣器贯底,建議使用一個(gè)有意義的名稱(chēng)。

(2)注釋?zhuān)簩?duì)于測(cè)試沒(méi)有任何作用撒强,僅用戶(hù)記錄用戶(hù)可讀的注釋信息禽捆。

(3)服務(wù)器名稱(chēng)或IP?:HTTP請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱(chēng)或IP地址。比如:mini-dev-finance.haimaiche.net

端口號(hào):目標(biāo)服務(wù)器的端口號(hào)飘哨,默認(rèn)值為80?胚想。

(4)協(xié)議:向目標(biāo)服務(wù)器發(fā)送HTTP請(qǐng)求時(shí)的協(xié)議,可以是http或者是https?芽隆,默認(rèn)值為http?浊服。

(5)方法:發(fā)送HTTP請(qǐng)求的方法,可用方法包括GET摆马、POST臼闻、HEAD、PUT囤采、OPTIONS述呐、TRACE、DELETE等蕉毯。

Content?encoding?:內(nèi)容的編碼方式乓搬,默認(rèn)值為iso8859

(6)路徑:目標(biāo)URL路徑(不包括服務(wù)器地址和端口)。比如:/v2/appHomePage/appShow.json

自動(dòng)重定向:如果選中該選項(xiàng)代虾,當(dāng)發(fā)送HTTP請(qǐng)求后得到的響應(yīng)是302/301時(shí)进肯,JMeter?自動(dòng)重定向到新的頁(yè)面。

(7)Use?keep?Alive?:?當(dāng)該選項(xiàng)被選中時(shí)棉磨,jmeter?和目標(biāo)服務(wù)器之間使用?Keep-Alive方式進(jìn)行HTTP通信江掩,默認(rèn)選中。

(8)Use?multipart/from-data?for?HTTP?POST?:當(dāng)發(fā)送HTTP?POST?請(qǐng)求時(shí),使用Use?multipart/from-data方法發(fā)送环形,默認(rèn)不選中策泣。

(9)同請(qǐng)求一起發(fā)送參數(shù)?:?在請(qǐng)求中發(fā)送URL參數(shù),對(duì)于帶參數(shù)的URL?抬吟,jmeter提供了一個(gè)簡(jiǎn)單的對(duì)參數(shù)化的方法萨咕。用戶(hù)可以將URL中所有參數(shù)設(shè)置在本表中,表中的每一行是一個(gè)參數(shù)值對(duì)(對(duì)應(yīng)RUL中的?名稱(chēng)1=值1)火本。

(10)同請(qǐng)求一起發(fā)送文件:在請(qǐng)求中發(fā)送文件危队,通常,HTTP文件上傳行為可以通過(guò)這種方式模擬钙畔。

(11)從HTML文件獲取所有有內(nèi)含的資源:當(dāng)該選項(xiàng)被選中時(shí)茫陆,jmeter在發(fā)出HTTP請(qǐng)求并獲得響應(yīng)的HTML文件內(nèi)容后,還對(duì)該HTML進(jìn)行Parse?并獲取HTML中包含的所有資源(圖片刃鳄、flash等)盅弛,默認(rèn)不選中,如果用戶(hù)只希望獲取頁(yè)面中的特定資源叔锐,可以在下方的Embedded?URLs?must?match?文本框中填入需要下載的特定資源表達(dá)式,這樣见秽,只有能匹配指定正則表達(dá)式的URL指向資源會(huì)被下載愉烙。

(12)用作監(jiān)視器:此取樣器被當(dāng)成監(jiān)視器,在Monitor?Results?Listener?中可以直接看到基于該取樣器的圖形化統(tǒng)計(jì)信息解取。默認(rèn)為不選中步责。

(13)Save?response?as?MD5?hash??:選中該項(xiàng),在執(zhí)行時(shí)僅記錄服務(wù)端響應(yīng)數(shù)據(jù)的MD5值禀苦,而不記錄完整的響應(yīng)數(shù)據(jù)蔓肯。在需要進(jìn)行數(shù)據(jù)量非常大的測(cè)試時(shí),建議選中該項(xiàng)以減少取樣器記錄響應(yīng)數(shù)據(jù)的開(kāi)銷(xiāo)振乏。

3.設(shè)置QPS限制

在http請(qǐng)求上添加(添加--->定時(shí)器--->Constant?Throughput?Timer)

屬性參數(shù):

(1)Target?throughput(in?samples?per?minute):目標(biāo)吞吐量蔗包。注意這里是每分鐘發(fā)送的請(qǐng)求數(shù),因此慧邮,對(duì)應(yīng)測(cè)試需求中所要求的20?QPS?调限,這里的值應(yīng)該是1200?。

(2)Calculate?Throughput?based?on?:有5個(gè)選項(xiàng)



4.添加監(jiān)聽(tīng)器

??????? 右鍵點(diǎn)擊線(xiàn)程組误澳,在彈的菜單(添加--->監(jiān)聽(tīng)器--->聚合報(bào)告)中選擇聚合報(bào)告耻矮。

?????? 也可以生成其他監(jiān)聽(tīng)器

監(jiān)控結(jié)果需要關(guān)注的有:成功率、響應(yīng)時(shí)間忆谓、標(biāo)準(zhǔn)差裆装、CPU、mem內(nèi)存、io等


5.聚合報(bào)告分析



6.響應(yīng)結(jié)果出現(xiàn)亂碼

當(dāng)響應(yīng)內(nèi)容沒(méi)有設(shè)定編碼時(shí)哨免,jmeter會(huì)按照jmeter.properties文件中設(shè)定的編碼進(jìn)行解碼茎活。默認(rèn)的編碼為ISO-8859-1,所以在解析中文時(shí)出錯(cuò)铁瞒。

解決辦法:

添加后置處理器--BeanShellPostProcessor

設(shè)置編碼為UTF-8


7.jemter自帶后置處理器妙色,正則表達(dá)式提取,可用來(lái)提取接口響應(yīng)的信息慧耍,給后續(xù)接口傳參使用


假設(shè)我們要取登錄接口的sessionId字段


先添加后置處理器--正則表達(dá)式


(1)名稱(chēng):取一個(gè)有意義的名稱(chēng)

(2)Apply to:應(yīng)用范圍(一般就選擇默認(rèn)的Main sample

only)身辨,就算有重定向,一般也是提取最終那個(gè)請(qǐng)求的接口芍碧。

(3)要檢查的響應(yīng)字段:

主體:

接口響應(yīng)主體內(nèi)容煌珊,一般要提取普通http響應(yīng)結(jié)果的數(shù)據(jù),都勾選這個(gè)泌豆。

信息頭:響應(yīng)頭的所有內(nèi)容定庵。

Request

Headers:請(qǐng)求頭的所有內(nèi)容。

url:是對(duì)sample的url進(jìn)行匹配踪危,也就是查看結(jié)果樹(shù)里請(qǐng)求內(nèi)容的第一行url蔬浙,不包含data里的請(qǐng)求參數(shù)(即只能匹配protocol(協(xié)議)+host+path+querystring,如:https://www.baidu.com/index.php?tn=monline_3_dg)贞远。

響應(yīng)代碼:http響應(yīng)代碼畴博,如101,200,302,404,501等。

響應(yīng)信息:http響應(yīng)代碼對(duì)應(yīng)的響應(yīng)信息蓝仲,例如:OK,

Found(HTTP/1.1 200 Ok俱病;HTTP/1.1 302 Found)。

(4)引用名稱(chēng):其他地方引用時(shí)的變量名稱(chēng)比如sessionId袱结,名稱(chēng)只能是一個(gè)亮隙,引用方法:${sessionId}


(5)

正則表達(dá)式:

數(shù)據(jù)提取器,一般簡(jiǎn)單的通用語(yǔ)法就是:左邊界(.*?)右邊界垢夹,(.*?)

是替換了想要提取的內(nèi)容溢吻,里面的'?'為非貪婪匹配,(非貪婪模式就是說(shuō)在遇到第一個(gè)右邊界后就停止匹配棚饵,這樣就可以精確拿到想要的內(nèi)容)煤裙。建議均使用非貪婪匹配,除非特殊情況噪漾。"sessionId":"(.*?)","settedTradePwd":(.*?),"type":(.*?), 注意 (.*?)要不要加""取決于返回的這個(gè)字段的值有沒(méi)有""


模板:

對(duì)應(yīng)正則表達(dá)式提取器類(lèi)型硼砰,樣式為:$n$。若模板為:$0$欣硼,則為整個(gè)表達(dá)式匹配到的內(nèi)容题翰,就是包括小括號(hào)內(nèi)跟小括號(hào)外的內(nèi)容,即("sessionId":"d116c405a75e406db7e74eaee5e02d8d","settedTradePwd":0,"type":1,"userId":30289)。若模板為:$1$豹障,則對(duì)應(yīng)正則表達(dá)式中的第一個(gè)(.*?)所匹配的內(nèi)容冯事,即(d116c405a75e406db7e74eaee5e02d8d),若模板為:$2$血公,則對(duì)應(yīng)正則表達(dá)式中的第二個(gè)(.*?)所匹配的內(nèi)容昵仅,即(0),若模板為$1$$2$累魔,則把2個(gè)(.*?)所匹配的內(nèi)容拼接起來(lái)摔笤,即(d116c405a75e406db7e74eaee5e02d8d0)。

匹配數(shù)字:

正則表達(dá)式匹配數(shù)據(jù)的最終結(jié)果可以看做一個(gè)數(shù)組垦写,匹配數(shù)字即可看做是數(shù)組的第幾個(gè)元素吕世。當(dāng)為?0?時(shí),隨機(jī)返回匹配的數(shù)據(jù)梯投。當(dāng)為?1?時(shí)命辖,表示返回匹配結(jié)果數(shù)組的第一個(gè)元素。當(dāng)為負(fù)數(shù)(-1分蓖,-2饼疙,-100都可以)時(shí)悦陋,表示返回全部元素锡足,并且同時(shí)會(huì)返回一個(gè)元素總數(shù)的變量篮昧,在引用時(shí):通過(guò)${sessionId_g1}的方式來(lái)取第1個(gè)匹配的內(nèi)容,${sessionId_g2}來(lái)取第2個(gè)匹配的內(nèi)容午磁。


缺省值:

匹配失敗時(shí)的默認(rèn)值。通常用于后續(xù)的邏輯判斷毡们,建議使用一些特殊含義的迅皇,比如0,NULL衙熔,ERROR等登颓。


正則測(cè)試,添加后置處理器Debug PostProcessor,


正則結(jié)果查看红氯,添加查看結(jié)果樹(shù)框咙,在Debug

PostProcessor查看變量值,以下就是返回的變量值


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末痢甘,一起剝皮案震驚了整個(gè)濱河市喇嘱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌塞栅,老刑警劉巖者铜,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡作烟,警方通過(guò)查閱死者的電腦和手機(jī)愉粤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拿撩,“玉大人衣厘,你說(shuō)我怎么就攤上這事⊙购悖” “怎么了影暴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)涎显。 經(jīng)常有香客問(wèn)我坤检,道長(zhǎng),這世上最難降的妖魔是什么期吓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任早歇,我火速辦了婚禮,結(jié)果婚禮上讨勤,老公的妹妹穿的比我還像新娘箭跳。我一直安慰自己,他們只是感情好潭千,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布谱姓。 她就那樣靜靜地躺著,像睡著了一般刨晴。 火紅的嫁衣襯著肌膚如雪屉来。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
  • 那天狈癞,我揣著相機(jī)與錄音茄靠,去河邊找鬼。 笑死蝶桶,一個(gè)胖子當(dāng)著我的面吹牛慨绳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播真竖,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼脐雪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了恢共?” 一聲冷哼從身側(cè)響起战秋,我...
    開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎旁振,沒(méi)想到半個(gè)月后获询,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體涨岁,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年吉嚣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了梢薪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尝哆,死狀恐怖秉撇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情秋泄,我是刑警寧澤琐馆,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站恒序,受9級(jí)特大地震影響瘦麸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜歧胁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一滋饲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喊巍,春花似錦屠缭、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至何暮,卻和暖如春奄喂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背海洼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工砍聊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贰军。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蟹肘,于是被迫代替她去往敵國(guó)和親词疼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

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

  • 上一節(jié)中帘腹,我們了解了jmeter的一此主要元件贰盗,那么這些元件如何使用到性能測(cè)試中呢。這一節(jié)創(chuàng)建一個(gè)簡(jiǎn)單的測(cè)試計(jì)劃來(lái)...
    邵瓊閱讀 807評(píng)論 0 0
  • JMeter介紹: 一個(gè)非常優(yōu)秀的開(kāi)源的性能測(cè)試工具阳欲。 從性能工具的原理劃分: Jmeter工具和其他性能工具在原...
    邵瓊閱讀 441評(píng)論 0 0
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理舵盈,服務(wù)發(fā)現(xiàn)陋率,斷路器,智...
    卡卡羅2017閱讀 134,714評(píng)論 18 139
  • 主要文體來(lái)自 CDNS:https://www.cnblogs.com/ceshisanren/p/5639895...
    Amano閱讀 11,009評(píng)論 3 27
  • 昨天2月3號(hào)秽晚,是我很喜歡的一個(gè)日子瓦糟,因?yàn)?,3和23都是質(zhì)數(shù)赴蝇,并且昨天還是周六菩浙,對(duì)我來(lái)說(shuō),是完美的一天了句伶。 ...
    Imp3閱讀 208評(píng)論 0 0