性能測試的需求分析
性能測試最開始的需求分析工作細(xì)致與否,與后面的性能測試結(jié)果息息相關(guān)。需求分析是一個(gè)繁雜的過程,它并非我們想象的那么簡單。做需求分析除了要對(duì)系統(tǒng)的業(yè)務(wù)非常了解,還需要有深厚的性能測試知識(shí),這樣才能夠挖掘分析出真正的性能測試需求。
很多時(shí)候,性能測試的需求是比較模糊的,需要性能測試工程師去挖掘和分析。在工作中,作者經(jīng)常被問到的一個(gè)問題是: 應(yīng)該設(shè)置多少個(gè)JMeter線程去壓測? 還有不懂技術(shù)的客戶提出想要做性能測試,但是沒有提供指標(biāo),只說系統(tǒng)支持100萬用戶。這些都是我們?nèi)粘9ぷ髦兴究找姂T的泛泛的需求
此時(shí),我們可以通過“3步法”對(duì)產(chǎn)品進(jìn)行正確的需求分析和用戶模型建立。
一、剖析被測系統(tǒng)
(1) 了解系統(tǒng)架構(gòu)。首先我們需要與開發(fā)人員溝通,了解清楚系統(tǒng)的部署架構(gòu)采用了哪些中間件、數(shù)據(jù)庫、容器、緩存等,以及它們之間的架構(gòu)關(guān)系,并畫出對(duì)應(yīng)的網(wǎng)絡(luò)拓?fù)鋱D和系統(tǒng)部署架構(gòu)圖
(2) 了解業(yè)務(wù)模型。首先我們需要采用用戶行為分析,分析用戶使用產(chǎn)品的習(xí)慣,確定系統(tǒng)的典型業(yè)務(wù)及發(fā)生時(shí)間。很多大型系統(tǒng)的業(yè)務(wù)使用都有流量高峰。這類系統(tǒng)業(yè)務(wù)使用的流量高峰可能出現(xiàn)在天、一月、一年中的某個(gè)時(shí)間點(diǎn)上或時(shí)間段內(nèi)。對(duì)于新浪、網(wǎng)易等門戶網(wǎng)站,在周一到周五的早上剛上班時(shí),可能使用郵件系統(tǒng)的用戶比較多,而在中午休息時(shí)間瀏覽熱點(diǎn)新聞的用戶較多;對(duì)于一般的OA系統(tǒng),早上閱讀公告的用戶較多,在其他時(shí)間可能沒有用戶使用系統(tǒng)或者僅有少量的用戶,比如秘書或領(lǐng)導(dǎo)使用系統(tǒng)起草和審批公文;對(duì)于電信繳費(fèi)系統(tǒng),在月末很可能會(huì)出現(xiàn)用戶集中使用繳費(fèi)業(yè)務(wù)的情況。
然后是調(diào)研歷史統(tǒng)計(jì)數(shù)據(jù),通過分析數(shù)據(jù)確定熱點(diǎn)模塊。如果產(chǎn)品已上線,可以統(tǒng)計(jì)和分析線上歷史數(shù)據(jù)。對(duì)于web類產(chǎn)品,我們可以獲取和分析獨(dú)立用戶數(shù)、頁面訪問量和最大在線用戶數(shù);對(duì)于后臺(tái)類產(chǎn)品,則可以分析如Nginx的Access log,從而得出最大的訪問量對(duì)于數(shù)據(jù)庫類產(chǎn)品,我們還可以分析出熱點(diǎn)SQL等。如果產(chǎn)品未上線有同類產(chǎn)品參考,可以參考公司內(nèi)同類產(chǎn)品或者同行的同類產(chǎn)品進(jìn)行熱點(diǎn)模塊預(yù)估,雖然不能完全照搬,但可以根據(jù)業(yè)務(wù)增長數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,輸出用戶訪問熱點(diǎn)軌跡圖。
二、選取性能測試點(diǎn)
選取性能測試點(diǎn)是性能測試需求分析中非常重要的一個(gè)環(huán)節(jié)。面對(duì)一個(gè)功能繁雜的系統(tǒng),要設(shè)計(jì)出有效的測試場景,最大程度上覆蓋系統(tǒng)的性能問題和瓶頸,需要較多的經(jīng)驗(yàn)積累。目前我們可以按照以下原則來進(jìn)行性能測試點(diǎn)的選取:
(1)核心業(yè)務(wù)模塊,例如支付業(yè)務(wù)、核心算法;
(2)并發(fā)量較高的業(yè)務(wù)模塊;
(3) 邏輯較復(fù)雜的業(yè)務(wù)模塊
(4) 有復(fù)雜數(shù)據(jù)庫操作或事務(wù)的模塊;
(5) 有較頻繁的磁盤讀寫操作的模塊
然后根據(jù)不同類型的系統(tǒng)應(yīng)用,選取的原則也可以進(jìn)一步細(xì)分。
對(duì)于Web應(yīng)用,其性能測試點(diǎn)的選取原則為:
(1)依據(jù)業(yè)務(wù)數(shù)據(jù)統(tǒng)計(jì)中幾種典型業(yè)務(wù)的用戶使用數(shù)比例:
(2) 調(diào)用頻繁、占用空間大的數(shù)據(jù)庫表的交易,
(3) 占用最大存儲(chǔ)空間或其他資源的交易;
(4) 對(duì)磁盤、常駐內(nèi)存的數(shù)據(jù)過度訪問的交易
對(duì)于后臺(tái)類應(yīng)用,其性能測試點(diǎn)的選取原則為:
(1) 讀 (查詢)、寫 (增刪改) 、讀寫 (增刪改查) 合的業(yè)務(wù)模塊;
(2)配置服務(wù)器的業(yè)務(wù)模塊;
(3)功能的實(shí)現(xiàn)方式,如同步和異步,輪詢和notify等:
(4) 分布式業(yè)務(wù)模塊,如單客戶端和多客戶端,單節(jié)點(diǎn)和多節(jié)點(diǎn);
(5) 數(shù)據(jù)規(guī)模,如數(shù)據(jù)庫已存在大量記錄,存儲(chǔ)可用空間少:
(6)緩存,如對(duì)文件系統(tǒng)緩存和數(shù)據(jù)庫緩存的利用等;
(7)負(fù)載均衡,如多節(jié)點(diǎn)情況下是否負(fù)載均衡。
對(duì)于分布式數(shù)據(jù)庫,其性能測試點(diǎn)的選取原則為:
(1) 數(shù)據(jù)庫讀寫混合業(yè)務(wù)模塊;
(2) 數(shù)據(jù)庫之間數(shù)據(jù)同步
(3) SQL語句;
(4) 數(shù)據(jù)規(guī)模4
比外,當(dāng)系統(tǒng)應(yīng)用包含長連接消息服務(wù)時(shí),其性能測試點(diǎn)的選取原則為:
(1)單機(jī)能支撐的最大并發(fā)長連接數(shù);
(2)并發(fā)一定數(shù)量的用戶時(shí)的消息推送情況,包括消息到達(dá)時(shí)間、消息丟失率等
三、量化測試目標(biāo)
梳理出來性能測試場景后,就需要進(jìn)一步明確各個(gè)場景的測試指標(biāo),而大部分的產(chǎn)品經(jīng)理給出的指標(biāo)是不完整的,通常情況下可以結(jié)合采集的數(shù)據(jù)和二八定律進(jìn)行具體量化,讓性能測試指標(biāo)更明確。
下面舉個(gè)例子來說明性能測試指標(biāo)量化方法。
例如,某互聯(lián)應(yīng)用,預(yù)計(jì)推廣群體達(dá)500萬人,用戶使用應(yīng)用的時(shí)間是每天早上8點(diǎn)至晚上8點(diǎn),共12h。
分析建模過程如下:
(1)注冊(cè)用戶轉(zhuǎn)化率預(yù)估為5%,那么注冊(cè)用戶數(shù)為5000000x5%=250000
(2)高峰時(shí)段 (比如有活動(dòng)時(shí)) 每日在線用戶活躍率預(yù)估為10%,那么活躍用戶數(shù)為250000x 10%=25000
(3)用戶常用下單到成功觸發(fā)20個(gè)請(qǐng)求,總請(qǐng)求量為25000x20=500000
(4)利用二八定律計(jì)算,得出的吞吐量為500000x0.8/(12x3600x0.2)=46.7個(gè)每秒
若是更新需求,如發(fā)布新產(chǎn)品,定時(shí)搶購優(yōu)惠活動(dòng) (某日10點(diǎn)開始搶購,12點(diǎn)結(jié)束,共2h)。
重新建模如下:
(1)注冊(cè)用戶數(shù)為25萬不變
(2)高峰時(shí)段在線用戶在線率預(yù)估為20%,那么這2h的在線用戶數(shù)為250000x20%=50000
(3)用戶常用下單到成功觸發(fā)20個(gè)請(qǐng)求,總請(qǐng)求量為50000x20=1000000
(4)利用二八定律計(jì)算,得出的吞吐量為1000000x0.8/(2x3600x0.2)=555.6個(gè)每秒
由此可見,評(píng)估出來的TPS值和需求業(yè)務(wù)模型息息相關(guān)。
在性能測試的前期,通過上述“3步法”整理分析的詳盡程度將直接決定后續(xù)性能測試的有效性和準(zhǔn)確性。
注意
在評(píng)定服務(wù)器的性能時(shí),應(yīng)該結(jié)合TPS和并發(fā)用戶數(shù),以TPS為主‘并發(fā)用戶數(shù)為輔來衡量系統(tǒng)的性能。如果必須要并發(fā)用戶數(shù)來衡量的話,則需要一個(gè)前提,那就是交易在多長時(shí)間內(nèi)完成,因此只用并發(fā)用戶數(shù)來衡量系統(tǒng)的性能沒太大的意義。
提示
- 響應(yīng)時(shí)間:根據(jù)國外的資料,一般操作的響應(yīng)時(shí)間為2秒、5秒和8秒,即2秒內(nèi)為優(yōu)秀、5秒內(nèi)為良好、8秒內(nèi)為可接受;對(duì)于其它一些特殊的操作,如上傳、下載,可以依據(jù)用戶體驗(yàn)的情況延長響應(yīng)時(shí)間。
- 二八定律:又稱帕累托效應(yīng),例如,一些系統(tǒng)一天中80%的訪問量集中在20%的時(shí)間內(nèi)。