最近群里來(lái)了很多新朋友,,大都是新做測(cè)試或準(zhǔn)備做測(cè)試工作的,見(jiàn)好多新來(lái)上來(lái)就問(wèn)關(guān)于LoadRunner的使用上的問(wèn)題,。對(duì)性能測(cè)試的理解也不是太清楚,。公司說(shuō)讓他們對(duì)系統(tǒng)做個(gè)性能測(cè)試,他們聽(tīng)說(shuō)LoadRunner是做性能測(cè)試的,,在網(wǎng)上找了點(diǎn)了LoadRunner的使用說(shuō)明就開(kāi)始對(duì)系統(tǒng)下刀了,。對(duì)于一些大公司的專(zhuān)業(yè)性能測(cè)試人員來(lái)說(shuō),這個(gè)很可笑,,但這是種情況是存在的,,我當(dāng)初也到公司時(shí)也這么干的。 那時(shí)還真把性能測(cè)報(bào)告給整出來(lái)了,,現(xiàn)在看來(lái)那報(bào)告沒(méi)有任何意義,。雖然,雖然對(duì)現(xiàn)在的我來(lái)說(shuō)性能測(cè)試也只是只懂皮毛,。但還是希望通過(guò)我這篇文章能讓那些新手們對(duì)于性能測(cè)試有個(gè)入門(mén)的了解,。
----//理發(fā)店模式
關(guān)于理解性能,記得我那時(shí)是看了“《LoadRunner沒(méi)有告訴你的》之三---理發(fā)店模式”不管你有沒(méi)有看過(guò),,我這重提一下理發(fā)店模式,。
前提: 1. 一個(gè)理發(fā)店有三位理發(fā)師傅 2. 每位理發(fā)師傅理一個(gè)發(fā)需要一小時(shí) 3. 顧客都很忙,從進(jìn)理發(fā)店起最多只等三小時(shí)(等待時(shí)間+理發(fā)時(shí)間),,如果三小時(shí)后還沒(méi)輪到自己理發(fā),,立馬走人。 思考: 這里我們來(lái)理解“最佳用戶數(shù)”和“最大用戶數(shù)”,。 最佳用戶數(shù): 理發(fā)店的最佳狀態(tài),,理發(fā)店收入最多(理發(fā)師傅沒(méi)有休息時(shí)間,一直在理發(fā)),,顧客滿意度最高(顧客隨時(shí)到隨時(shí)理,,無(wú)需要等待)。在一個(gè)時(shí)間點(diǎn)來(lái)說(shuō),,三個(gè)理發(fā)師傅服務(wù)于三位顧客,,那么這個(gè)最佳用戶數(shù)是三。 最大用戶數(shù): 理發(fā)店的最大承受狀態(tài),,理發(fā)店收入最多(理發(fā)師傅沒(méi)有休息時(shí)間,,一直在理發(fā)),顧客的最大忍耐度(來(lái)的顧客等待+理發(fā)需要等上三個(gè)小時(shí)),。 假如理發(fā)店生意非常好,,早上一開(kāi)門(mén)一下子來(lái)了一群顧客(很多),,A、B,、C三位顧客先理,,D、E,、F顧客需要等待一小時(shí)才能得到理發(fā)師傅的服務(wù),,G、H,、I三位顧客等待了兩小時(shí)才得到服務(wù),,后面排隊(duì)的J、K,、L.....等顧客,,已經(jīng)等了三小時(shí)還沒(méi)得到服務(wù),因?yàn)檫@已經(jīng)得達(dá)到了他們等待的極限,,所以后他們氣憤和無(wú)奈離開(kāi),。 當(dāng)然,理發(fā)店還會(huì)不斷的來(lái)新的顧客,,不斷有等了三小時(shí)而沒(méi)有得到服務(wù)的顧客離開(kāi),,但對(duì)于理發(fā)店而言,他們?cè)谝粋€(gè)時(shí)間點(diǎn)上,,能服務(wù)的最大用戶數(shù)是九(三位正在接受服務(wù),、三位已經(jīng)等待一小時(shí),三們已經(jīng)等待兩小時(shí)),。 對(duì)于最大用戶數(shù),,需要注意的兩點(diǎn): 1. 在理發(fā)店里很大,可以容納很多位顧客(大于9),,總有一部分在這里等待了三小時(shí)而沒(méi)有得到服務(wù)離開(kāi),,不要把等待了三小而沒(méi)有得到服務(wù)的顧客納入最大用戶數(shù)里。 2. 假如理發(fā)店很小,,最多只能容納六位顧客,,當(dāng)?shù)谄邆€(gè)顧客來(lái)時(shí),雖然,,我們知道他只需要等待兩小時(shí)就可得到服務(wù)(這個(gè)時(shí)間是他可以接受的等待時(shí)間),,但由于理發(fā)店容量有量,這第七個(gè)顧客只有改天再來(lái)了,。 關(guān)于理發(fā)店原理,詳細(xì)請(qǐng)瀏覽http://www.cnblogs.com/jackei/archive/2006/11/20/565527.html
不知道通過(guò)上面對(duì)理發(fā)店的分析,,你對(duì)性能有了一些眉目,。假如理發(fā)店相當(dāng)于我們的系統(tǒng)的話,,顧客就我們向服務(wù)器所發(fā)送的請(qǐng)求,最佳用戶數(shù)和最大用戶數(shù)是我們衡量一個(gè)系統(tǒng)的處理能力的一種方法,。
----//要帳的模式
注:上圖是自己找來(lái)修改的,,湊合著看吧!呵呵 這個(gè)是我在給一朋友說(shuō)瀏覽器與服務(wù)器之間交流時(shí)用到的例子,,感覺(jué)比容易理解,,所以拿來(lái)分享一下,。 假設(shè): 1. A,、B、C三個(gè)人,。 2. C欠A錢(qián)(這里不考慮多少) 3. B是專(zhuān)門(mén)要賬 思考: 瀏覽器與服務(wù)器的信息傳遞次數(shù): A對(duì)B說(shuō),,C欠我錢(qián),,你幫我去要,。B接到指令后就去找C要錢(qián)。 B對(duì)C說(shuō),,給我20塊錢(qián)。 C說(shuō),,沒(méi)有。 B對(duì)C說(shuō),,給我10塊錢(qián),。 C說(shuō),沒(méi)有,。 B對(duì)C說(shuō),給我5塊錢(qián),。 ......... 最后,B回來(lái)對(duì)A說(shuō),,哎呀媽呀,C那丫的忒摳門(mén)了,,一分錢(qián)沒(méi)有,。 對(duì)于A來(lái)講,,只是來(lái)說(shuō),,它只是讓B問(wèn)C要錢(qián),,具體的B與C之間交互了幾次,A是不知道的,,它所知道的就是B返回給它的結(jié)果,,C一分錢(qián)沒(méi)有。
瀏覽器與服務(wù)器傳遞數(shù)據(jù)的大?。?/span> 還是上面的過(guò)程,,A對(duì)B說(shuō),C欠我錢(qián),,你幫我去要,。B接到指令后就去找C要錢(qián)。 B對(duì)C說(shuō),,給我20萬(wàn)塊錢(qián),。 C說(shuō),沒(méi)問(wèn)題,,沒(méi)支票,,只有1元硬幣。 .......... B終于把錢(qián)拿回來(lái)給A,。A很納悶,,怎么去了那么久,B委屈的說(shuō),,丫的,,C給我整了一堆硬幣,太重了,,路上走的慢,,都快累死我了。 對(duì)于A來(lái)講,,只是來(lái)說(shuō),,它只是讓B問(wèn)C要錢(qián),誰(shuí)知道C給的是支票還是硬幣,。所以,,B去要錢(qián)消耗的時(shí)間就很長(zhǎng)。
所以,,要想提高瀏覽器對(duì)服務(wù)器的訪問(wèn)速度,,應(yīng)該減少數(shù)據(jù)傳遞次數(shù)與數(shù)據(jù)傳遞的大小,。 這樣就很自然的引出了瀏覽器的cookie A在C哪里存了5毛錢(qián),。 A對(duì)B說(shuō),,我在C哪里存了5毛錢(qián),,你去拿來(lái)我看看,。B跑去問(wèn)C要了5毛錢(qián)回來(lái)給A看。 過(guò)了一會(huì),,A又對(duì)B說(shuō),,我在C哪里存了5毛錢(qián),,你去拿來(lái)我看看,。B跑去問(wèn)C要了5毛錢(qián)回來(lái)給A看。 過(guò)了一會(huì),,A又對(duì)B說(shuō),,我在C哪里存了5毛錢(qián),,你去拿來(lái)我看看。這次C煩了,對(duì)B說(shuō),你把錢(qián)放自己口袋里吧,,等A要的時(shí)候,你來(lái)問(wèn)我5毛的人民幣有沒(méi)有改版,,沒(méi)有改版的話,,你就直接把口袋里的5毛錢(qián)給A看就行了,。
在這里A就相當(dāng)于我們用戶,,B相當(dāng)于瀏覽器,C是服務(wù)器,。而cookie就是B的口袋,,當(dāng)然了cookie的用處還很多。比如我們登陸一個(gè)系統(tǒng),,提示我們是否保存密碼(有的還有期限比如,,一個(gè)星期或一個(gè)月),如果我們保存了,,下次再訪問(wèn)登陸時(shí),,瀏覽器就已經(jīng)幫我們填寫(xiě)好了賬戶密碼或直接幫我們登陸。那這個(gè)賬戶密碼就放在我們?yōu)g覽器的cookie中,。
為什么要說(shuō)上面的例子呢,?因?yàn)槲覀兇蟛糠值囊徊糠中阅軠y(cè)試是基于B/S架構(gòu)系統(tǒng)的,理解了瀏覽器與服務(wù)器之間的數(shù)據(jù)傳遞,,有助于我們理解性能測(cè)試。
----//在開(kāi)始性能測(cè)試之前,,我們需要知道什么?
當(dāng)客戶或老板把你叫來(lái),,對(duì)你說(shuō),去給我們系統(tǒng)做個(gè)性能測(cè)試,,千萬(wàn)別傻傻的說(shuō)“好,!”然后,就走了,,我以前這么干過(guò)(那時(shí)不懂,,打腫了臉充胖子),回到座位后,,不知從何下手了,。 那么,我們需要知道什么呢,?
1. 性能測(cè)試的目的 首先要知道客戶的要求,。 我把性能測(cè)試按目的分以下幾種
1)客戶有明確要求 這是一個(gè)好的結(jié)果,這說(shuō)明客戶對(duì)性能測(cè)試有一定的了解,,知道他們需要的系統(tǒng)要達(dá)到一個(gè)什么樣的標(biāo)準(zhǔn),。如:系統(tǒng)要求同時(shí)滿足100用戶登陸,平均每個(gè)用戶登陸時(shí)間不能超過(guò)5秒,。這個(gè)需求很明確,,當(dāng)然也不排除一些不懂裝懂的用戶,,提一些不現(xiàn)實(shí)的要求。 不管怎么說(shuō),,用戶提要求了,,這個(gè)比較容易,你可以對(duì)現(xiàn)系統(tǒng)做一次性能測(cè)試,,至于,,是通過(guò)優(yōu)化系統(tǒng)還是增加硬件設(shè)備才能達(dá)到要求。就不是我們考慮的問(wèn)題了,。 2)只是想知道目前系統(tǒng)性能(容量測(cè)試) 可以把我們的目的就是求得最大用戶數(shù)和最佳用戶數(shù),。但是,這仍然是比較含糊的一個(gè)需求,,我們需要對(duì)系統(tǒng)做出分析,,找出系統(tǒng)的壓力點(diǎn)。 3)找出系統(tǒng)性能瓶頸 這個(gè)同樣需要分析可能對(duì)系統(tǒng)造成瓶頸的邏輯業(yè)務(wù),,然后才能進(jìn)行性能測(cè)試,。 4)了系統(tǒng)在長(zhǎng)時(shí)間的壓力下性能狀況(強(qiáng)度測(cè)試) 這個(gè)一般驗(yàn)證系統(tǒng)的穩(wěn)定性,因?yàn)橄到y(tǒng)一旦上線,,就有可能會(huì)長(zhǎng)期處在大用戶的訪問(wèn)狀態(tài),,可能以前沒(méi)發(fā)現(xiàn)的一些問(wèn)題就會(huì)暴漏出來(lái)。比較典型的就是內(nèi)存溢出,。
2. 性能測(cè)試的環(huán)境
確定了我們的測(cè)試目的,,當(dāng)然需要測(cè)試環(huán)境。這里的環(huán)境,,我們需要考慮一下幾點(diǎn)
1)硬件環(huán)境 我們需要了解被測(cè)服務(wù)器硬件配置,,用于加壓客戶端的機(jī)子配置,CPU 內(nèi)存 等
2)軟件環(huán)境 我們需要了解被測(cè)系統(tǒng)的架構(gòu),,前端,、中間件、服務(wù)器(這里指運(yùn)行系統(tǒng)軟件服務(wù)器,,如tomcat),、數(shù)據(jù)庫(kù),以及他們的部署位置,。 用于加壓的客戶端采用什么性能測(cè)試工具進(jìn)行加壓,。
3)網(wǎng)絡(luò)環(huán)境 網(wǎng)絡(luò)環(huán)境很重要。在上面的幾個(gè)目的中,,除了找出系統(tǒng)性能瓶頸可以在廣域網(wǎng)進(jìn)行,,因?yàn)檫@個(gè)目的可以不用設(shè)置太多的虛擬用戶,只要找出系統(tǒng)哪個(gè)地方影響了整個(gè)系統(tǒng)的性能就行。 其他目的的測(cè)試都需要在,,局域網(wǎng)進(jìn)行,,不然你壓力工具所發(fā)送的請(qǐng)求都會(huì)卡死在網(wǎng)絡(luò)的傳輸過(guò)程中。
3. 尋找系統(tǒng)的壓力點(diǎn)
我們需要對(duì)系統(tǒng)的哪個(gè)頁(yè)面或業(yè)務(wù)進(jìn)行加壓,。這個(gè)不是自己想出來(lái)的,,需要與開(kāi)發(fā)人員的溝通。系統(tǒng)的首頁(yè),?系統(tǒng)的登錄,?還是系統(tǒng)的交易過(guò)程?各個(gè)業(yè)務(wù)的用戶比例是多少,? 只有獲得有效的性能需求,,才容易尋找和定位壓力點(diǎn)。 獲得有效的需求:http://www.cnblogs.com/jackei/archive/2006/12/12/589473.html
如果上面的幾點(diǎn),,你都很清晰了,,那么打開(kāi)你的性能測(cè)試工具開(kāi)始錄制(或編寫(xiě))你的性能測(cè)試腳本吧!
注:以上個(gè)人觀點(diǎn),,如有錯(cuò)誤的之處,,請(qǐng)高手指證,以免誤導(dǎo)別人,。
|
|
來(lái)自: 阿K_world > 《待分類(lèi)1》