jmeter是 apache 出品的網站壓力測試軟件,功能十分強大,運行時需要java支持,java的安裝和配置這裡不再贅述。
這裡以2.13版本為例,下載jmeter并解壓至任意目錄,運行bin文件夾裡的jmeter.bat。注意jmeter在測試時會把生成的文件比如htm等直接放在bin目錄裡,所以如果你的jemter文件夾越來越大就到bin目錄裡看看吧。
由于jmeter功能強大,以模塊化方法支持各種測試方案,排列組合無法一一展開,這裡僅以最常用最基本的測試為例說明,即模拟多線程同時登錄和查詢。
以下内容黑色部分為報告正文,紅色部分為軟件設置說明沒有包括在報告中。
某網站壓力測試報告
測試環境:
軟件:32位Window 7專業版+Java1.7
硬件:奔騰雙核E5200@2.5GHz+2G内存
測試軟件:Apache Jmeter2.13
服務器環境:
軟件:32位centos5.5+Java1.6+Mysql5.0+Tomcat7.0
硬件:奔騰雙核E5400@2.7GHz+2G内存
測試日期:2015-7-22
測試方法:在100秒内發起500個并發連接(平均每秒5個),每個連接均執行1次登錄及10次查詢操作。
軟件設置:
這裡先一次性将所有的測試模塊添加完畢,最後進行設置。
在jmeter的左側菜單樹右鍵單擊測試計劃,添加-threads(users)-線程組。(jmeter的漢化就是這麼任性,喜歡的地方漢化一下,不喜歡的就拉倒),這樣左邊的測試計劃下就多出一個線程組了。
右鍵單擊線程組,添加-samlpler-http請求。
右鍵單擊http請求,添加-斷言-響應斷言。
右鍵單擊線程組,添加-配置元件-http cookies管理器。
右鍵單擊線程組,添加-邏輯控制器-循環控制器。
右鍵單擊循環控制器,添加-sampler-http請求。
右鍵單擊循環控制器裡的http請求,添加-斷言-響應斷言。
右鍵單擊線程組,添加-監聽器-圖形結果。
右鍵單擊線程組,添加-監聽器-查看結果樹。(這一項是為了方便查看具體每個線程的響應數據,沒有在報告裡體現)
右鍵單擊線程組,添加-監聽器-聚合報告。
組件添加完畢後進行設置。
1.在線程組裡将線程數設為500,将ramp up period(in second)設為100, 這樣就是在100秒内平均發起500個連接數。
2.在線程組下面的http請求裡設置服務器的地址,端口,路徑,并在parameters選項卡裡添加2個同請求一起發送的參數即用戶名和密碼,名稱就是登陸頁面表格裡的input名稱,值就是用戶名和密碼了。http請求的方法按實際情況選擇get或post(應該沒有人會用get吧這裡)。注意有的網站不允許同一個用戶名同時多次登陸,需求修改網站配置或程序。
3.在這個http請求下面的響應斷言裡設置登錄後的正确響應文本,添加一個登陸後才有的關鍵詞即可,比如用戶名和密碼都正确會提示歡迎二字,那麼這裡添加一個響應文本為歡迎即可,這樣在自動測試的時候jmeter就會自動判斷是不是登陸成功了。
4.将循環控制器裡的循環次數設為10,意思就是登陸成功後再執行10次查詢。
5.在循環控制器下的http請求裡設置登錄成功後要執行的查詢操作,填寫ip,端口,路徑,選擇http請求的方法,等等,和第2步類似。
6.在這個http請求下的響應斷言裡設置查詢成功後的正确響應文本,和第3步類似。
這樣就都設置完畢,可以點擊運行-啟動,或者直接點擊綠色箭頭了,等待若幹時間,點擊圖形結果或聚合報告查看測試結果。
測試結果:
樣本數量:5500,包括500次登陸請求和5000次數據請求;
平均連接時間:21毫秒;
95%的樣本連接時間低于33毫秒;
錯誤率:0%;
服務器吞吐量:每秒54.4次;
數據流量:每秒3005.3KB。
服務器端CPU及内存占用情況:
峰值:
平均值:
測試完成後:
其他測試:在嘗試更多并發數時出現多種報錯,包括本機内存溢出、服務器響應超時等。
測試說明:測試結果表明服務器承壓能力出色,服務器資源占用在正常水平内,網站程序設計合理,測試時連接時間短,錯誤率極低,每秒5人次登錄請求足夠滿足使用要求。
有話要說...