Jmeter性能測(cè)試系列——場(chǎng)景執(zhí)行與結(jié)果收集
測(cè)試執(zhí)行前,需對(duì)測(cè)試環(huán)境進(jìn)行確認(rèn),確保所有環(huán)境、系統(tǒng)業(yè)務(wù)都能正常使用。首先需將ECShop數(shù)據(jù)庫(kù)恢復(fù)到初始狀態(tài),即創(chuàng)建了6萬(wàn)注冊(cè)帳號(hào),沒有任何訂單時(shí)的數(shù)據(jù)庫(kù),便于后續(xù)統(tǒng)計(jì)商品隨機(jī)購(gòu)買場(chǎng)景的成功率。
本次被測(cè)系統(tǒng)有個(gè)特殊的地方,有些商品的庫(kù)存量較少,或者為0,處于缺貨狀態(tài),為了避免測(cè)試過程中因數(shù)據(jù)問題導(dǎo)致測(cè)試失敗,在開始執(zhí)行測(cè)試前,可將所有商品的庫(kù)存調(diào)整為70000,這樣能夠充分保證測(cè)試數(shù)據(jù)夠用,不會(huì)出現(xiàn)因?yàn)闇y(cè)試數(shù)據(jù)準(zhǔn)備不充分導(dǎo)致的測(cè)試失敗。修改庫(kù)存量SQL語(yǔ)句如下:
update ecs_goods SET ecs_goods.goods_number = "70000"
場(chǎng)景執(zhí)行時(shí),須在可控的測(cè)試環(huán)境下進(jìn)行,當(dāng)客戶端性能不足時(shí),需考慮提升客戶端配置,或分布線程數(shù)。對(duì)于服務(wù)器,需保證在性能測(cè)試過程中,服務(wù)器資源獨(dú)享,除本次性能操作外任何人為操作均不允許。因此,性能測(cè)試實(shí)施最好選擇用戶使用較少的時(shí)候,盡可能降低對(duì)性能測(cè)試結(jié)果的干擾。
測(cè)試場(chǎng)景按照預(yù)期設(shè)置執(zhí)行完成后,在DOS命令模式下,可利用下列代碼收集測(cè)試報(bào)告。
Jmeter –n –t測(cè)試結(jié)果文件名 –l 日志文件名 –e –o HTML測(cè)試結(jié)果存放路徑
JMeter 默認(rèn)在當(dāng)前目錄尋找需生成報(bào)告的腳本文件,并把日志記錄在當(dāng)前目錄。如果需分析的文件不在當(dāng)前目錄,則需使用絕對(duì)路徑。
測(cè)試服務(wù)器硬件配置:

測(cè)試客戶端硬件配置:

1.用戶登陸并發(fā)場(chǎng)景執(zhí)行
根據(jù)前面的用戶登陸腳本及場(chǎng)景設(shè)置,啟動(dòng)本次100線程并發(fā)測(cè)試場(chǎng)景。確保所有設(shè)置正確,服務(wù)器可正確訪問,Linux服務(wù)器的ServerAgent服務(wù)已經(jīng)打開,Mysql監(jiān)控已經(jīng)打開,關(guān)閉客戶端與本次測(cè)試無關(guān)的應(yīng)用程序。

運(yùn)行結(jié)束后,保存測(cè)試過程中生成的監(jiān)控圖,如系統(tǒng)資源使用率、Hits per Second、Transactions per Second、數(shù)據(jù)庫(kù)監(jiān)控圖,并記錄斷言結(jié)果,聚合報(bào)告結(jié)果等。
利用以下代碼生成測(cè)試報(bào)告,便于后續(xù)結(jié)果分析。
jmeter -n -t D:ECShopuserlogin100result.jmx -l user100 -e -o D:ECShopuserlogin100
2.用戶登陸業(yè)務(wù)量場(chǎng)景執(zhí)行
打開用戶登陸業(yè)務(wù)量場(chǎng)景,確認(rèn)相關(guān)數(shù)據(jù)、環(huán)境正確后設(shè)置78個(gè)線程數(shù),啟動(dòng)場(chǎng)景,執(zhí)行2小時(shí)。測(cè)試完成后保存相關(guān)測(cè)試數(shù)據(jù),利用下列代碼生成測(cè)試報(bào)告,便于后續(xù)結(jié)果分析。
jmeter -n -t D:ECShopuserloginbuss.jmx -l loginbuss -e -o D:ECShoploginbuss
3.隨機(jī)購(gòu)買并發(fā)場(chǎng)景執(zhí)行
與用戶登陸并發(fā)測(cè)試相同的操作方式,啟動(dòng)100個(gè)線程數(shù)的隨機(jī)購(gòu)買并發(fā)場(chǎng)景測(cè)試。測(cè)試完成后保存相關(guān)數(shù)據(jù),利用下列代碼生成測(cè)試報(bào)告,便于后續(xù)結(jié)果分析。
jmeter -n -t D:ECShopuserbuyprod100result.jmx -l buy100 -e -o D:ECShopuy100
4.隨機(jī)購(gòu)買業(yè)務(wù)量場(chǎng)景執(zhí)行
打開隨機(jī)購(gòu)買業(yè)務(wù)量場(chǎng)景,初始化測(cè)試環(huán)境,確保后臺(tái)訂單中沒有數(shù)據(jù)(便于成功率統(tǒng)計(jì)),確認(rèn)相關(guān)數(shù)據(jù)、環(huán)境正確后設(shè)置100個(gè)線程啟動(dòng)場(chǎng)景,執(zhí)行30分鐘。測(cè)試完成后保存相關(guān)測(cè)試數(shù)據(jù),利用下列代碼生成測(cè)試報(bào)告,便于后續(xù)結(jié)果分析。
jmeter -n -t D:ECShopuserbuyprodbuss.jmx -l buybuss -e -o D:ECShopuybuss
Jmeter執(zhí)行過程中,如果測(cè)試時(shí)間較長(zhǎng),可能會(huì)導(dǎo)致Jmeter內(nèi)存溢出,修改Jmeter內(nèi)存配置即可解決。
編輯Jmeter的啟動(dòng)文件“jmeter.bat”,修改如下代碼:
set HEAP=-Xms256m -Xmx256m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
為:
set HEAP=-Xms512m -Xmx1024m
set NEW=-XX:NewSize=256m -XX:MaxNewSize=512m

