Jmeter入門使用.doc_第1頁(yè)
Jmeter入門使用.doc_第2頁(yè)
Jmeter入門使用.doc_第3頁(yè)
Jmeter入門使用.doc_第4頁(yè)
Jmeter入門使用.doc_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

JMeter的簡(jiǎn)單使用1. JMeter簡(jiǎn)介Apache JMeter是Apache組織開(kāi)發(fā)的基于Java的壓力測(cè)試工具。用于對(duì)軟件做壓力測(cè)試,它最初被設(shè)計(jì)用于Web應(yīng)用測(cè)試,但后來(lái)擴(kuò)展到其他測(cè)試領(lǐng)域。 它可以用于測(cè)試靜態(tài)和動(dòng)態(tài)資源,例如靜態(tài)文件、Java小服務(wù)程序、CGI 腳本、Java 對(duì)象、數(shù)據(jù)庫(kù)、FTP 服務(wù)器, 等等。JMeter 可以用于對(duì)服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,來(lái)自不同壓力類別下測(cè)試它們的強(qiáng)度和分析整體性能。另外,JMeter能夠?qū)?yīng)用程序做功能/回歸測(cè)試,通過(guò)創(chuàng)建帶有斷言的腳本來(lái)驗(yàn)證你的程序返回了你期望的結(jié)果。為了最大限度的靈活性,JMeter允許使用正則表達(dá)式創(chuàng)建斷言。2. 安裝與配置2.1. 工具/原料l JDK 1.7l Apache JMeter 3.02.2. 環(huán)境JMeter可以在Windows/Linux/Mac平臺(tái)上運(yùn)行,這里介紹在Windows上的安裝配置。2.3. 安裝步驟l 安裝JDK,網(wǎng)上下載一個(gè)JDK,配置好環(huán)境變量即可使用。在dos界面輸入java -version,能顯示版本號(hào),則證明JDK安裝OK,可以使用。l 安裝Jmeter:Jmeter不需要安裝,解壓之后即可使用;雙擊Jmeter的bin目錄下的jmeter.bat,出現(xiàn)下面界面,則Jmeter啟動(dòng)成功,Jmeter就緒。3. HTTP接口測(cè)試3.1. 測(cè)試實(shí)例以一個(gè)簡(jiǎn)單的接口為例:/get?key2=value2&key1=value1在瀏覽器中打開(kāi)的效果如下:在這里,成功的用瀏覽器訪問(wèn)了這個(gè)接口,并得到了成功的返回報(bào)文。下面我們用Jmeter來(lái)訪問(wèn)這個(gè)接口。3.2. 使用Jmeter進(jìn)程HTTP測(cè)試3.2.1. 添加線程組l 右鍵“測(cè)試計(jì)劃”-“添加”-“Threads(Users)”-“線程組”3.2.2. 添加“HTTP請(qǐng)求”l 右鍵“線程組”-“添加”-“Sampler”-“HTTP請(qǐng)求”l 打開(kāi)之后,填入訪問(wèn)該接口所需要的參數(shù),效果如下圖Tips:1. 服務(wù)器名或IP:這里填寫服務(wù)IP地址(不帶端口),有域名的直接填寫域名2. 端口號(hào):這里填寫端口號(hào),有域名的這里為空就好。3. Timeouts(milliseconds):超時(shí)時(shí)間,單位是毫秒;Connect:連接超時(shí);Response:響應(yīng)超時(shí)。二者都可以不填4. Implementa:采用什么實(shí)例來(lái)運(yùn)行這次HTTP請(qǐng)求(HttpClient4/HttpClient3.1/Java),這里我們不用選擇,直接默認(rèn)就好。協(xié)議:該接口采用什么協(xié)議(http/https),這里不填默認(rèn)是http,根據(jù)情況填寫方法:請(qǐng)求該接口的方法(GET/POST等),根據(jù)接口請(qǐng)求類型選擇。Content encoding:這里是返回報(bào)文的編碼格式(如utf-8),采用默認(rèn)值就好5. 同請(qǐng)求一起發(fā)送參數(shù):接口的參數(shù),可以通過(guò)下方“添加”按鈕,添加參數(shù),左邊為“key”,右邊填“value”,如上圖。(這里只適用于傳參數(shù)的接口,傳Json和文件等接口使用這種方式不支持,暫不做介紹)3.2.3. 添加監(jiān)聽(tīng)器完成上述3.2.1和3.2.2步,一個(gè)接口的簡(jiǎn)單腳本已經(jīng)編寫完成了;但是此時(shí)我們還不知道在哪里查看腳本運(yùn)行的結(jié)果,這里我們需要添加一個(gè)監(jiān)聽(tīng)器。l 右鍵“線程組”-“添加”-“監(jiān)聽(tīng)器”,選擇“察看結(jié)果樹(shù)”Tips:Jmeter提供了需要監(jiān)聽(tīng)器,有興趣的可以去一一添加,察看效果。3.2.4. 運(yùn)行腳本l 點(diǎn)擊按鈕,運(yùn)行腳本,察看結(jié)果在“響應(yīng)數(shù)據(jù)”下,我們看到了與使用瀏覽器一樣的返回結(jié)果(報(bào)文中headers有差異,這部分可以忽略,想知道為什么不一樣的可以去學(xué)學(xué)http協(xié)議,在這里不影響結(jié)果)。到這里,一個(gè)http接口測(cè)試的Jmeter腳本已經(jīng)完成。“Ctrl+S”保存一下吧,下次就可以直接拿來(lái)使用了(Jmeter腳本默認(rèn)保存在bin目錄下)3.3. 壓力測(cè)試在上面腳本配置上線程數(shù),即可對(duì)該接口進(jìn)行壓力測(cè)試?yán)?。l 點(diǎn)擊“線程組”1. 線程數(shù):需要采用多少個(gè)并發(fā)。2. Ramp-Up Period(in seconds):設(shè)置到達(dá)最大并發(fā)所需時(shí)間(如上圖,從0增加到5個(gè)并發(fā),花費(fèi)1秒鐘)3. 循環(huán)次數(shù):每個(gè)并發(fā)執(zhí)行幾遍腳本(如上圖,每個(gè)線程執(zhí)行100遍)。勾選永遠(yuǎn),則腳本會(huì)被無(wú)限循環(huán)執(zhí)行下去。4. 調(diào)度器:勾選則啟用調(diào)度器持續(xù)時(shí)間(秒):設(shè)置腳本跑多久(如需要讓腳本跑一分鐘,則填入60)啟動(dòng)延遲(秒):延遲多少秒才開(kāi)始執(zhí)行腳本l 添加“聚合報(bào)告”聚合報(bào)告是一個(gè)監(jiān)聽(tīng)器,作用是,為本次壓力測(cè)試整理出一份“報(bào)表”l 點(diǎn)擊按鈕讓我們來(lái)看看5并發(fā)循環(huán)100次的結(jié)果l 點(diǎn)擊按鈕,清除上次測(cè)試結(jié)果,然后來(lái)看看10并發(fā)循環(huán)100次結(jié)果可以看到5并發(fā)時(shí),Throughput為13.0/sec;10并發(fā)時(shí):Throughput為22.6/sec。理論上,并發(fā)數(shù)與吞吐量成正比,并發(fā)越多,吞吐量越大。實(shí)際上,服務(wù)器的處理能力和網(wǎng)絡(luò)帶寬是有限的,當(dāng)并發(fā)數(shù)達(dá)到一定數(shù)量之后,吞吐量不隨并發(fā)數(shù)增加而增長(zhǎng),出現(xiàn)響應(yīng)時(shí)間變長(zhǎng),甚至服務(wù)器宕機(jī)等狀況,稱之為服務(wù)器的性能“瓶頸”。簡(jiǎn)單來(lái)說(shuō),性能測(cè)試就是根據(jù)服務(wù)器的“瓶頸”,來(lái)評(píng)估服務(wù)的性能是否能夠達(dá)到期望。附:表頭說(shuō)明Label -如圖,在不勾選Include group name in label?復(fù)選框的情況下,為請(qǐng)求取樣器的名稱,否則為“請(qǐng)求取樣器所在線程組:請(qǐng)求取樣器名稱”# Samples -用同一個(gè)請(qǐng)求取樣器,發(fā)送請(qǐng)求的數(shù)量(注意:該值是不斷累計(jì)的)。比如,10個(gè)線程數(shù)設(shè)置為10,迭代10次,那么每運(yùn)行一次測(cè)試,該值就增加10*10=100Average -默認(rèn)情況下是單個(gè)Request的平均響應(yīng)時(shí)間,當(dāng)使用了Transaction Controller時(shí),也可以以Transaction為單位顯示平均響應(yīng)時(shí)間Median -中位數(shù)。表示響應(yīng)時(shí)間本不大于該時(shí)間值的請(qǐng)求樣本數(shù)占總數(shù)的50%90% Line -表示響應(yīng)時(shí)間不大于該時(shí)間值的請(qǐng)求樣本數(shù)占總數(shù)的90%Min -針對(duì)同一請(qǐng)求取樣器,請(qǐng)求樣本的最小響應(yīng)時(shí)間Max -針對(duì)同一請(qǐng)求取樣器,請(qǐng)求樣本的最大響應(yīng)時(shí)間Error % -出現(xiàn)錯(cuò)誤的請(qǐng)求樣本的百分比Throughput -吞吐量以“requests/second、requests /minute、requests /hour”來(lái)衡量。時(shí)間單位已經(jīng)被選取為second,所以,顯示速率至少是1.0,即每秒1個(gè)請(qǐng)求。當(dāng)吞吐量被保存到CVS文件時(shí),采用的是requests/second,所以30.0 requests/second在CVS中被保存為0.5Kb/sec -以Kilobytes/seond來(lái)衡量的吞吐量3.4. 附上演示腳本上面演示步驟最后保存的腳本,可以直接用Jmeter打開(kāi),運(yùn)行。4. 錄制HTTP腳本當(dāng)需要為多個(gè)接口做腳本時(shí),手動(dòng)編制就顯得太麻煩,這時(shí)候我們可以使用Jmeter自帶的腳本錄制功能。錄制原理是Jmeter啟用一個(gè)代理服務(wù)器,然后配置瀏覽器代理,Jmeter就可以對(duì)瀏覽器進(jìn)行抓包,然后生成腳本。4.1. Jmeter配置代理服務(wù)器并錄制腳本4.1.1. 添加線程組l 右鍵“測(cè)試計(jì)劃”-“添加”-“Threads(Users)”-“線程組”4.1.2. 添加錄制控制器l 右鍵“線程組”-“添加”-“邏輯控制器”-“錄制控制器”4.1.3. 添加代理服務(wù)器l 右鍵“工作臺(tái)”-“添加”-“非測(cè)試元件”-“Http代理服務(wù)器”l 配置代理服務(wù)器1. 端口:用默認(rèn)的8888就好,如果沖突,可以換一個(gè)不沖突的端口號(hào)。2. HTTPS Domains:默認(rèn)本機(jī)localhost 3. 目標(biāo)控制器:選擇 測(cè)試計(jì)劃線程組錄制控制器4. 分組:選擇 每個(gè)組放入一個(gè)新的控制器然后點(diǎn)擊“啟動(dòng)”,彈出的提示框點(diǎn)擊“確定”,代理就啟動(dòng)成功了。l 添加“察看結(jié)果樹(shù)”右鍵“HTTP代理服務(wù)器”-“添加”-“監(jiān)聽(tīng)器”-“察看結(jié)果樹(shù)”4.1.4. 設(shè)置瀏覽器代理Jmeter代理服務(wù)器啟動(dòng)之后,再設(shè)置瀏覽器代理,就可以抓包了。不同瀏覽器的代理設(shè)置方式不一樣。一般來(lái)說(shuō),瀏覽器都是在設(shè)置系統(tǒng)代理,一個(gè)瀏覽器設(shè)置了代理,其它瀏覽器也會(huì)用這個(gè)代理。下面介紹三種常用瀏覽器代理的設(shè)置方法。. IE瀏覽器1. 點(diǎn)擊“工具”-“Internet選項(xiàng)”2. 在新打開(kāi)的窗口中選擇“連接”,點(diǎn)擊“局域網(wǎng)設(shè)置(L)”3. 在彈出窗口,選中“為L(zhǎng)AN使用代理服務(wù)器(這些設(shè)置不用于撥號(hào)或VPN練級(jí))(X)”,然后在“地址(E)”填入localhost,“端口(T)”填入剛設(shè)置的代理端口號(hào)8888。然后點(diǎn)擊“確定”完成配置。. Google Chrome(谷歌瀏覽器)1. 點(diǎn)擊右上角,展開(kāi)菜單,點(diǎn)擊“設(shè)置”2. 點(diǎn)擊最下方“顯示高級(jí)設(shè)置.”,找到“更改代理服務(wù)器設(shè)置.”,點(diǎn)擊3. 彈出新窗口后,剩下的操作照著IE瀏覽器設(shè)置代理的2、3就可以了. Firefox(火狐瀏覽器)1. 點(diǎn)擊右上角,展開(kāi)菜單,點(diǎn)擊“選項(xiàng)”2. 選擇“高級(jí)”-“網(wǎng)絡(luò)”,點(diǎn)擊“設(shè)置(E).”3. 在新窗口配置代理:選擇“手動(dòng)配置代理:(M)”,“HTTP代理:(M)”填入“l(fā)ocalhost”,“端口:(P)”填入“8888”,點(diǎn)擊“確定”,設(shè)置完成。Tip:這里設(shè)置的代理是設(shè)置的自己的,不會(huì)影響系統(tǒng)代理設(shè)置。4.1.5. 錄制腳本所有準(zhǔn)備工作都做完,可以開(kāi)始錄制腳本了,還用上面舉例的接口,這里嘗試錄制該接口的腳本。1. 在一個(gè)設(shè)置好代理的瀏覽器中打開(kāi)該接口,用Google Chrome演示一下2. 然后我們看看Jmeter,這里捕獲了這次請(qǐng)求的信息,并在“錄制控制器”下生成了一條Http請(qǐng)求,如下3. 將需要的Http請(qǐng)求拉倒“線程組”下,然后清空“錄制控制器”,然后就可以開(kāi)始下一個(gè)接口的錄制4. 錄制完成之后,在線程組下添加“察看結(jié)果樹(shù)”,“Ctr+S”保存腳本,運(yùn)行一下,看到兩條請(qǐng)求都成功了,一個(gè)腳本就錄制成功了!4.1.6. 一個(gè)未解決的問(wèn)題在錄制腳本時(shí),會(huì)發(fā)現(xiàn)很多無(wú)用的請(qǐng)求干擾,在這里Jmeter代理提供了一個(gè)過(guò)濾器,如接口是*.html的,使用“.*/*.html”過(guò)濾。這里配置了過(guò)濾,總不好用,要么什么也沒(méi)過(guò)濾掉,要么都過(guò)濾沒(méi)了,還有把需要的一部分也過(guò)濾沒(méi)了。鑒于此,錄制腳本時(shí),盡量少開(kāi)其它網(wǎng)頁(yè),減少干擾。如有哪位知道怎么設(shè)置這個(gè)過(guò)濾器,請(qǐng)告知,感激不盡。5. TCP測(cè)試就像簡(jiǎn)介上說(shuō)的,Jmeter不單可以做Web測(cè)試,也可以TCP測(cè)試。TCP腳本跟HTTP腳本做成十分類似,但是有些地方會(huì)不同,還是啰嗦介紹一下。5.1. 創(chuàng)建一個(gè)TCP測(cè)試樁先創(chuàng)建一個(gè)簡(jiǎn)單的TCP服務(wù)器,用來(lái)學(xué)習(xí)Jmeter的TCP測(cè)試,這個(gè)服務(wù)器只做一個(gè)事情,就是收到一個(gè)報(bào)文,然后給一個(gè)響應(yīng)。這是從網(wǎng)上找的一份簡(jiǎn)單的TCP服務(wù)器代碼,python語(yǔ)言寫的,直接運(yùn)行就好,端口是8888,IP則為運(yùn)行該腳本的機(jī)器的IP地址。l 問(wèn)題:怎么運(yùn)行這個(gè)服務(wù)器?答:有很多方法可以啟動(dòng),介紹一種簡(jiǎn)單的,找一個(gè)Linux服務(wù)器,上傳這個(gè)文件,然后執(zhí)行命令python threadServer.py就OK了。5.2. 創(chuàng)建TCP測(cè)試腳本和HTTP測(cè)試腳本類似5.2.1. 添加線程組l 右鍵“測(cè)試計(jì)劃”-“添加”-“Threads(Users)”-“線程組”5.2.2. 添加“TCP取樣器”l 右鍵“線程組”-“添加”-“Sampler”-“TCP取樣器”l 看下“TCP取樣器”的參數(shù)1. 這里填服務(wù)器IP2. 端口號(hào)3. 超時(shí)時(shí)間,左邊連接超時(shí),右邊響應(yīng)超時(shí),單位都是毫秒4. EOL,每個(gè)最后一個(gè)字符的byte值,這個(gè)是用來(lái)校驗(yàn)接收?qǐng)?bào)文是否結(jié)束5. 這里是需要發(fā)送的報(bào)文5.2.3. 添加監(jiān)聽(tīng)器l 右鍵“線程組”-“添加”-“監(jiān)聽(tīng)器”,選擇“察看結(jié)果樹(shù)”到這一步,一個(gè)TCP測(cè)試腳本就完成了,整體效果如下5.2.4. 運(yùn)行腳本l 點(diǎn)擊按鈕,運(yùn)行腳本,察看結(jié)果右邊框里的就是TCP服務(wù)器響應(yīng)報(bào)文,腳本這就跑通了服務(wù)器后臺(tái)響應(yīng)注:這里對(duì)EOL特殊說(shuō)明一下,第一次運(yùn)行腳本,不知道這個(gè)EOL填寫什么,可以先運(yùn)行腳本,然后手動(dòng)停止運(yùn)行腳本,如下然后見(jiàn)到如下結(jié)果腳本執(zhí)行失敗,但是我們?nèi)匀猾@得了響應(yīng)報(bào)文,將最后一個(gè)字符2轉(zhuǎn)換為byte值就是50,所以之前的EOL填入50。5.2.5. 發(fā)送16進(jìn)制字節(jié)流報(bào)文上面介紹的都是工具默認(rèn)的文本報(bào)文,Jmeter同樣支持發(fā)送16進(jìn)制報(bào)文,我們只需要修改一個(gè)參數(shù)值就好了。l 修改Jmeter參數(shù)右鍵“工作臺(tái)”-“非測(cè)試元件”-“Property Display”找到參數(shù)tcp.handler,如下修改其值為BinaryTCPClientImpl就OK了,如果發(fā)現(xiàn)這個(gè)參數(shù)沒(méi)有生效,按F5刷新一下。Tips:1. tcp.handler有三種設(shè)置:TCPClientImpl:文本數(shù)據(jù)BinaryTCPClientImpl:傳輸二進(jìn)制數(shù)據(jù),指定包結(jié)束符。LengthPrefixedBinaryTCPClientImpl:數(shù)據(jù)包中前2個(gè)字節(jié)為數(shù)據(jù)長(zhǎng)度。2. 上面介紹的修改參數(shù)是臨時(shí)的,重啟Jmeter之后就會(huì)還原,需要永久修改的可去修改bin目錄下的配置文件perties中的參數(shù)tcp.handler,重啟Jmeter生效。l 發(fā)送16進(jìn)制字節(jié)流報(bào)文,腳本需要做如下調(diào)整6. UDP測(cè)試Jmeter做UDP測(cè)試,需要下載插件支持,這里先不介紹Jmeter插件安裝,上面提供的Jmeter已配置好插件。6.1. 創(chuàng)建一個(gè)UDP測(cè)試樁這里用python做了一個(gè)簡(jiǎn)單的udp服務(wù)器,該服務(wù)器只會(huì)一件事情,就是將收到的報(bào)文內(nèi)容返還給你。運(yùn)行該服務(wù)器的方法同5.1一樣,找一個(gè)Linux服務(wù)器,上傳該python文件,執(zhí)行命令“python udpServer.py”,該服務(wù)器端口為54321,IP為L(zhǎng)inux服務(wù)器的IP地址。6.2. 創(chuàng)建UDP測(cè)試腳本6.2.1. 添加線程組l 右鍵“測(cè)試計(jì)劃”-“添加”-“Threads(Users)”-“線程組”6.2.2. 添加“jpgc - UDP Request”l 右鍵“線程組”-“添加”-“Sampler”-“jpgc - UDP Request”l 配置“jpgc - UDP Request”1. 服務(wù)器IP地址2. UDP服務(wù)器端口號(hào)3. 勾選等待返回報(bào)文,不勾選則只管發(fā)送報(bào)文,不接收4. 等待返回報(bào)文的超時(shí)時(shí)間5. 發(fā)送報(bào)文的編碼格式,這里可以手動(dòng)編輯 kg.apc.jmeter.samplers.HexStringUDPDecoder 直接發(fā)送16進(jìn)制數(shù)據(jù),HEX-encoded kg.apc.jmeter.samplers.UDPSample

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論