Jmeter性能測試系列-場景用例設計
性能測試過程中,首先應該設計測試場景,模擬真實業務發生的情境,然後是針對場景設計腳本。
為了真實的反映被測對象可能存在的性能問題,需要儘可能模擬被測對象可能發生瓶頸的業務場景。測試需求分析過程中已經確定了需要測試的業務類型,在此,則需要設計針對每種或綜合業務的測試場景。
性能測試場景通常包括單業務基準測試、單業務壓力測試、單業務負載測試、綜合業務基準測試、綜合業務壓力測試、綜合業務負載測試、綜合業務穩定性測試等7種常用測試場景。
單業務基準測試
測試某個具體業務是否滿足系統設計或用戶期望的性能指標,如用戶期望系統支付介面支持50個用戶並發支付,如果滿足了,則認為基準測試完成,否則失敗。基準測試過程中,性能指標的任何一項均需成功,才認為基準測試完成。基準測試可分為並發基準及業務量基準兩種,其目的都在於驗證是否滿足預期目標設定。
單業務壓力測試
測試某個具體業務在最大負載下,持續服務的時長,以此驗證被測業務的穩定性。壓力測試過程中所設計的負載,是以系統基準負載為標準,如系統基準負載為50個並發用戶,則壓力測試的負載設為50個,通過運行時長的變化,驗證伺服器在系統預設負載下持續服務的能力。具體的時長從需求分析、運行日誌、系統設計規劃等來源獲取。
單業務負載測試
測試某個具體業務能夠承受的最大負載,驗證被測業務能夠承受的最大負載數,如系統基準負載為50個,則通過多次測試,逐步加大負載,最終獲得被測業務的最佳負載。在最佳負載下,系統仍需滿足各項性能指標。
綜合業務基準測試
與單業務基準測試類似,但綜合業務需考慮業務與業務間的聯繫,如果相互之間存在資源爭用,則需單獨組合測試。假設系統需測試的業務有三個:A、B、C,綜合業務基準測試是將ABC一起運行,那麼加上A、B、C三個基準測試,共計4個基準測試場景,分別是ABC、A、B、C,但A與C存在資源爭用,則需單獨將A與C組合,構成一個單獨的測試場景,則一共為ABC、A、B、C、AC等5個基準測試場景。
綜合業務測試中的數據分配,根據實際業務、用戶需求、運行日誌、運營規劃等分析確定。
假設某銀行櫃員交易系統,1個小時內有4個櫃員進行存款操作,6個櫃員進行開戶操作,10個櫃員進行查詢操作,則綜合業務的負載比例設置為:
存款業務佔比:4/(4+6+10)=20%
開戶業務佔比:6/(4+6+10)=30%
查詢業務佔比:10/(4+6+10)=50%
綜合業務壓力測試
與單業務壓力測試類似。
綜合業務負載測試
與單業務負載測試類似。
綜合業務穩定性測試
綜合業務穩定性測試通常為核心業務在基準負載的基礎上運行相對長的時間,驗證伺服器持續提供穩定服務的能力。穩定性場景測試的時間由需求方設定,一般為7*24小時不間斷執行。
通過上述分析,根據ECShop平台業務模型確定本次性能測試的場景主要為登錄並發基準測試、登陸業務量基準測試、商品隨機瀏覽購買並發基準測試、商品隨機瀏覽購買業務量基準測試等四個場景。
場景設計中需設置線程數,當需求未明確指出時該如何確定呢?
以本次測試為例,要求在2小時內支持5萬次用戶登錄,可通過如下計算方法獲取線程數。
Total_Thread=BC/(T*60*60/t)
T:考察時間段,如此處的2小時。
t:單用戶單次業務消耗時間,即單個用戶完成一次業務過程所消耗的時間,儘可能模擬用戶的真實行為。
BC:業務量,如此處的5萬。
利用Jmeter測試單次業務消耗時間,代入公式即可獲得執行2小時5萬用戶登錄所需的線程數。
如上圖所示,ECShop用戶登錄系統單次消耗時間採用90%抽樣為:88+135=223毫秒,如果加上模擬用戶輸入用戶名及密碼、登錄成功後等待返回主頁、退出後等待返回主頁等操作的思考時間,以5秒、3秒、3秒計算,則單用戶訪問ECShop登錄所消耗時間為:0.223秒+5秒+3秒+3秒=11.223秒。
則代入上述公式,獲得模擬2小時5萬用戶登錄所需的線程數為:
Total_Thread=50000/(2*60*60/11.223)=77.88
因線程個數無法為小數,故取整為78個線程數。
同樣方法,計算用戶登錄後隨機選擇商品瀏覽的消耗時間,然後計算出線程數,具體數據如下:
如上圖所示,ECShop用戶登錄後隨機購買商品單次消耗時間採用90%抽樣為:40+56+50+100+43+47+106+71+84+75=672毫秒,如果加上模擬用戶輸入用戶名及密碼5秒、成功登錄等待返回主頁3秒、加入購物車5秒、編寫收貨信息5秒、編寫快遞及付款方式5秒、退出等待返回主頁3秒等操作的思考時間,共計26秒計算,則單用戶訪問ECShop登錄後隨機購買商品的時間為:0.672秒+5秒+3秒+5秒+5秒+5秒+3秒=26.672秒。
則代入上述公式,獲得模擬2小時5萬用戶登錄所需的線程數為:
Total_Thread=50000/(2*60*60/26.672)=185.18
因線程個數無法為小數,故取整為186個線程數,但該數據已經超過該業務要求100線程並發的基準,故以100個線程為基準,執行業務量測試。
根據上述分析數據,設計本次測試的四個場景:登錄模塊並發測試場景、登錄模塊業務量測試場景、隨機購買並發測試場景、隨機購買業務量測試場景。
至此,本次測試所需的場景全部設計完成。接下來,可進行測試腳本的設計。
推薦閱讀:
※Jmeter性能測試系列-指標分析與定義
※前端性能測試,TTFB太長怎麼辦-魯德
※80後測試工程師的中年危機,不知道自己還能不能幹測試,能幹多久
※LoadRunner v12.55發布,大量新增功能,各協議得到優化改進|附下載
※核心實驗:監控並分析Windows和Linux關鍵性能指標