過去長期用loadrunner做性能測試,但是漸漸覺得有些麻煩了:
1.只能運行在windows環境下,而生產環境幾乎清一色的linux。爲了在同一網段做性能或壓力測試,還需要單獨部署一套windows服務器,比較浪費。
2.loadrunner和瀏覽器版本綁定太嚴格了,比如loadrunner 11,最高就支持到ie9,有時候系統打補丁自動把瀏覽器版本升上去了,就無法錄製腳本了。
3.版權問題也不容忽視,crack帶來的各種風險也是存在的。
於是嘗試了一下JMeter,發現還是相當好用的。在多數web性能測試中,功能也足夠了。總結一下最常用的操作,幫助初學者快速上手。
安裝:
Jmeter的安裝實在是太省心了,就是解壓縮即可。Windows版本通常是zip包,linux版本通常是tar包,只要系統上有JDK,直接解開就可以啓動了。(\bin\jmeter.bat、\bin\jmeter.sh),啓動後是這個界面:
錄製腳本:
和loadrunner的主動啓動被錄製應用不同,Jmeter是啓動一個代理服務器,由瀏覽器設置去使用這個代理服務器,以完成web請求的監控和錄製。所以需要在工作臺右鍵、添加——非測試元件——http代理服務器。
重點是爲代理服務器設置一個和現有應用不衝突的端口。然後在瀏覽器裏設置使用代理服務器,端口就是上述設定好的端口。點擊啓動按鈕,代理服務器就開始工作了。此時通過瀏覽器訪問web站點,所發出的請求就會被記錄下來。
但是如果現在就開始錄製的話,會在上面的列表中列出一大堆,顯得很雜亂。所以先在測試計劃中添加一個線程組。
添加線程組不只爲了看着方便,還有幾個作用:
線程組相當於loadrunner中的一個獨立腳本,多個腳本可以組成一個測試場景。
模擬多用戶時,也是以線程組爲單位進行數量設定和調度設定的。
如上圖中,對這個線程組採用模擬10個併發用戶循環5次執行性能測試。
執行結果要能看到反饋才行,所以在測試計劃中添加監聽器。常用的監聽器有SummaryReport、聚合報告(這兩個非常接近,用一個即可)、察看結果樹等。也有一些圖形化的監聽器用於各自需要的場合。
這樣,一個基本的測試流程(錄製、測試、報告)就完成了。再介紹一下參數化,這也是在性能測試中最常用的,比如各種查詢。所謂參數化就是希望模擬用戶操作的時候採用不同的參數數值。如模擬用戶檢索就希望每個虛擬用戶發出不同的檢索請求,這樣才更能模擬實際情況。
此時需要先準備一個檢索詞列表到一個csv文件中。然後添加一個配置元件——CSVData Set Config,然後指定這個文件路徑,並給每列數據指定一個名稱。
命名之後,就可以在需要的地方,用變量名替換原有的固定字符串了。
當模擬多用戶時,系統會用csv文件裏的內容替換這個變量。
有些時候系統需要session信息來驗證某些狀態,如果沒有發出的話會導致一些錯誤,這個時候添加——配置元件——HTTPCookie管理器就可以了。
常見步驟就是這些,通過調節參數設置,可以更精細地完成多種測試任務。這就需要在實踐中逐步積累經驗了。