說明
文章內(nèi)容來源 高樓老師-極客時間-《性能測試實戰(zhàn)30講》
怎么設(shè)計參數(shù)化
參數(shù)化數(shù)據(jù)的疑問根據(jù)我的經(jīng)驗君丁,在參數(shù)化測試數(shù)據(jù)的獲取和考慮上印蔗,我們一般會有以下四個常見的疑問扼倘。
- 參數(shù)化數(shù)據(jù)應(yīng)該用多少數(shù)據(jù)量纠拔?
- 參數(shù)化數(shù)據(jù)從哪里來诡曙?
- 參數(shù)多與少的選擇對系統(tǒng)壓力有什么影響?
- 參數(shù)化數(shù)據(jù)在數(shù)據(jù)庫中的直方圖是否均衡床嫌?
參數(shù)化數(shù)據(jù)量
根據(jù)高老師的文章,
1缆娃、數(shù)據(jù)量的多少可以先自己做一次基準(zhǔn)測試郭毕,根據(jù)對應(yīng)的tps來進(jìn)行估算:例如tps=100傻挂,如果測試的場景是需要運行5min,且每個請求的參數(shù)不可重復(fù),那需要的數(shù)據(jù)量為:560100 = 30000;
若數(shù)據(jù)部分可重復(fù),就需要看我們測試過程中,線程組和循環(huán)的設(shè)計了:
圖片來源:高老師極客時間《性能測試實戰(zhàn)30講》
以上僅僅為技術(shù)層面的評估费变,在真實進(jìn)行測試時滑负,我們還需要參考業(yè)務(wù)場景啄骇,綜合設(shè)計。以下業(yè)務(wù)場景內(nèi)容來源:
高老師極客時間《性能測試實戰(zhàn)30講》
場景一:
用戶在早上登錄系統(tǒng)之后橡类,一直在系統(tǒng)中帶著登錄 session 做業(yè)務(wù)操作顾画,并且不會退出寓盗,只有在下班時才退出系統(tǒng)。當(dāng)我們要模擬一天中的業(yè)務(wù)峰值時窜醉,可以這樣配置:
在這樣的場景中,所需要的數(shù)據(jù)量就等于線程數(shù)量侠碧。
參數(shù)化數(shù)據(jù)量=線程數(shù)
場景二:
電商中弄兜,用戶購買商品盛垦。
在常見的促銷活動中蝶俱,用戶購買商品,很少會有一個用戶不停的循環(huán)購買商品宾尚,這個時候灶似,就需要按照業(yè)務(wù)處理能力來進(jìn)行估算數(shù)據(jù)量了。
在這種場景中瑞你,用戶是不允許重復(fù)的酪惭,所需要的數(shù)據(jù)量就等于請求量。
參數(shù)化數(shù)據(jù)=TPS請求時間(單位s)*
參數(shù)化數(shù)據(jù)來源
參數(shù)化數(shù)據(jù)的來源者甲,有些是數(shù)據(jù)庫有保存的春感,比如一些查詢操作,我們可以直接從數(shù)據(jù)庫取出(根據(jù)業(yè)務(wù)來判斷是否需要脫敏)虏缸,將其放入到參數(shù)化文件中鲫懒;
有些數(shù)據(jù)是數(shù)據(jù)庫不存在的,比如一些新增操作刽辙,這時需要我們自己通過工具進(jìn)行數(shù)據(jù)的生成窥岩,并將數(shù)據(jù)放入到參數(shù)化文件中,用于測試宰缤。
以下為高老師對數(shù)據(jù)來源的說明:
參數(shù)化數(shù)據(jù)從大體上劃分颂翼,主要有兩個來源。
第一類用戶輸入的數(shù)據(jù)在后臺數(shù)據(jù)庫中已存在慨灭,比如我們上面示例中的用戶數(shù)據(jù)朦乏。
這類數(shù)據(jù)的特點是什么呢?
* 存在后臺數(shù)據(jù)庫中氧骤;
*需要用戶主動輸入呻疹;
*用戶輸入的數(shù)據(jù)會和后臺數(shù)據(jù)庫中的數(shù)據(jù)做比對。
這類數(shù)據(jù)必須查詢數(shù)據(jù)庫之后再參數(shù)化到工具中筹陵。
第二類用戶輸入的數(shù)據(jù)在后臺數(shù)據(jù)庫中不存在刽锤。
在業(yè)務(wù)流中,這些數(shù)據(jù)會 Insert 或 Update 到數(shù)據(jù)庫中惶翻。
這類數(shù)據(jù)的特點是什么呢姑蓝?
*數(shù)據(jù)庫中原本不存在這些數(shù)據(jù);
*在腳本執(zhí)行成功后會將這些數(shù)據(jù) insert 或 update 到數(shù)據(jù)庫中吕粗;
*每個用戶輸入的數(shù)據(jù)可能相同纺荧,也可能不同,這取決于業(yè)務(wù)特點。
這類數(shù)據(jù)必須通過壓力工具做參數(shù)化宙暇,同時也必須滿足業(yè)務(wù)規(guī)則输枯。
總之,參數(shù)化時需要確保數(shù)據(jù)來源以保證數(shù)據(jù)的有效性占贫,千萬不能隨便造數(shù)據(jù)桃熄。
這類數(shù)據(jù)應(yīng)該滿足兩個條件:
*要滿足生產(chǎn)環(huán)境中數(shù)據(jù)的分布;
*要滿足性能場景中數(shù)據(jù)量的要求型奥。
參數(shù)化數(shù)據(jù)的多與少對系統(tǒng)的影響
關(guān)于數(shù)據(jù)量的多少瞳收,會影響到測試結(jié)果,同時測試結(jié)果一定要表明是基于多少的數(shù)據(jù)量厢汹,得出當(dāng)前的測試結(jié)果螟深。
參數(shù)取得過多,對系統(tǒng)的壓力就會大烫葬; 參數(shù)取得過少界弧,不符合真實場景中的數(shù)據(jù)量,則無法測試出系統(tǒng)真實的壓力搭综。
參數(shù)化數(shù)據(jù)是否均衡
數(shù)據(jù)是否均衡垢箕,主要是關(guān)于業(yè)務(wù)相關(guān)的數(shù)據(jù),我們需要明確客戶的業(yè)務(wù)獲取真實的數(shù)據(jù)兑巾。
比如我們在將某id值設(shè)置為10000条获,而實際情況下,此id值大多為300左右蒋歌,此時就會影響到系統(tǒng)的處理能力月匣,最終的TPS就會有偏差。
在涉及到業(yè)務(wù)處理操作時奋姿,對數(shù)據(jù)進(jìn)行參數(shù)化之前锄开,先看一下數(shù)據(jù)庫,已有的數(shù)據(jù)分布是怎樣的称诗。如果是一個新的系統(tǒng)萍悴,可同產(chǎn)品等業(yè)務(wù)人員進(jìn)行確認(rèn),而后進(jìn)行數(shù)據(jù)設(shè)計寓免。如果時間允許癣诱,可分別設(shè)計不同的參數(shù),進(jìn)行壓測袜香,統(tǒng)計后作為此次測試的結(jié)果撕予。