因?yàn)橐獙?duì)之前做的wap網(wǎng)站進(jìn)行壓力測(cè)試,所以今天去下了一個(gè)jmeter,還找了不少相關(guān)資料,發(fā)現(xiàn)網(wǎng)上的教程已經(jīng)很完備,常用的基本功能都講到了,還有專門的用戶手冊(cè)和FAQ,下面按照jmeter的學(xué)習(xí)順序,列出相應(yīng)的網(wǎng)址,最后加上自己的一點(diǎn)心得。
1.jmeter下載
jmeter是apache的一個(gè)項(xiàng)目,可以在這里下載:http://jakarta.apache.org/jmeter/index.html
下載回來(lái)的壓縮包里面有官方文檔,不過(guò)是英文的,國(guó)內(nèi)已經(jīng)有人進(jìn)行了翻譯,在這個(gè)網(wǎng)址:http://wiki.javascud.org/pages/viewpage.action?pageId=5493
2.jmeter的基本操作
下載回來(lái)之后,按照這個(gè)網(wǎng)址的介紹開始一個(gè)簡(jiǎn)單的測(cè)試 http://www.testage.net/AutoTest/Opentest/200602/281.htm
3.jmeter高級(jí)應(yīng)用
簡(jiǎn)單的web網(wǎng)站測(cè)試是自己手動(dòng)建立一個(gè)http請(qǐng)求,但是如果是一系列的操作,則必須使用腳本錄制功能。jmeter提供了類似LoadRunner等商業(yè)測(cè)試工具的腳本錄制功能,原理都是相同的:jmeter創(chuàng)建一個(gè)代理服務(wù)器,然后你在瀏覽器中將代理服務(wù)器設(shè)為jmeter的代理服務(wù)器,這樣所有的頁(yè)面訪問(wèn)都會(huì)經(jīng)過(guò)該代理服務(wù)器,jmeter就可以對(duì)其中的訪問(wèn)信息進(jìn)行記錄了,詳細(xì)的使用方法,可以看這兩篇文章
http://www.matrix.org.cn/resource/article/2006-02-22/JMeter+tips_44226.html
http://www.testage.net/AutoTest/Opentest/200602/282.htm
其中也涉及到了一些定時(shí)器的使用,那樣可以更準(zhǔn)確的模擬用戶操作
4.jmeter的其他測(cè)試功能
jmeter原本只是用來(lái)對(duì)web服務(wù)器進(jìn)行壓力測(cè)試的,但經(jīng)過(guò)不斷的擴(kuò)充已經(jīng)可以用于多種測(cè)試了,比如數(shù)據(jù)庫(kù)、jms等等,這篇文章對(duì)jmeter各個(gè)測(cè)試功能作了簡(jiǎn)單介紹,詳細(xì)的可以參考手冊(cè)
http://www.oioj.net/blog/user1/2826/archives/2006/351695.shtml
5.用jmeter進(jìn)行分布式測(cè)試
如果單純?cè)谝慌_(tái)機(jī)器上模擬多個(gè)用戶并發(fā),由于性能限制不能模擬太多的用戶,這時(shí)可以用jmeter的遠(yuǎn)程測(cè)試功能同時(shí)啟動(dòng)多臺(tái)機(jī)器進(jìn)行模擬,以取得更加真實(shí)的效果
http://www.cnblogs.com/jackei/archive/2006/09/14/504638.html
最后加上一些自己的心得:
1.如何測(cè)試wap網(wǎng)站
測(cè)試wap本質(zhì)上是和web一樣的,都是經(jīng)過(guò)代理服務(wù)器進(jìn)行腳本錄制,不過(guò)在我使用jmeter的過(guò)程中發(fā)現(xiàn)一個(gè)問(wèn)題,在通過(guò)jmeter的http proxy server訪問(wèn)tomcat上的一個(gè)wap站點(diǎn)時(shí),一些關(guān)于wap頁(yè)面的頭信息被改變了,當(dāng)你用winwap等客戶端模擬器訪問(wèn)時(shí),不能識(shí)別出是wap頁(yè)面,也就是說(shuō),代理服務(wù)器把wap頁(yè)面當(dāng)作web頁(yè)面轉(zhuǎn)發(fā)給客戶端,導(dǎo)致無(wú)法打開。我暫時(shí)沒有找到解決方法,權(quán)宜之計(jì)是客戶端換成openWave,這個(gè)客戶端可以直接訪問(wèn)web類型的頁(yè)面,反正我們的目的只是進(jìn)行壓力測(cè)試
2.如何模擬不同用戶
現(xiàn)在的網(wǎng)站都是要先進(jìn)行用戶驗(yàn)證才能進(jìn)行后續(xù)操作,如果單純按照上面的腳本錄制方式,那么模擬用戶操作時(shí),輸入的用戶名密碼都是相同的,顯然不可行,因?yàn)槌说谝粋€(gè)用戶其他都不能登錄了。我們可以使用jmeter的“自定義用戶變量”來(lái)模擬多個(gè)用戶
在jmeter手冊(cè)有提到一個(gè)組件叫CSV Data Set Config,專門用于從文本讀入信息,保存到變量中,在其他組件中可以引用該變量。具體步驟如下:
1.新建一個(gè)文本文件,作為例子,文件內(nèi)容如下:
aaa,111
bbb,222
這里用英文逗號(hào)為分隔符,也可以用其他為分隔符,在CSV Data Set Config中可以設(shè)置。
2.在你的測(cè)試計(jì)劃中添加一個(gè)CSV Data Set Config,然后填寫若干屬性,其中,文件名是指保存信息的文件目錄,可以相對(duì)或者絕對(duì)路徑;文件編碼一般可以不填,使用操作系統(tǒng)默認(rèn)編碼;變量一欄填入“user,pass”,表示兩個(gè)變量名;分隔符一欄填入“,”(也是默認(rèn)值),對(duì)應(yīng)上一步文本文件里的分隔符;另外兩個(gè)選項(xiàng)是問(wèn)你是不是循環(huán)讀入,因?yàn)镃SV Data Set Config一次讀入一行,分割后存入若干變量中交給一個(gè)線程,如果線程數(shù)超過(guò)文本的記錄行數(shù),那么可以選擇從頭再次讀入
3.在需要使用變量的地方,比如之前記錄的操作腳本中,需要提交的表單字段包含用戶名密碼,我們就可以用${變量名} 的形式進(jìn)行替換,例如${user}和${pass}
4.附帶說(shuō)一下,通常有用戶認(rèn)證的地方都要用到cookie或者session,那么最好在測(cè)試計(jì)劃中加入一個(gè)http cookie 管理器,直接添加一般不需要任何設(shè)置,否則可能會(huì)出現(xiàn)登錄失敗(在測(cè)試結(jié)果中,如果看到多次請(qǐng)求不同頁(yè)面返回的字節(jié)數(shù)卻是相同的,那多半是登錄失敗了)
5.最后,運(yùn)行線程組即可看到效果,如果失敗,那么檢查一下文本的路徑,變量大小寫等等,手冊(cè)上說(shuō)使用相對(duì)文本路徑時(shí),要以測(cè)試配置文件(默認(rèn)是jmeter的bin目錄)的目錄為參考,但是我試過(guò)似乎不行,換成絕對(duì)路徑就可以了
6.詳細(xì)的情況可以參考手冊(cè),不過(guò)中文版的似乎沒有翻譯完全,還是最好看英文吧
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1922535