談到性能測試,大家一定會聯想到Jmeter和LoadRunner,這兩款工具目前在國內使用的相當廣泛,主要原因是Jmeter是開源免費,LoadRunner 11在現網中存在破解版本。商用型性能測試工具對于中小型企業很難承擔相關的費用。國內的性能測試工具有:CPTS(華為,開源二次開發)、kylinTOP(奇林,自主研發)、PTS(阿里,開源二次開發)等,國外的性能測試工具LoadRunner相對比較出名。Loadrunner在國內出名的原因主要還是因為LoadRunner 進入中國的市場比較早,而且網上還存在破解版本。現在我們主要研究一下Jmeter工具。網絡上經常看到網友們抱怨Jmeter工具測試的結果不準,而為什么不準都是丈二的和尚摸不著頭腦。那么今天我就和網友們分享一下Jmeter工具在使用上到底有什么限制,以期對網友們有幫助,提高對Jmeter工具的認知。
Apache軟件基金會(ASF)是一家總部位于美國的非營利性慈善組織。ASF的所有產品都通過公共論壇的在線協作開發,并從美國境內的中央服務器分發。Jmeter是ASF的一款開源免費軟件 ,在國內被很多中小公司當作性能測試工具廣泛使用。該款工具的本意不是用于性能測試,而是用于開發人員的接口功能調試使用。
Jmeter做性能或壓力測試,首先要建立一個線程組,如果需要事務在線程組內再添加事務,然后根據需要可以設置并發的虛擬用戶數。Jmeter構造并發虛擬用戶的技術路線是通過構造線程,每個線程同時運行相同的線程組。為了弄清楚jmeter統計結果不準確,首先我們要搞清楚Jmeter對線程組中的HTTP請求運行的機制。
1、 測試思路
步驟1:使用Jmeter錄制一個web頁面
步驟2:建立測試計劃,各自運行腳本一次,運行的過程通過(wireShark抓包)
步驟3:通過對wireShark網絡抓包結果分析HTTP請求的順序。
步驟4:wireShark抓包獲得的HTTP請求順序與瀏覽單獨訪問URL時的幕布對比。
2、選擇被測試對象
基于以上思路我們從網絡上選取一個web URL(HTTP://cloud.10oa.com/trial/view/catalogue.aspx)作為被測試對象
3、腳本錄制同時F12打開Chorme的network選項
通過Jmeter 5.1工具自帶的代理錄制功能,錄制上述URL,在錄制的過程中按F12鍵,切換到network選項。
注意:Jmeter錄制時必須按F12,把chrome的network打開才錄制到完整的HTTP請求,否則可能只能錄制到第1條請求。
Jmeter腳本錄制時的頁面HTTP瀑布圖
4、執行性能測試計劃
單擊Jmeter的測試計劃啟動按鈕,單用戶啟動執行一次腳本
注:此圖通過wireShark的網絡抓包獲得HTTP請求的開始與結束時間,再通過Excel畫出瀑布圖
5、測試結果分析
從Jmeter的測試計劃執行結果的wireShark抓包分析的瀑布圖看,Jmeter對HTTP請求是按串行下發請求(前一個請求返回結束,下一請求才開始下發請求),并發數為1個HTTP,從開始執行到最后執行結束,用時超過3秒鐘,真實瀏覽器單獨訪問URL時長在1秒左右。
Jmeter可用于開發人員在產品開發中的功能調試使用并做一些非定量的性能測試,不適用于測試人員做定量的性能測試,更不能以此測試結果輸出測試結論誤導他人。
如果web服務器對外提供的服務是純HTTP接口功能(非web頁面),且用戶的訪問是線性的(串行訪問),則可以考慮使用Jmeter測試。即使web服務器對外提供的服務是純HTTP接口功能(非web頁面),如果用戶訪問是非線性,那么測試的結果也是不可靠的。記住一點,只有線性的接口請求模型才適用于Jmeter。