前段時(shí)間公司需要對(duì)服務(wù)器進(jìn)行壓力測(cè)試,包括登錄前的頁(yè)面和登錄后的頁(yè)面,主要目的是測(cè)試負(fù)載均衡的實(shí)現(xiàn)效果。不知道是不是因?yàn)镴meter不如loadRunner火爆還是什么,網(wǎng)上關(guān)于Jmeter的資料有很多但是大多千篇一律,要么簡(jiǎn)單弄個(gè)頁(yè)面測(cè)試一下,要么全篇都是介紹很多和Jmeter無(wú)關(guān)的第三方工具,看起來(lái)很專(zhuān)業(yè)高深,但是作為測(cè)試小白來(lái)說(shuō),看到這樣的東西確實(shí)頭疼。我只是想好好了解一下Jmeter的使用啊,能不能完整的介紹一下???我不需要了解那么多其他的第三方工具?。磕懿荒芙貍€(gè)圖說(shuō)的清楚一點(diǎn)?。窟@個(gè)步驟里的參數(shù)是干嘛的???對(duì)應(yīng)的什么???你的這一步我怎么出現(xiàn)問(wèn)題了???怎么不說(shuō)解決方法啊。。。這應(yīng)該是我前段時(shí)間查找Jmeter資料內(nèi)心最多的問(wèn)題了,真是嗶了狗了(我是一個(gè)優(yōu)雅的程序猿,很少講粗話啦~嘿嘿)。對(duì)于使用某種新的東西,我的習(xí)慣往往是先把流程完整的跑一遍,記住,是完整,清晰,好歹別人看了之后對(duì)應(yīng)著自己的需求也能照搬著實(shí)現(xiàn),吐槽了夠多了,開(kāi)始進(jìn)入正題,我把我遇到的坑都說(shuō)清楚,包括后來(lái)怎么從坑里爬出來(lái)的。。。
步驟一? 安裝Jmeter
我用的版本是3.1版本,為什么是3.1,因?yàn)?.2有問(wèn)題,我也是跑了一段時(shí)間后才知道3.2版本太新了還是什么的,有些功能就是不行,在此建議大家,不要輕易使用最新版本,次新版本就可以了。安裝好了之后Jmeter的bin目錄下有個(gè)Jmeter.bat文件,雙擊就能運(yùn)行了。
步驟二? 使用Jmeter測(cè)試未登錄頁(yè)面
??? 運(yùn)行軟件之后,我們當(dāng)然要找個(gè)鏈接測(cè)試一下啦,這里我們以百度為例,我們右擊“測(cè)試計(jì)劃”——“添加”——“Threads(Users)——線程組”,這樣就建了一個(gè)線程組了,這是干嘛,當(dāng)然是跑線程用的啊。有了線程組之后,我們?cè)儆覔艟€程組,“添加”——“配置元件”——“http請(qǐng)求默認(rèn)值”,這個(gè)默認(rèn)值是干嘛的?里面可以設(shè)置一些常用的默認(rèn)的設(shè)置(這不是廢話嘛~),在http請(qǐng)求默認(rèn)值面板里面,我們可以輸入要測(cè)試的服務(wù)器的IP或者域名,這里我們輸入“www.baidu.com”,協(xié)議是“https”,你要測(cè)試的網(wǎng)址如果是http開(kāi)頭那就填“http”,其他默認(rèn)不管了,這時(shí)候點(diǎn)擊左上角保存會(huì)彈出一個(gè)保存框,這是讓你保存你現(xiàn)在所做的測(cè)試配置,以后需要再測(cè)試的話的直接打開(kāi)保存的jmx文件就行了。保存完了之后,我們?cè)儆覔簟熬€程組”——“添加”——“Sampler”——“http請(qǐng)求”,哎,剛剛不是添加過(guò)了嗎?剛剛那個(gè)不是哦,剛剛那個(gè)只是默認(rèn)值,只是用來(lái)設(shè)置一些默認(rèn)配置,真正發(fā)起請(qǐng)求的是“http請(qǐng)求”,在http請(qǐng)求里面我們?cè)凇奥窂健崩锩孑斎胄备堋?”就行啦,表示默認(rèn)路徑,IP那一欄就不用輸入了,為什么呢?因?yàn)樵趆ttp請(qǐng)求默認(rèn)值里面已經(jīng)輸過(guò)啦,以后可以新建多個(gè)http請(qǐng)求,只要修改路徑就行了,這樣就可以訪問(wèn)同一個(gè)網(wǎng)站的不同頁(yè)面,這就是“http請(qǐng)求默認(rèn)值”的意義所在,把一些共用的設(shè)置寫(xiě)一遍就好了。接著,我們?cè)儆覔簟熬€程組”——“添加”——“監(jiān)聽(tīng)器”——“察看結(jié)果數(shù)”,在這里可以查看到http請(qǐng)求和結(jié)果。每次新建組件和修改配置信息都要點(diǎn)擊保存,好了,頁(yè)面配置圖如下所示:
??? 現(xiàn)在我們點(diǎn)擊工具欄的綠色運(yùn)行按鈕,就可以在“察看結(jié)果樹(shù)”中看到結(jié)果了
??? 我們新建的“http請(qǐng)求”返回結(jié)果200,表明請(qǐng)求成功,從綠色打鉤也能看出,上圖中的下拉列表框可以選擇顯示格式,我們選擇HTML,切換到“響應(yīng)數(shù)據(jù)”就可以看到返回頁(yè)面,也就是百度首頁(yè)。
步驟三? 設(shè)置線程并發(fā)數(shù)
??? 剛剛我們完成了一個(gè)簡(jiǎn)單的測(cè)試,你也應(yīng)該感覺(jué)到自己啥也沒(méi)干,就能測(cè)試了,其實(shí)不然,我們點(diǎn)擊“線程組”可以看到線程組的設(shè)置頁(yè)面,默認(rèn)設(shè)置1個(gè)線程,1秒啟動(dòng),循環(huán)1次。線程數(shù)表示啟動(dòng)多少個(gè)線程,Ramp-Up Period表示花多長(zhǎng)時(shí)間啟動(dòng)所有線程,循環(huán)次數(shù)表示每個(gè)線程的執(zhí)行次數(shù),例如,我設(shè)置線程數(shù)10,Ramp-Up Period為10,循環(huán)次數(shù)2,表示軟件將在10秒內(nèi)啟動(dòng)10個(gè)線程,也就是1秒啟動(dòng)1個(gè)線程,每個(gè)線程執(zhí)行兩次請(qǐng)求。
??? 此外,我們還可以勾選“調(diào)度器”,比如我填入持續(xù)時(shí)間100,啟動(dòng)延遲0,將循環(huán)次數(shù)勾選“永遠(yuǎn)”,表示線程立即啟動(dòng),執(zhí)行100秒后停止,注意,如果設(shè)置了持續(xù)時(shí)間和啟動(dòng)延遲,那么下面的啟動(dòng)時(shí)間和結(jié)束時(shí)間就不起作用了,也就不用管了,點(diǎn)擊運(yùn)行即可。
步驟四? 設(shè)置其他監(jiān)聽(tīng)器
??? 之前我們僅僅設(shè)置了“察看結(jié)果樹(shù)”這個(gè)監(jiān)聽(tīng)器,我們右擊“線程組”——“添加”——“監(jiān)聽(tīng)器”,里面有好多監(jiān)聽(tīng)器可供選擇,比如圖形結(jié)果,用表格查看結(jié)果,聚合報(bào)告等等,這些都是反映測(cè)試過(guò)程的指標(biāo)數(shù)據(jù)。圖形結(jié)果以圖形的形式顯示吞吐量、偏移、平均值等信息,表格結(jié)果顯示每一次請(qǐng)求的時(shí)間,返回,發(fā)送字節(jié)數(shù),連接時(shí)間等等,聚合報(bào)告里面顯示總體請(qǐng)求的吞吐量,錯(cuò)誤率等等。下圖為表格結(jié)果的樣式。
? ?可以看出,圖中顯示了20個(gè)Http請(qǐng)求,分別由10個(gè)線程執(zhí)行,每個(gè)線程執(zhí)行兩次,正好符合我們對(duì)于線程組的設(shè)置。圖中每一列的含義分別表示請(qǐng)求序號(hào),開(kāi)始時(shí)間,線程序號(hào),請(qǐng)求名,請(qǐng)求所花的時(shí)間,請(qǐng)求狀態(tài),請(qǐng)求字節(jié)數(shù),發(fā)送字節(jié)數(shù),等待時(shí)長(zhǎng),連接時(shí)間。
??? 聚合報(bào)告如下圖所示,每一列的含義分別表示請(qǐng)求名稱(chēng),請(qǐng)求總數(shù),請(qǐng)求的平均響應(yīng)時(shí)間(毫秒),50%的請(qǐng)求的響應(yīng)時(shí)間,90%的請(qǐng)求的響應(yīng)時(shí)間,95%的請(qǐng)求的響應(yīng)時(shí)間,99%的請(qǐng)求的響應(yīng)時(shí)間,最小的響應(yīng)時(shí)間,最大的響應(yīng)時(shí)間,錯(cuò)誤的請(qǐng)求率(錯(cuò)誤請(qǐng)求數(shù)/總的請(qǐng)求數(shù)),吞吐量(每秒處理的請(qǐng)求數(shù)),接收的字節(jié)速率,發(fā)送的字節(jié)速率。
步驟五? 登錄測(cè)試
??? 前面我們測(cè)試的頁(yè)面是不需要登錄的,現(xiàn)在我們來(lái)測(cè)試一下登錄操作,由于登錄操作涉及到具體的內(nèi)部網(wǎng)址和參數(shù),我這里就用一般網(wǎng)址和參數(shù)代替,但是方法是一樣的,例如,我們內(nèi)網(wǎng)IP是1.1.1.1,登錄頁(yè)面是1.1.1.1/login.do,我們將1.1.1.1填入“http請(qǐng)求默認(rèn)值”,將/login.do填入“http請(qǐng)求”的路徑里面,關(guān)于登錄需要的參數(shù)我要特別說(shuō)明一下,一般來(lái)說(shuō)就是用戶(hù)名和密碼,但是往往還需要其他參數(shù),我們可以通過(guò)抓包工具Fiddler進(jìn)行抓包,我們?cè)诰W(wǎng)站中進(jìn)行一次正常登錄,可以在Fiddler中看到登錄需要的post參數(shù),例如Fiddler中顯示登錄操作post參數(shù)有username,password,type,那么需要在“http請(qǐng)求”里面填入,下圖所示。
??? 點(diǎn)擊“添加”按鈕就可以添加參數(shù)了,保存好后,我們點(diǎn)擊運(yùn)行,就可以在察看結(jié)果樹(shù)中看到登錄成功后的頁(yè)面了,具體的操作和前面一樣的。
步驟六? 會(huì)話保持
??? 我們進(jìn)入登錄后的頁(yè)面后,我還想訪問(wèn)例如“我的賬戶(hù)”,“我的信息”等模塊怎么辦,這些網(wǎng)頁(yè)需要登錄成功后才能訪問(wèn)到,這里我們就需要進(jìn)行會(huì)話的保持,我們右擊“線程組”——“添加”——“配置元件”——“httpcookie管理器”,要添加的內(nèi)容我們可以在察看結(jié)果樹(shù)的“請(qǐng)求”選項(xiàng)卡里面看到,里面可以看到登錄需要的cookie,例如JSESSIONID,我們將JSESSIONID填入cookie管理器的參數(shù)里面,如下
??? 此時(shí),我們?cè)趆ttp請(qǐng)求里面輸入登錄后的頁(yè)面網(wǎng)址,例如“我的信息”等等,就可以請(qǐng)求成功啦。
步驟七? 文件讀取網(wǎng)址
??? 我們?cè)凇癶ttp請(qǐng)求”的路徑里面填入的是我們要訪問(wèn)的網(wǎng)頁(yè),每次只能填一個(gè),假如我想訪問(wèn)好幾個(gè)網(wǎng)頁(yè),例如首頁(yè),通知頁(yè),公司介紹頁(yè)等等,除了新建http請(qǐng)求外,我們還可以將這些網(wǎng)頁(yè)的地址存儲(chǔ)在TXT文件里,例如,我要訪問(wèn)1.1.1.1/index.do,1.1.1.1/information.do,1.1.1.1/company.do,我們可以這樣
??? 網(wǎng)址填入后,我們?cè)贘meter里面的“選項(xiàng)”——“函數(shù)助手對(duì)話框”——“StringFromFile”,將TXT的完整路徑貼到圖中位置,點(diǎn)擊生成,可以在框里生成TXT文件的讀取路徑。
??? 我們將$開(kāi)頭的那串路徑貼到“http請(qǐng)求”的路徑里面,就可以訪問(wèn)到TXT里面的所有網(wǎng)頁(yè)啦,如圖所示。
步驟八? 服務(wù)器狀態(tài)實(shí)時(shí)監(jiān)聽(tīng)
??? 上面我們介紹了幾個(gè)Jmeter自帶的監(jiān)聽(tīng)器,不知你是否感覺(jué)到有一點(diǎn)點(diǎn)無(wú)力,因?yàn)槔锩骘@示的指標(biāo)好像都不是你特別需要的,至少對(duì)于我來(lái)說(shuō),我更關(guān)心我的請(qǐng)求執(zhí)行過(guò)程中服務(wù)器狀態(tài)的改變,例如CPU,內(nèi)存,磁盤(pán),網(wǎng)絡(luò),TPS,響應(yīng)時(shí)間圖等等,因?yàn)檫@才是壓力測(cè)試的目的所在,服務(wù)器狀態(tài)隨著請(qǐng)求增加的變化曲線才是我們更加需要看到的。想看到服務(wù)器變化的曲線圖,我們需要下載JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar,將這兩個(gè)jar包放入Jmeter的安裝路徑下的lib/ext/下面,重啟Jmeter后,右擊“線程組”——“添加”——“監(jiān)聽(tīng)器”,我們可以看到多了好多監(jiān)聽(tīng)器,大多數(shù)以“jp@gc”開(kāi)頭的監(jiān)聽(tīng)器,我們選擇“PerfMon Metrics Collector”,里面將會(huì)顯示服務(wù)器的狀態(tài)信息,現(xiàn)在還看不到,為什么,因?yàn)橐獪y(cè)試的服務(wù)器需要安裝一個(gè)包,叫ServerAgent.zip,比如我的服務(wù)器是linux,我們將ServerAgent在服務(wù)器中解壓,運(yùn)行里面的startAgent.sh就可以啦,啟動(dòng)起來(lái)后可以看到如下
默認(rèn)端口是4444,在這里我要插一句,我當(dāng)時(shí)運(yùn)行后通過(guò)Telnet始終ping不到4444端口導(dǎo)致顯示不了,后來(lái)改成4445端口啟動(dòng)就可以了,具體的服務(wù)器命令是ServerAgent-2.2.3/startAgent.sh--udp-port 4445 --tcp-port 4445,這樣就表示將serverAgent在4445端口啟動(dòng),你可以將4445換成其他端口,如果默認(rèn)的4444端口不行的小伙伴可以試試其他端口哦。好了,我們回到Jmeter軟件,按下圖填入服務(wù)器的地址和端口號(hào),以及需要監(jiān)控的硬件,如CPU,內(nèi)存,磁盤(pán),網(wǎng)絡(luò)等等。
??? 好了,我們點(diǎn)擊運(yùn)行,可以在chart下看到服務(wù)器的狀態(tài)變化曲線啦
怎么樣,是你想要的吧,其實(shí)監(jiān)聽(tīng)器里面還有很多其他的曲線,看英文就知道,比如TPS曲線,響應(yīng)時(shí)間曲線等等,這些你都可以自己添加,我就不贅述啦。好了,本篇博客的內(nèi)容就到這了,有什么不對(duì)的地方歡迎評(píng)論,我們一起討論一起進(jìn)步,謝謝!
?現(xiàn)在我也找了很多測(cè)試的朋友,做了一個(gè)分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。
如果你不想再體驗(yàn)自學(xué)時(shí)找不到資源,沒(méi)人解答問(wèn)題,堅(jiān)持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動(dòng)化,性能,安全,測(cè)試開(kāi)發(fā)等等方面有一定建樹(shù)的技術(shù)大牛
分享他們的經(jīng)驗(yàn),還會(huì)分享很多直播講座和技術(shù)沙龍
可以免費(fèi)學(xué)習(xí)!劃重點(diǎn)!開(kāi)源的?。。?qq群號(hào):485187702【暗號(hào):csdn11】
最后感謝每一個(gè)認(rèn)真閱讀我文章的人,看著粉絲一路的上漲和關(guān)注,禮尚往來(lái)總是要有的,雖然不是什么很值錢(qián)的東西,如果你用得到的話可以直接拿走!?希望能幫助到你!【100%無(wú)套路免費(fèi)領(lǐng)取】
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-828753.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-828753.html
到了這里,關(guān)于Jmeter壓力測(cè)試簡(jiǎn)單教程(包括服務(wù)器狀態(tài)監(jiān)控)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!