性能測試 性能測試方案設(shè)計思路總結(jié)

一、需求分析

二芯肤、系統(tǒng)分析

三压鉴、業(yè)務(wù)分析

四油吭、用例設(shè)計

五、測試策略

六歌豺、工具選取

七心包、網(wǎng)絡(luò)分析

八蟹腾、硬件配置

九、性能監(jiān)控

十值戳、實施測試

十一炉爆、結(jié)果分析

一、需求分析

1.測試目的

為什么測鲫凶?目的在于測試系統(tǒng)相關(guān)性能能否滿足業(yè)務(wù)需求衩辟。通常分以下兩種情況:

1)新項目上線

2)老項目優(yōu)化

如果是老項目優(yōu)化艺晴,可考慮是否存有歷史測試方案,如果有可以參考然评,或許可以省事很多狈究。

2.測試對象

要測啥?

測試對象可以歸結(jié)為“業(yè)務(wù)功能”亿眠。測試前纳像,需要了解我們需要測試的業(yè)務(wù)功能(不深入細(xì)節(jié))有哪些,比如“購買商品”憔购、“寄送快遞”岔帽。

有沒有必要測?

需求來源哪里鞋邑?账蓉,有沒有數(shù)據(jù)支撐測試這個需求的必要性铸本?

通常遵堵,可以從以下幾個方面考慮:

1)是否核心功能陌宿,是否要求嚴(yán)格的質(zhì)量

2)是否常用、高頻使用的功能

3)可能占用系統(tǒng)較多資源的功能

4)使用人數(shù)多還是少

5)在線人數(shù)多還是少

3.拆分對象

先從業(yè)務(wù)上來分舶得,實現(xiàn)這個完整的功能包含哪些流程爽蝴、環(huán)節(jié)

舉例:購買商品

登錄->搜索商品->提交訂單->支付訂單->退出

4.指標(biāo)分析

分析性能需求指標(biāo)(如“支持300人并發(fā)登錄”)是否合理

有必要測試這個需求蝎亚,考慮需求指標(biāo)是否合理?有沒有數(shù)據(jù)支撐躺彬?

通常,支撐數(shù)據(jù)可以從以下方面考慮:

1)采樣時間段內(nèi)系統(tǒng)使用人數(shù)

2)采樣時間段內(nèi)系統(tǒng)在線人數(shù)

3)采樣時間段內(nèi)系統(tǒng)(頁面)訪問量

4)采樣時間段內(nèi)請求數(shù)

....

常用分析思路:

12/8法則

2/8法則:80%的業(yè)務(wù)量在20%的時間里完成仿野。這里江解,業(yè)務(wù)量泛指訪問量犁河,請求數(shù),數(shù)據(jù)量等

2)正態(tài)分布

3)按比例倍增

4)響應(yīng)時間2-5-8原則

就是說宾符,一般情況下灭翔,當(dāng)用戶能夠在2秒以內(nèi)得到響應(yīng)時,會感覺系統(tǒng)的響應(yīng)很快哄褒;當(dāng)用戶在2-5秒之間得到響應(yīng)時呐赡,會趕緊系統(tǒng)的響應(yīng)速度還可以骏融;當(dāng)用戶在5-8秒以內(nèi)得到響應(yīng)時,會趕緊系統(tǒng)的速度很慢怀泊,但是還可以接受误趴;而當(dāng)用戶在超過8秒后仍然無法得到響應(yīng)時凉当,會感覺系統(tǒng)糟糕透了,或者認(rèn)為系統(tǒng)已經(jīng)失去響應(yīng)糯而。

注意:這個要根據(jù)實際情況泊窘,有些情況下時間長點也是可以接受的,好比12306

舉例:

某公司后臺監(jiān)控瓜贾,根據(jù)一段時間的采樣數(shù)據(jù)祭芦,分析得出日高峰時段(11:00-14:00)用戶下單請求數(shù)平均為1000,峰值為1500胃夏,根據(jù)這個計算并發(fā)請求數(shù)

時段:3個小時-> 3 x 60 x 60 = 1080s

業(yè)務(wù)量:1500

吞吐量:1500 * 80% / (1080 * 20%) = 5.56請求數(shù)/s

假設(shè)用戶下單遵循正態(tài)分布昌跌,那么并發(fā)請求數(shù)峰值會肯定大于上述估算的吞吐量

注意:

1蚕愤、2/8原則計算的結(jié)果并非在線并發(fā)用戶數(shù),是系統(tǒng)要達(dá)到的處理能力(吞吐量)

2悬嗓、如果要求更高系統(tǒng)性能裕坊,根據(jù)實際情況碍庵,也可以考慮1/9原則或其它更嚴(yán)格的算法

3悟狱、以上估值只是大致的估算挤渐,不是精確值

舉例:

想了下,暫時沒想到啥好的例子得问,大致就說一些涉及到數(shù)據(jù)量的性能測試软免,比如報表統(tǒng)計膏萧,或者是大數(shù)據(jù)挖掘蝌衔,查詢等噩斟,怎么去估算數(shù)據(jù)量孤个?

數(shù)據(jù)生命周期:

一般來說,數(shù)據(jù)都是有一定的生命周期的斥废,時間的選取需要結(jié)合數(shù)據(jù)周期考慮营袜。這里假設(shè)3年后系統(tǒng)性能仍然需要滿足業(yè)務(wù)需求丑罪。

數(shù)據(jù)增長率:

如果是老項目吩屹,可以考慮對應(yīng)功能主表歷史數(shù)據(jù)存放情況

這里假設(shè)按年統(tǒng)計,比如第一年10000免绿,第二年15000擦盾,第三年20000迹卢,第四年25000,那么我們得出誊垢,以第一年為基準(zhǔn)症见,數(shù)據(jù)增長率分別為0.5谋作,1,1.5业栅,每年在上一年的基礎(chǔ)上碘裕,以5000的速度增長

預(yù)估3年后,數(shù)據(jù)增長率為3雷滋,需要測試數(shù)據(jù)量為(1+3)x 10000 = 40000

注意:

1文兢、實際數(shù)據(jù)一般是沒上面舉例那么規(guī)律的姆坚,只能大致估算數(shù)據(jù)增長率。

2兔辅、一些大數(shù)據(jù)量的性能測試除了和數(shù)據(jù)量相關(guān)维苔,還涉及到數(shù)據(jù)分布等懂昂,比如查詢,構(gòu)造數(shù)據(jù)時需要結(jié)合實際沸柔,盡量貼近實際褐澎。

3原探、不同業(yè)務(wù)模塊咽弦,涉及表不一樣胁出,數(shù)據(jù)量要求也是不一樣的全蝶,需要有區(qū)別的對待寺枉。

如果是新項目姥闪,那就比較不確定了砌烁,除非能收集相關(guān)數(shù)據(jù)函喉。

二、系統(tǒng)分析

結(jié)合需求分析中第3點梳毙,分析系統(tǒng)架構(gòu)账锹。從功能實現(xiàn)上來看蔑担,怎么實現(xiàn)這個完整功能的。通常這些業(yè)務(wù)功能操作都對應(yīng)著一個或多個請求(可能能是不同類型的請求鸟缕,比如http, mysql等)懂从,我們要做的是找出這些:

1)請求順序蹲蒲、請求之間相互調(diào)用關(guān)系

2)數(shù)據(jù)流向届搁,數(shù)據(jù)是怎么走的,經(jīng)過哪些組件宴胧、服務(wù)器等

3)預(yù)測可能存在性能瓶頸的環(huán)節(jié)(組件恕齐、服務(wù)器等)

4)明確應(yīng)用類型IO型瞬逊,還是CPU消耗性、內(nèi)存消耗型->弄清楚重點監(jiān)控對象

5)關(guān)注應(yīng)用是否采用多進(jìn)程范删、多線程架構(gòu)->多線程容易造成線程死鎖拷肌、數(shù)據(jù)庫死鎖廓块,數(shù)據(jù)不一致等

6)是否使用集群/是否使用負(fù)載均衡

了解測試環(huán)境部署和生產(chǎn)環(huán)境部署差異,是否按1:1的比例部署

通常建議測試時先不考慮集群昔汉,采用單機測試靶病,測試通過后再考慮使用集群娄周,這樣有個比較沪停,比較能說明問題

參考閱讀“淺談web網(wǎng)站架構(gòu)演變過程”:http://blog.csdn.net/qiaqia609/article/details/50809383

三木张、業(yè)務(wù)分析

1)明確要測試的功能業(yè)務(wù)中,功能業(yè)務(wù)占比鹃彻,重要程度蛛株。

目的在于

<1>明確重點測試對象育拨,安排測試優(yōu)先級

<2>建模至朗,混合場景中锹引,虛擬用戶資源分配,針對不同業(yè)務(wù)功能施加不同的負(fù)載吨艇。

2)明確下“需求分析-指標(biāo)分析”中相關(guān)業(yè)務(wù)功能所需基礎(chǔ)數(shù)據(jù)及數(shù)據(jù)量問題东涡,因為那塊需求分析時可能只是大致估算下倘待,評估指標(biāo)是否合理凸舵,需要認(rèn)真再分析下

四啊奄、用例設(shè)計

1)用例設(shè)計

通常是基于場景的測試用例設(shè)計

<1>單業(yè)務(wù)功能場景

運行測試期間菇夸,所有虛擬用戶只執(zhí)行同一種業(yè)務(wù)功能某個環(huán)節(jié)、操作

<2>混合業(yè)務(wù)功能場景

運行測試期間鞠眉,部分虛擬用戶執(zhí)行某種業(yè)務(wù)的某個環(huán)節(jié)操作择诈,部分虛擬用戶執(zhí)行該業(yè)務(wù)功能的其它環(huán)節(jié)

或者

運行測試期間吭从,部分虛擬用戶執(zhí)行某種業(yè)務(wù)功能涩金,部分虛擬用戶執(zhí)行其它業(yè)務(wù)功能

注:這里用例沒說到多少用戶去跑,跑多久等副渴,這里只是把他當(dāng)作相同場景用例下的的一組組測試數(shù)據(jù)了煮剧。

2)事務(wù)定義

根據(jù)用例合理的定義事務(wù)勉盅,方便分析耗時(特別是混合業(yè)務(wù)功能場景測試),進(jìn)而方便分析瓶頸草娜。

比如挑胸,購買商品,我們可以把下訂單定義為一個事務(wù)宰闰,把支付也定義為一個事務(wù)茬贵。

3)場景監(jiān)控對象

針對每條用例,結(jié)合“系統(tǒng)分析”第4)點移袍,明確可能的壓力點(比如數(shù)據(jù)庫解藻、WEB服務(wù)器),需要監(jiān)控的對象葡盗,比如tps,耗時戳粒,CPU路狮,內(nèi)存,I/O等

五蔚约、測試策略

1)先進(jìn)行混合業(yè)務(wù)功能場景的測試奄妨,在考慮進(jìn)行測試單業(yè)務(wù)功能場景的測試

2)負(fù)載測試->壓力測試->穩(wěn)定性測試->強度測試

注:如果測試穩(wěn)定性穆壕,時間建議至少8小時铝噩;

3)逐步加壓

比如開始前5分鐘,20個用戶蝇刀,然后每隔5分鐘树枫,增加20個用戶直焙。

好處:不僅比較真實的模擬現(xiàn)實環(huán)境,而且在性能指標(biāo)比較模糊砂轻,且不知道服務(wù)器處理能力的情況下奔誓,可以幫我們確定一個大致基準(zhǔn),因為通常情況下搔涝,隨著用戶數(shù)的不斷增加厨喂,服務(wù)器壓力也會隨著增加,如果服務(wù)器不夠強大庄呈,那么就會出現(xiàn)不能及時處理請求蜕煌、處理請求失敗的情況下,對應(yīng)的運行結(jié)果圖形中诬留,運行曲線也會出現(xiàn)對應(yīng)的形態(tài)斜纪,比如從原本程一條穩(wěn)定直線的情況贫母,到突然極限下降、開始上下波動等盒刚,通過分析我們就能得出服務(wù)器大致處理能力腺劣,供后續(xù)測試參考。

4)單點并發(fā)

比如使用集合點伪冰,單獨針對某個環(huán)節(jié)的并發(fā)測試,通常是針對某個環(huán)節(jié)的性能調(diào)優(yōu)時使用樟蠕。

常識:

a)負(fù)載測試

保證系統(tǒng)能正常運行(通常是滿足某些系統(tǒng)性能指標(biāo))的前提下贮聂,讓被測對象承擔(dān)不同的工作量,以評估被測對象的最大處理能力及存在缺陷而進(jìn)行的測試

b)壓力測試

不保證系統(tǒng)能否正常運行的前提下寨辩,讓被測對象承擔(dān)不同工作量吓懈,以評估被測對象能提供的最大處理能力及存在缺陷而進(jìn)行的測試

c)穩(wěn)定性測試

測試系統(tǒng)的長期穩(wěn)定運行的能力。同疲勞強度測試的區(qū)別是靡狞,穩(wěn)定性測試的壓力強度較小耻警,一般趨向于客戶現(xiàn)場日常狀態(tài)下的壓力強度,當(dāng)然在通過時間不能保證穩(wěn)定性的狀態(tài)下甸怕,需要加大壓力強度來測試甘穿,此時的壓力強度則會高于正常值。

d)強度測試

通常模擬系統(tǒng)在較差梢杭、異常資源配置下運行温兼,如人為降低系統(tǒng)工作環(huán)境所需要的資源,如網(wǎng)絡(luò)帶寬,系統(tǒng)內(nèi)存,數(shù)據(jù)鎖等等,以評估被測對象在資源不足的情況下的工作狀態(tài)

注:疲勞強度測試是一類特殊的強度測試,主要測試系統(tǒng)長時間運行后的性能表現(xiàn)武契,例如7x24小時的壓力測試募判。

六、工具選取

1)協(xié)議分析

一般性能測試工具都是基于協(xié)議開發(fā)的咒唆,所以先要明確應(yīng)用使用的協(xié)議

2)工具選取

1)類型

開源工具届垫、收費工具、自研工具

2)分析工具

<1>理解工具實現(xiàn)原理

<2>采用用異步還是同步

常識:

1.同步請求:發(fā)出一個調(diào)用請求全释,在沒有得到結(jié)果之前装处,該調(diào)用就不返回。

2.異步請求:發(fā)出一個調(diào)用請求浸船,在沒有得到請求結(jié)果之前符衔,該調(diào)用可立即返回。該調(diào)用請求的處理者在處理完成后通過狀態(tài)糟袁、通知和回調(diào)等來通知調(diào)用者判族。

<3>使用長連接還是短連接

七、軟件配置

1)操作系統(tǒng)

內(nèi)核版本项戴、32 or 64位?

2)應(yīng)用版本

應(yīng)用版本要和線上保持一致形帮,特別是中間件、組件等的版本,因為不同版本辩撑,其性能可能不一樣

3)參數(shù)配置

<1>負(fù)載均衡界斜、反向代理參數(shù)配置

<2> Web服務(wù)器參數(shù)配置

<3>數(shù)據(jù)庫服務(wù)器參數(shù)配置

八、網(wǎng)絡(luò)分析

1)網(wǎng)絡(luò)路由

通常為了排除網(wǎng)絡(luò)型瓶頸合冀,通常建議在局域網(wǎng)下進(jìn)行測試各薇。

通常,這里我的分析思路是這樣的:

<1>檢查hosts文件的配置

從終端壓測機(負(fù)載生成機)開始君躺,到請求目的服務(wù)器器峭判,機器的hosts文件配置

通常,hosts文件位于如下:

Windows:C:\Windows\System32\drivers\etc\hosts

Unix/Linux:/etc/hosts

小常識:

1棕叫、通常域名訪問站點林螃,首先要通過DNS域名服務(wù)器把網(wǎng)絡(luò)域名(形如www.xxx.com)解析成XXX.XXX.XXX.XXX的IP地址,然后繼續(xù)后續(xù)訪問俺泣。

2疗认、hosts存放了域名和ip地址的映射關(guān)系,如下

使用hosts可以加快域名解析伏钠,在進(jìn)行DNS請求以前横漏,系統(tǒng)會先檢查自己的hosts文件中是否有這個地址映射關(guān)系,如果有則把域名解析為映射的IP地址熟掂,不請求網(wǎng)絡(luò)上的DNS服務(wù)器绊茧,如果沒有再向已知的DNS服務(wù)器提出域名解析。也就是說hosts的請求級別比DNS高打掘,可加快域名解析华畏。

<2>檢查DNS配置

不同DNS,其速度和準(zhǔn)確率是不一樣的尊蚁,比如114.114.114.114速度遠(yuǎn)比8.8.8.8快亡笑,如果有用到DNS(特別是壓測機),需要考慮下是否適當(dāng)

<3>確保路由正確設(shè)置

2)網(wǎng)絡(luò)帶寬

如果沒條件在局域網(wǎng)下測試横朋,可能需要估算所需大致帶寬仑乌。

如果測試時是基于UI層操作的操作,那么得估算頁面平均大小琴锭,這個可以通過瀏覽器自帶工具查看打開單個頁面服務(wù)器返回的請求數(shù)據(jù)大小晰甚。如果是測試時是基于接口層的請求測試,可以通過工具查看服務(wù)器響應(yīng)數(shù)據(jù)大小决帖。

然后根據(jù)采集的頁面PV峰值厕九、請求數(shù)峰值進(jìn)行計算。

假設(shè)在PV峰值地回、請求數(shù)峰值= 1000扁远,峰值時段:8:00 - 12:00俊鱼,平均頁面、請求大小200k

帶寬= 1000 x 80% / (20% x 4 x 3600s) x 200KB x /1024 x 8bit ,單位MBps

注意:這里涉及到瀏覽器緩存等因素畅买,估值可能不準(zhǔn)并闲,大致估算。

九谷羞、硬件配置

1)CPU

型號帝火,頻率,核數(shù)

2)內(nèi)存

3)磁盤

不同磁盤類型湃缎,讀寫速率不一樣

4)網(wǎng)卡

不同網(wǎng)卡犀填,其傳輸速率也不一樣

注意:硬件配置最好和生產(chǎn)環(huán)境的配置保持一致

十、性能監(jiān)控

注意:

1)這里監(jiān)控不僅僅是服務(wù)器自身性能指標(biāo)監(jiān)控雁歌,如cpu宏浩,還包括事務(wù)耗時監(jiān)控等

2)需要記錄測試前各個性能指標(biāo)數(shù)據(jù)知残,方便后續(xù)測試對比

十一靠瞎、實施測試

十二、結(jié)果分析

如果是性能調(diào)優(yōu)求妹,還需同上一個版本的性能測試結(jié)果對比

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乏盐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子制恍,更是在濱河造成了極大的恐慌父能,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件净神,死亡現(xiàn)場離奇詭異何吝,居然都是意外死亡,警方通過查閱死者的電腦和手機鹃唯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門爱榕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坡慌,你說我怎么就攤上這事黔酥。” “怎么了洪橘?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵跪者,是天一觀的道長。 經(jīng)常有香客問我熄求,道長渣玲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任弟晚,我火速辦了婚禮柜蜈,結(jié)果婚禮上仗谆,老公的妹妹穿的比我還像新娘。我一直安慰自己淑履,他們只是感情好隶垮,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著秘噪,像睡著了一般狸吞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上指煎,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天蹋偏,我揣著相機與錄音,去河邊找鬼至壤。 笑死威始,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的像街。 我是一名探鬼主播黎棠,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼镰绎!你這毒婦竟也來了脓斩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤畴栖,失蹤者是張志新(化名)和其女友劉穎随静,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吗讶,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡燎猛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了照皆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片重绷。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖纵寝,靈堂內(nèi)的尸體忽然破棺而出论寨,到底是詐尸還是另有隱情,我是刑警寧澤爽茴,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布葬凳,位于F島的核電站,受9級特大地震影響室奏,放射性物質(zhì)發(fā)生泄漏火焰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一胧沫、第九天 我趴在偏房一處隱蔽的房頂上張望昌简。 院中可真熱鬧占业,春花似錦、人聲如沸纯赎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽犬金。三九已至念恍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晚顷,已是汗流浹背峰伙。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留该默,地道東北人瞳氓。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像栓袖,于是被迫代替她去往敵國和親匣摘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容