過去铜跑,數(shù)據(jù)分析和測試的關系好像大部是體現(xiàn)在測試報告的各種圖表——大部分人都不太關注的圖表埋哟。而今天想拿壓測中的兩個例子,說明下用數(shù)據(jù)分析的方法真的可以讓測試變得更好震嫉。
1、確定壓力測試模型
在壓力測試過程中牡属,壓力測試模型讓我們的測試更有針對性票堵。之前的一個做法是,我們會以目前線上的交易量為基礎逮栅,推算一個未來某時間的交易量悴势,得到一天的交易量,在折算在工作的8小時或其他幾個小時內去處理措伐,得到一個預期各交易類型的tps特纤,計算出并發(fā)的用戶數(shù)。在設置并發(fā)侥加、預熱捧存、減少壓力的策略等等。這種測試方法下担败,我們可以得到這樣一個理論上的交易量-時間圖:
但很奇怪的是昔穴,我們明明有線上的數(shù)據(jù),為什么不直按照線上的數(shù)據(jù)放大幾倍為未來的交易量級提前,直接進行測試呢吗货?
所以我們拿了線上的脫敏數(shù)據(jù),分析了一個月的交易數(shù)據(jù)岖研,把每天按分鐘劃分為1440時間點卿操,計算每個時間點交易量的平均值,這樣的到了1440個交易量的點:
按照這個量的X倍的到每分鐘的交易量和計算分鐘的并發(fā)數(shù)進行壓力測試孙援。
另一個就是金額害淤,以前通常的做法會選擇一定范圍內的隨機金額。但是在交易類系統(tǒng)中拓售,金額在風控窥摄、費率等計算中也是很重要的。所以我們分析了線上的一天的交易金額础淤,得到每分鐘交易金額均值作為每分鐘內交易金額的隨機的范圍:
我們可以看到真實場景下并非交易量大的時間崭放,交易金額就一定大哨苛。采用這樣一個金額的差異化,比之前任何時間點都在一個范圍內隨機差異或者是固定值要來得更貼近現(xiàn)實币砂。
2 計算處理時間
在有比較好的測試模型后建峭,進行測試后。我們通常需要得到系統(tǒng)的處理時間决摧。在沒有規(guī)范的日志情況下亿蒸,數(shù)據(jù)庫里的記錄會是一個好的選擇。數(shù)據(jù)庫中一般都會記錄交易的創(chuàng)建時間掌桩、完成時間边锁、更新時間等。借此波岛,我們可以得到系統(tǒng)內部處理等時間分布:
計算一些我們關心的處理時間的值茅坛,例如:
平均值:HandlerTimeAVG: 1461.93 ,
最大值:HandlerTimeMAX: 86433.00 ,
最小值:HandlerTimeMIN: 0.00 ,
中位數(shù):HandlerTimeMEDIAN: 798.00 ,
標準差:HandlerTimeSTD: 4102.73
此時我們不難發(fā)現(xiàn)在時間點200左右,交易量是低的则拷,而處理時間有幾個點卻很高贡蓖。按正常時間點看,是在凌晨的2-4點隔躲。而此時正是幾個批處理任務的時間點摩梧。是否是批處理任務對交易有影響呢?
ok宣旱,通過這兩個小例子仅父,用數(shù)據(jù)分析的方法,一個可以讓測試模型更接近真實環(huán)境浑吟,一個是發(fā)現(xiàn)可能的潛在問題笙纤。當然,隨著業(yè)務的發(fā)展组力,有了更新的數(shù)據(jù)后省容,我們需要重新分析數(shù)據(jù)。重新分析的數(shù)據(jù)等節(jié)奏燎字,可以按壓測的需求進行腥椒,甚至集成到壓測步驟中。構建一個自動化壓測系統(tǒng)可以參考:《構建自動化性能測試系統(tǒng)的實踐》候衍。另外笼蛛,在一些推薦和風控場景下,我們還可以對用戶的屬地信息蛉鹿、年齡信息進行分析滨砍,構建相應信息的交易來看系統(tǒng)的行為。
【重要】更新數(shù)據(jù),進行分析是極為重要的惋戏,它使我們的模型更接近未來幾個月的真實的環(huán)境领追,才可能提前發(fā)現(xiàn)潛在問題,及早應對响逢。
有不足之處绒窑,歡迎指正,共同學習舔亭。
多謝