在做性能测试之前需要知道什么
以下是我自己錄制的關(guān)于這篇文章的一小段視頻,有興趣的可以下載看看
https://yunpan.cn/cPQc4mm2DjbMu ?訪問密碼 a76f
?
//此篇摘抄于蟲師博客,個(gè)人覺得通俗易懂
關(guān)于理解性能,記得我那時(shí)是看了“《LoadRunner沒有告訴你的》之三---理發(fā)店模式”不管你有沒有看過,我這重提一下理發(fā)店模式。
前提:
1.?一個(gè)理發(fā)店有三位理發(fā)師傅
2.?每位理發(fā)師傅理一個(gè)發(fā)需要一小時(shí)
3.?顧客都很忙,從進(jìn)理發(fā)店起最多只等三小時(shí)(等待時(shí)間+理發(fā)時(shí)間),如果三小時(shí)后還沒輪到自己理發(fā),立馬走人。
???思考:
???這里我們來理解“最佳用戶數(shù)”和“最大用戶數(shù)”。
最佳用戶數(shù):
????理發(fā)店的最佳狀態(tài),理發(fā)店收入最多(理發(fā)師傅沒有休息時(shí)間,一直在理發(fā)),顧客滿意度最高(顧客隨時(shí)到隨時(shí)理,無需要等待)。在一個(gè)時(shí)間點(diǎn)來說,三個(gè)理發(fā)師傅服務(wù)于三位顧客,那么這個(gè)最佳用戶數(shù)是三。
最大用戶數(shù):
理發(fā)店的最大承受狀態(tài),理發(fā)店收入最多(理發(fā)師傅沒有休息時(shí)間,一直在理發(fā)),顧客的最大忍耐度(來的顧客等待+理發(fā)需要等上三個(gè)小時(shí))。
假如理發(fā)店生意非常好,早上一開門一下子來了一群顧客(很多),A、B、C三位顧客先理,D、E、F顧客需要等待一小時(shí)才能得到理發(fā)師傅的服務(wù),G、H、I三位顧客等待了兩小時(shí)才得到服務(wù),后面排隊(duì)的J、K、L.....等顧客,已經(jīng)等了三小時(shí)還沒得到服務(wù),因?yàn)檫@已經(jīng)得達(dá)到了他們等待的極限,所以后他們氣憤和無奈離開。
當(dāng)然,理發(fā)店還會(huì)不斷的來新的顧客,不斷有等了三小時(shí)而沒有得到服務(wù)的顧客離開,但對(duì)于理發(fā)店而言,他們?cè)谝粋€(gè)時(shí)間點(diǎn)上,能服務(wù)的最大用戶數(shù)是九(三位正在接受服務(wù)、三位已經(jīng)等待一小時(shí),三們已經(jīng)等待兩小時(shí))。
對(duì)于最大用戶數(shù),需要注意的兩點(diǎn):
1.?在理發(fā)店里很大,可以容納很多位顧客(大于9),總有一部分在這里等待了三小時(shí)而沒有得到服務(wù)離開,不要把等待了三小而沒有得到服務(wù)的顧客納入最大用戶數(shù)里。
2.?假如理發(fā)店很小,最多只能容納六位顧客,當(dāng)?shù)谄邆€(gè)顧客來時(shí),雖然,我們知道他只需要等待兩小時(shí)就可得到服務(wù)(這個(gè)時(shí)間是他可以接受的等待時(shí)間),但由于理發(fā)店容量有量,這第七個(gè)顧客只有改天再來了。
關(guān)于理發(fā)店原理,詳細(xì)請(qǐng)瀏覽http://www.cnblogs.com/jackei/archive/2006/11/20/565527.html?
?
?????不知道通過上面對(duì)理發(fā)店的分析,你對(duì)性能有了一些眉目。假如理發(fā)店相當(dāng)于我們的系統(tǒng)的話,顧客就我們向服務(wù)器所發(fā)送的請(qǐng)求,最佳用戶數(shù)和最大用戶數(shù)是我們衡量一個(gè)系統(tǒng)的處理能力的一種方法。
?
?
這個(gè)是我在給一朋友說瀏覽器與服務(wù)器之間交流時(shí)用到的例子,感覺比容易理解,所以拿來分享一下。
???假設(shè):
??1.??A、B、C三個(gè)人。
??2.??C欠A錢(這里不考慮多少)
??3.??B是專門要賬
???思考:
瀏覽器與服務(wù)器的信息傳遞次數(shù):
???A對(duì)B說,C欠我錢,你幫我去要。B接到指令后就去找C要錢。
???B對(duì)C說,給我20塊錢。
???C說,沒有。
???B對(duì)C說,給我10塊錢。
???C說,沒有。
???B對(duì)C說,給我5塊錢。
???.........
???最后,B回來對(duì)A說,哎呀媽呀,C那丫的忒摳門了,一分錢沒有。
???對(duì)于A來講,只是來說,它只是讓B問C要錢,具體的B與C之間交互了幾次,A是不知道的,它所知道的就是B返回給它的結(jié)果,C一分錢沒有。
???
???瀏覽器與服務(wù)器傳遞數(shù)據(jù)的大小:
???還是上面的過程,A對(duì)B說,C欠我錢,你幫我去要。B接到指令后就去找C要錢。
???B對(duì)C說,給我20萬塊錢。
???C說,沒問題,沒支票,只有1元硬幣。
???..........
???B終于把錢拿回來給A。A很納悶,怎么去了那么久,B委屈的說,丫的,C給我整了一堆硬幣,太重了,路上走的慢,都快累死我了。
???對(duì)于A來講,只是來說,它只是讓B問C要錢,誰知道C給的是支票還是硬幣。所以,B去要錢消耗的時(shí)間就很長。
?
???所以,要想提高瀏覽器對(duì)服務(wù)器的訪問速度,應(yīng)該減少數(shù)據(jù)傳遞次數(shù)與數(shù)據(jù)傳遞的大小。
這樣就很自然的引出了瀏覽器的cookie?
???A在C哪里存了5毛錢。
???A對(duì)B說,我在C哪里存了5毛錢,你去拿來我看看。B跑去問C要了5毛錢回來給A看。
??過了一會(huì),A又對(duì)B說,我在C哪里存了5毛錢,你去拿來我看看。B跑去問C要了5毛錢回來給A看。
??過了一會(huì),A又對(duì)B說,我在C哪里存了5毛錢,你去拿來我看看。這次C煩了,對(duì)B說,你把錢放自己口袋里吧,等A要的時(shí)候,你來問我5毛的人民幣有沒有改版,沒有改版的話,你就直接把口袋里的5毛錢給A看就行了。
???
?
??在這里A就相當(dāng)于我們用戶,B相當(dāng)于瀏覽器,C是服務(wù)器。而cookie就是B的口袋,當(dāng)然了cookie的用處還很多。比如我們登陸一個(gè)系統(tǒng),提示我們是否保存密碼(有的還有期限比如,一個(gè)星期或一個(gè)月),如果我們保存了,下次再訪問登陸時(shí),瀏覽器就已經(jīng)幫我們填寫好了賬戶密碼或直接幫我們登陸。那這個(gè)賬戶密碼就放在我們?yōu)g覽器的cookie中。
?
???為什么要說上面的例子呢?因?yàn)槲覀兇蟛糠值囊徊糠中阅軠y試是基于B/S架構(gòu)系統(tǒng)的,理解了瀏覽器與服務(wù)器之間的數(shù)據(jù)傳遞,有助于我們理解性能測試。
?
----//在開始性能測試之前,我們需要知道什么?當(dāng)客戶或老板把你叫來,對(duì)你說,去給我們系統(tǒng)做個(gè)性能測試,千萬別傻傻的說“好!”然后,就走了,我以前這么干過(那時(shí)不懂,打腫了臉充胖子),回到座位后,不知從何下手了。
???那么,我們需要知道什么呢?
?
?1.?性能測試的目的
??首先要知道客戶的要求。
??我把性能測試按目的分以下幾種
?
? ?1)客戶有明確要求
???這是一個(gè)好的結(jié)果,這說明客戶對(duì)性能測試有一定的了解,知道他們需要的系統(tǒng)要達(dá)到一個(gè)什么樣的標(biāo)準(zhǔn)。如:系統(tǒng)要求同時(shí)滿足100用戶登陸,平均每個(gè)用戶登陸時(shí)間不能超過5秒。這個(gè)需求很明確,當(dāng)然也不排除一些不懂裝懂的用戶,提一些不現(xiàn)實(shí)的要求。
???不管怎么說,用戶提要求了,這個(gè)比較容易,你可以對(duì)現(xiàn)系統(tǒng)做一次性能測試,至于,是通過優(yōu)化系統(tǒng)還是增加硬件設(shè)備才能達(dá)到要求。就不是我們考慮的問題了。
? ?2)只是想知道目前系統(tǒng)性能(容量測試)
???可以把我們的目的就是求得最大用戶數(shù)和最佳用戶數(shù)。但是,這仍然是比較含糊的一個(gè)需求,我們需要對(duì)系統(tǒng)做出分析,找出系統(tǒng)的壓力點(diǎn)。
? ?3)找出系統(tǒng)性能瓶頸
???這個(gè)同樣需要分析可能對(duì)系統(tǒng)造成瓶頸的邏輯業(yè)務(wù),然后才能進(jìn)行性能測試。
?? 4)了系統(tǒng)在長時(shí)間的壓力下性能狀況(強(qiáng)度測試)
???這個(gè)一般驗(yàn)證系統(tǒng)的穩(wěn)定性,因?yàn)橄到y(tǒng)一旦上線,就有可能會(huì)長期處在大用戶的訪問狀態(tài),可能以前沒發(fā)現(xiàn)的一些問題就會(huì)暴漏出來。比較典型的就是內(nèi)存溢出。
?
?2.?性能測試的環(huán)境
?
? 確定了我們的測試目的,當(dāng)然需要測試環(huán)境。這里的環(huán)境,我們需要考慮一下幾點(diǎn)
?
? 1)硬件環(huán)境
我們需要了解被測服務(wù)器硬件配置,用于加壓客戶端的機(jī)子配置,CPU?內(nèi)存??等
?
? 2)軟件環(huán)境
???我們需要了解被測系統(tǒng)的架構(gòu),前端、中間件、服務(wù)器(這里指運(yùn)行系統(tǒng)軟件服務(wù)器,如tomcat)、數(shù)據(jù)庫,以及他們的部署位置。
???用于加壓的客戶端采用什么性能測試工具進(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)的性能就行。?
???其他目的的測試都需要在,局域網(wǎng)進(jìn)行,不然你壓力工具所發(fā)送的請(qǐng)求都會(huì)卡死在網(wǎng)絡(luò)的傳輸過程中。
?
??3.?尋找系統(tǒng)的壓力點(diǎn)
?
??我們需要對(duì)系統(tǒng)的哪個(gè)頁面或業(yè)務(wù)進(jìn)行加壓。這個(gè)不是自己想出來的,需要與開發(fā)人員的溝通。系統(tǒng)的首頁?系統(tǒng)的登錄?還是系統(tǒng)的交易過程?各個(gè)業(yè)務(wù)的用戶比例是多少?
??只有獲得有效的性能需求,才容易尋找和定位壓力點(diǎn)。
? 獲得有效的需求:http://www.cnblogs.com/jackei/archive/2006/12/12/589473.html
?
----//在開始性能測試之前,我們需要知道的性能測試常見指標(biāo)性能測試常見指標(biāo)
?
性能測試說白了就是通過工具模擬多個(gè)用戶對(duì)被測系統(tǒng)進(jìn)行訪問。然后查看系統(tǒng)對(duì)于多個(gè)用戶發(fā)來請(qǐng)求的處理能力。
? ? ?左邊的兩個(gè)小人表示兩個(gè)用戶,向右邊服務(wù)器發(fā)送請(qǐng)求,然后得到服務(wù)器的響應(yīng)信息。
? ? 首先,我們要保證向服務(wù)器發(fā)送的請(qǐng)求的正確性,當(dāng)然用戶向服務(wù)器發(fā)送錯(cuò)誤的請(qǐng)求,服務(wù)器也會(huì)個(gè)客戶端響應(yīng)信息,但響應(yīng)的是報(bào)錯(cuò)信息;所以,為了保證測試數(shù)據(jù)的有效性,我們的要保證發(fā)送請(qǐng)求的正確性。
? ? ?為什么一般的性能測試要在局域進(jìn)行?
? ? ?一般我們的性能測試都是在局域網(wǎng)中進(jìn)行的。為什么一定要在局域網(wǎng)中進(jìn)行呢?因?yàn)榫钟蚓W(wǎng)中不受網(wǎng)絡(luò)限制。這個(gè)說法不能絕對(duì)。但是一般測試工具的用戶并發(fā)量是不會(huì)受到局域網(wǎng)帶寬的限制,除非你做的是十萬,百萬級(jí)別的用戶并發(fā)。相信懂一點(diǎn)網(wǎng)絡(luò)知識(shí)的人都知道,當(dāng)你上網(wǎng)很慢的時(shí)候,比如打開某某網(wǎng)站很慢,你肯定會(huì)罵電信的網(wǎng)絡(luò)不給力,而不會(huì)罵這個(gè)網(wǎng)站響應(yīng)速度不給力。因?yàn)?#xff0c;請(qǐng)求信息的耗時(shí)大部耗在傳輸過程中。
? ? ?所以,剛做測試時(shí),我們?nèi)豪餆嶙h論,如果我們每個(gè)人都開一個(gè)壓力工具對(duì)百度網(wǎng)站進(jìn)行加壓。百度,服務(wù)器會(huì)不會(huì)掛掉。有測友說這樣是不道德人。呵呵!其實(shí),完全不必有這個(gè)擔(dān)心。就一般人家用的帶寬,我確保,你向百度服務(wù)器發(fā)送的請(qǐng)求大部分都死在半路上,就算不死到了百度服務(wù)器已經(jīng)不能叫并發(fā)了。何況百度服務(wù)器的集群技術(shù)以及其他各種分壓技術(shù)。所以,做性能測試不了解被測系統(tǒng)的架構(gòu),以及各種技術(shù)的性能。很難做出有效的測試報(bào)告。
下面我們看看性能測試的一些技術(shù)指標(biāo)。??
Work Load = Virtual Users
工作負(fù)荷 = 虛擬用戶數(shù)
? ? ?對(duì)服務(wù)器產(chǎn)生多大壓力,可以由多少用戶同時(shí)對(duì)服務(wù)器發(fā)送請(qǐng)求來衡量。也就是服務(wù)器的性能可以看它同時(shí)處理多少用戶發(fā)送來的請(qǐng)求來衡量。 虛擬用戶數(shù)可以用進(jìn)程或線程的方式進(jìn)行模擬。 ? response time??響應(yīng)時(shí)間 ? ? ? ?從客戶端將數(shù)據(jù)包發(fā)出,到接收到服務(wù)器端發(fā)來的請(qǐng)求。這個(gè)過程的總體時(shí)間叫response time? ? ? ? ?這個(gè)時(shí)間用來衡量的處理請(qǐng)求的速度(拋出網(wǎng)速限制的前提下) throughput ~Ti & To ? ? ? ?這個(gè)表示,吞吐量,吞吐量越大表示系統(tǒng)性能越強(qiáng)。1個(gè)用戶跑100天和10個(gè)用戶跑1分鐘。當(dāng)然是1個(gè)用戶跑100天的吞吐量大。所以,我們要想看系統(tǒng)的性能應(yīng)該用“吞吐率”,就是單位時(shí)間的吞吐量,比如吞吐量/秒。 ? ? ? 站在服務(wù)器端,T-in表示“吞”;T-out表求“吐” T-out表求“吐” Ti:T-in 主要衡量客戶端的能力,看客戶端往服務(wù)器發(fā)送的請(qǐng)求數(shù)據(jù)包的吞吐率。? To: T-out 主要衡量的服務(wù)器端的能力,看服務(wù)器處理返回請(qǐng)求數(shù)據(jù)包的吞吐率。 Hits/Request 網(wǎng)頁點(diǎn)擊數(shù)/請(qǐng)求 Response/Successful Response 響應(yīng)/成功的響應(yīng) ? ? ?Request與Response是對(duì)應(yīng),一個(gè)請(qǐng)求對(duì)應(yīng)一個(gè)響應(yīng)。但當(dāng)客戶端對(duì)服務(wù)器的壓力達(dá)到一直程度后,不是每一請(qǐng)求都能得到響應(yīng)的。去年末火了個(gè)最牛B的“電子商務(wù)”網(wǎng)站。12306(鐵路網(wǎng)上訂票系統(tǒng)),雖然有很差的用戶體驗(yàn),但每天還是大把的人拼命的登錄(過年回家的人傷不起),甚至用外掛登錄。見有網(wǎng)友云云點(diǎn)擊(請(qǐng)求)了幾十幾百次才訂票(響應(yīng))成功。所以,成功響應(yīng)率也是很重要的一個(gè)指標(biāo)。客戶端發(fā)送一千個(gè)請(qǐng)求的成功得到響應(yīng)的幾率。? Hits Per Second? 每秒中點(diǎn)擊次數(shù) ? ? ?和吞吐量一樣,單單用點(diǎn)擊數(shù)(hits)來衡量系統(tǒng)也是不合理的。所以,用每秒鐘的點(diǎn)擊數(shù)才能衡量出服務(wù)器的處理能力。 橫坐標(biāo)表示用戶數(shù) 縱坐標(biāo)表示時(shí)間 ? 紅色虛線,表求的是一種系統(tǒng)的理想狀態(tài)。 ? 當(dāng)服務(wù)器處理10個(gè)用戶請(qǐng)求時(shí)所用的時(shí)間是2秒(假設(shè)),當(dāng)服務(wù)器處理200用戶請(qǐng)求時(shí)所用的時(shí)間也是2秒。所以說這種狀態(tài)是一種理想的狀態(tài)。現(xiàn)實(shí)中,不管是如何超級(jí)強(qiáng)的服務(wù)器當(dāng)用戶數(shù)達(dá)到一定數(shù)量時(shí),響應(yīng)時(shí)間必會(huì)變慢。 ? 藍(lán)色斜線,是服務(wù)器常見的一種曲線狀態(tài)。 ? ? 服務(wù)器的響應(yīng)時(shí)間雖然用戶數(shù)量的增加逐漸變慢。 當(dāng)系統(tǒng)出現(xiàn)這種斜線,應(yīng)該說系統(tǒng)性能是相當(dāng)健壯的。隨著用戶的增長響應(yīng)時(shí)間逐漸變長。 ? 黑色曲線,個(gè)人覺得是服務(wù)器處理能力的真實(shí)曲線狀態(tài)。 ? ? ?為什么說黑線才是真實(shí)服務(wù)器處理能力的曲線呢?當(dāng)用戶處理一個(gè)用戶請(qǐng)求是2秒(假設(shè)),當(dāng)處兩個(gè)用戶請(qǐng)求是馬上變成3秒(假設(shè)),當(dāng)處理3個(gè)用戶請(qǐng)求時(shí)變成4秒(假設(shè))。再差的服務(wù)器也有個(gè)處理范圍,比如是,100用戶同時(shí)并發(fā),服務(wù)器可以輕松應(yīng)對(duì),不管是10個(gè)用戶還是80個(gè)用戶同時(shí)請(qǐng)求,服務(wù)器都可以即可響應(yīng)(請(qǐng)參考理發(fā)店模式)。只有當(dāng)用戶數(shù)量達(dá)到某個(gè)數(shù)量點(diǎn)后,服務(wù)器性能急劇下降。如上圖黑色十字星處就是系統(tǒng)的拐角點(diǎn)。 ? ? ? 我們假設(shè)有一個(gè)門,在一個(gè)時(shí)間點(diǎn)上可同時(shí)過10個(gè)人,不管你是同時(shí)來3個(gè)還是10個(gè)都可以在同一時(shí)間點(diǎn)過門,假如來了11個(gè)人,必然有一個(gè)人要等10個(gè)人過門之后才能過。那么當(dāng)超過10人來過門時(shí),過門的速度就開始變慢。那么10就是服務(wù)器性能的拐角點(diǎn)。我們通常做壓力測試找服務(wù)器的拐角點(diǎn)是很重要的任務(wù)之一。 ? ? ?關(guān)藍(lán)色曲線與黑色區(qū)線只是我們常見兩種曲線。現(xiàn)實(shí)的測試中可能出現(xiàn)各種樣式的曲線。當(dāng)然還要看你做測試的細(xì)度,比如,10個(gè)用戶是系統(tǒng)的拐點(diǎn),如果你做完5個(gè)用戶的一輪測試后,就是20用戶的測試。那么畫出來的曲線就變成斜線,拐點(diǎn)將被護(hù)忽略掉。 橫坐標(biāo)虛擬用戶數(shù) 縱坐標(biāo)有吞吐率(服務(wù)器端) ? 紅色虛線,表示一種理想的狀態(tài)。 ? ?隨著用戶數(shù)量的增加吞吐率也在持續(xù)增加。 ? 黑色曲線,表示現(xiàn)實(shí)系統(tǒng)的吞吐率狀態(tài)。 ? ? ?剛開始吞吐率隨著用戶數(shù)量的增加逐漸變大,當(dāng)大到一定程度時(shí),逐漸平緩直到變成一條平線。 如果用戶還在持續(xù)增加中,那么吞吐率有可能下降,直到系統(tǒng)掛掉。 ? ? ?為什么會(huì)是這樣呢?我們通過另一個(gè)例子來說,大家都在城市生活,相信上下班高峰期都會(huì)遇到堵車。在比較重要的紅綠燈路口常會(huì)見到堵車現(xiàn)象。假如每個(gè)綠燈可以通過10輛,前期來三五輛車,遇到綠燈,一次都過去了。到了下班高峰期,車子變多,一下來了20輛,但這個(gè)路口的綠燈每天只能通過10輛,所以,這個(gè)時(shí)候,路口的通過率不會(huì)根據(jù)車輛的增加而繼續(xù)增加。 ? ? 好的系統(tǒng)好像好有個(gè)好的交警在位置秩序,雖然車輛還在增加,但每個(gè)車輛都有條不紊等待通過路口。 ? ? 不好的系統(tǒng)如路口趕上交警拉肚子,車輛在增加,后面車輛等得不耐煩就往前擠,結(jié)果稿得互不相讓。好嘛!之后還每個(gè)綠燈可通過10輛,現(xiàn)在只能有一輛車從夾縫中脫離苦海了。 ? ?? ? ? 響應(yīng)時(shí)間圖與吞吐率圖并不是我們一輪性能測試下來就能得到結(jié)果。需要經(jīng)過多輪測試才能得到。設(shè)置不同的用戶數(shù)量,得到每次的測試數(shù)據(jù),將每次數(shù)據(jù)連接,從而得到最終系統(tǒng)性能曲線。關(guān)于用戶數(shù)量每次增加的數(shù)量自己把握。如果,想精確,可以每次增加1個(gè)用戶的方式來做,不過這樣勢(shì)必加大工作量,也沒必要。這個(gè)需要每做完一輪測試后對(duì)數(shù)據(jù)進(jìn)行分析,然后確定下輪測試所要設(shè)置的虛擬用戶數(shù)。 ??
性能測試常見分類 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
常會(huì)別人說到性能測試、負(fù)載測試、壓力測試、并發(fā)測試,很多人都是混合使用,或者一會(huì)叫壓力測試,一會(huì)叫并發(fā)測試。這些概念除了非測試人員分不清楚,甚至許多專業(yè)測試人員也對(duì)這些名詞也很模糊。關(guān)于這個(gè)分類我翻閱了幾個(gè)本比較好的書籍,他們講的也比較模糊,沒有給出本質(zhì)上的區(qū)別。只是從不同角度和關(guān) 注點(diǎn)來解釋。好吧我們先來看他們之間比較普遍的解釋。
?
性能測試(狹義)
性能測試方法是通過模擬生產(chǎn)運(yùn)行的業(yè)務(wù)壓力量和使用場景組合,測試系統(tǒng)的性能是否滿足生產(chǎn)性能要求。通俗地說,這種方法就是要在特定的運(yùn)行條件下驗(yàn)證系統(tǒng)的能力狀態(tài)。
特點(diǎn):
1、這種方法的主要目的是驗(yàn)證系統(tǒng)是否有系統(tǒng)宣稱具有的能力。
2、這種方法要事先了解被測試系統(tǒng)經(jīng)典場景,并具有確定的性能目標(biāo)。
3、這種方法要求在已經(jīng)確定的環(huán)境下運(yùn)行。
也就是說,這種方法是對(duì)系統(tǒng)性能已經(jīng)有了解的前提,并對(duì)需求有明確的目標(biāo),并在已經(jīng)確定的環(huán)境下進(jìn)行的。
負(fù)載測試
通過在被測系統(tǒng)上不斷加壓,直到性能指標(biāo)達(dá)到極限,例如“響應(yīng)時(shí)間”超過預(yù)定指標(biāo)或都某種資源已經(jīng)達(dá)到飽和狀態(tài)。
特點(diǎn):
1、這種性能測試方法的主要目的是找到系統(tǒng)處理能力的極限。
2、這種性能測試方法需要在給定的測試環(huán)境下進(jìn)行,通常也需要考慮被測試系統(tǒng)的業(yè)務(wù)壓力量和典型場景、使得測試結(jié)果具有業(yè)務(wù)上的意義。
3、這種性能測試方法一般用來了解系統(tǒng)的性能容量,或是配合性能調(diào)優(yōu)來使用。
也就是說,這種方法是對(duì)一個(gè)系統(tǒng)持續(xù)不段的加壓,看你在什么時(shí)候已經(jīng)超出“我的要求”或系統(tǒng)崩潰。
壓力測試(強(qiáng)度測試)
壓力測試方法測試系統(tǒng)在一定飽和狀態(tài)下,例如cpu、內(nèi)存在飽和使用情況下,系統(tǒng)能夠處理的會(huì)話能力,以及系統(tǒng)是否會(huì)出現(xiàn)錯(cuò)誤
?
特點(diǎn):
1、這種性能測試方法的主要目的是檢查系統(tǒng)處于壓力性能下時(shí),應(yīng)用的表現(xiàn)。
2、這種性能測試一般通過模擬負(fù)載等方法,使得系統(tǒng)的資源使用達(dá)到較高的水平。
3、這種性能測試方法一般用于測試系統(tǒng)的穩(wěn)定性。
也就是說,這種測試是讓系統(tǒng)處在很大強(qiáng)度的壓力之下,看系統(tǒng)是否穩(wěn)定,哪里會(huì)出問題。
?
并發(fā)測試
并發(fā)測試方法通過模擬用戶并發(fā)訪問,測試多用戶并發(fā)訪問同一個(gè)應(yīng)用、同一個(gè)模塊或者數(shù)據(jù)記錄時(shí)是否存在死鎖或其者他性能問題。
特點(diǎn):
1、這種性能測試方法的主要目的是發(fā)現(xiàn)系統(tǒng)中可能隱藏的并發(fā)訪問時(shí)的問題。
2、這種性能測試方法主要關(guān)注系統(tǒng)可能存在的并發(fā)問題,例如系統(tǒng)中的內(nèi)存泄漏、線程鎖和資源爭用方面的問題。
3、這種性能測試方法可以在開發(fā)的各個(gè)階段使用需要相關(guān)的測試工具的配合和支持。
也就是說,這種測試關(guān)注點(diǎn)是多個(gè)用戶同時(shí)(并發(fā))對(duì)一個(gè)模塊或操作進(jìn)行加壓。
配置測試
配置測試方法通過對(duì)被測系統(tǒng)的軟\硬件環(huán)境的調(diào)整,了解各種不同對(duì)系統(tǒng)的性能影響的程度,從而找到系統(tǒng)各項(xiàng)資源的最優(yōu)分配原則。
特點(diǎn):
1、這種性能測試方法的主要目的是了解各種不同因素對(duì)系統(tǒng)性能影響的程度,從而判斷出最值得進(jìn)行的調(diào)優(yōu)操作。
2、這種性能測試方法一般在對(duì)系統(tǒng)性能狀況有初步了解后進(jìn)行。
3、這種性能測試方法一般用于性能調(diào)優(yōu)和規(guī)劃能力。
也就是說,這種測試關(guān)注點(diǎn)是“微調(diào)”,通過對(duì)軟硬件的不段調(diào)整,找出這他們的最佳狀態(tài),使系統(tǒng)達(dá)到一個(gè)最強(qiáng)的狀態(tài)。
可靠性測試
在給系統(tǒng)加載一定業(yè)務(wù)壓力的情況下,使系統(tǒng)運(yùn)行一段時(shí)間,以此檢測系統(tǒng)是否穩(wěn)定。
特點(diǎn):
1、這種性能測試方法的主要目的是驗(yàn)證是否支持長期穩(wěn)定的運(yùn)行。
2、這種性能測試方法需要在壓力下持續(xù)一段時(shí)間的運(yùn)行。(2~3天)
3、測試過程中需要關(guān)注系統(tǒng)的運(yùn)行狀況。
也就是說,這種測試的關(guān)注點(diǎn)是“穩(wěn)定”,不需要給系統(tǒng)太大的壓力,只要系統(tǒng)能夠長期處于一個(gè)穩(wěn)定的狀態(tài)。
上面的分類絕非全面,還有失效性測試,就是系統(tǒng)局部發(fā)生問題時(shí),其它模塊是否可以正常的運(yùn)行。這個(gè)在極少數(shù)情況下進(jìn)行,這里就不介紹了。
?
?
性能測試分類之我見 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
上面的類分完了,似乎得到不少專家的認(rèn)同,并無不妥。但我們?cè)谛阅軠y試過程中真的能把它們區(qū)別分的很清楚么?你能嚴(yán)格區(qū)分出你這次的測試到底并發(fā)測試還是壓力測試。
筆者第一點(diǎn)不太贊同的是對(duì)“性能測試”的定義。筆者認(rèn)為性能測式測試包含了上面的所有分類。而這種性能測試的定義只是一種狹義上的“性能測試”,屬于性能測試的一種。
性能測試是相對(duì)功能測試來說的。他們之間最本質(zhì)的區(qū)別就是對(duì)系統(tǒng)有處理能力是否夠成壓力。如果一個(gè)用戶的一個(gè)操作(比如超大數(shù)據(jù)量的查詢)對(duì)系統(tǒng)夠成了壓力,我也可以視其為性能測試。
?
?
其實(shí),可以這樣來劃分性能測試
上面定交了那么多分類,是不是有點(diǎn)暈了。其實(shí),以筆者認(rèn)為我們進(jìn)行性能測試時(shí)關(guān)注的就兩點(diǎn)。耐力和爆發(fā)力。
初高中時(shí)練過幾年體育,最好時(shí)代表學(xué)校參加縣體育比賽,不過是去墊底的。哈哈!哈一個(gè)體育運(yùn)動(dòng)員來說,那么多的體育項(xiàng)目,其實(shí),考核他的就兩方面。一是爆發(fā)力。二是耐力。
爆發(fā)力:拿一個(gè)舉重選手來說,他的重點(diǎn)在重量上,因?yàn)槟阒灰芘e起三秒就算你成功了。關(guān)鍵是看你能舉起一個(gè)什么樣的重量。
耐力:拿一個(gè)馬拉松運(yùn)動(dòng)員來說,你百米速度跑得再快沒用。關(guān)鍵是這40公里路程中,最先跑到終點(diǎn)的人才是贏家。
整體協(xié)調(diào)性:當(dāng)然,身為一個(gè)教練員,我在選拔選手的時(shí)候,除了看這個(gè)運(yùn)動(dòng)員的耐力和爆發(fā)力,身體的整體協(xié)調(diào)性也是我考核的一個(gè)很重要的指標(biāo)。比如一個(gè)運(yùn)行員身體各位部位練得非常強(qiáng)壯,但右臂先天性萎縮。他的跑步成績雖然不錯(cuò)。但他在跑的過程中,身體有各個(gè)部分都在分擔(dān)右臂的不足。右臂影響了整個(gè)體能的發(fā)揮。
再到系統(tǒng)的性能上說,爆發(fā)力就是這個(gè)系統(tǒng)能承受的最大壓力,沒準(zhǔn)這個(gè)系統(tǒng)承受的壓力很大。但過半個(gè)小時(shí)之間就掛掉了。耐力就是這個(gè)每系統(tǒng)長時(shí)間處于壓力下的穩(wěn)定性,這系統(tǒng)超級(jí)穩(wěn)定,跑個(gè)幾十年都不用重啟服務(wù)器。那么整體協(xié)調(diào)性就是看系統(tǒng)有沒系統(tǒng)瓶頸,需不需要進(jìn)行系統(tǒng)調(diào)優(yōu)。
在做性能測試時(shí)請(qǐng)忘掉分類
這里只是告訴在做性能測試時(shí)不要想這個(gè)測試是屬于性能測試的哪一類呢?是并發(fā)性測呢?還是壓力測試?
我們還拿上面的教練員選拔選手做例子。
記得我進(jìn)校體隊(duì)的時(shí)候,教練說讓我跑兩圈。然后,我就開始圍繞著操場跑起來。你說教練讓我跑兩圈是想看我的什么能力?
1、雙腿的考核,一個(gè)是步幅,就是步與步之間的距離。一個(gè)是頻率,兩腿交替的頻率。如果你一步拉得很大的話,那么頻率一定會(huì)下降。如果想提高頻率的話,那么一定會(huì)影響到步幅的大小。
2、雙臂的考核,肩膀是否放松,擺臂是否有力,雙臂的擺動(dòng)與雙腿的擺動(dòng)是否協(xié)調(diào)。
3、呼吸是否勻稱,目前的速度可以跑幾圈。
我只做了一項(xiàng)體育運(yùn)行,就考核了我這么多內(nèi)容。我們?cè)谧鲆粋€(gè)性能測試時(shí)也不局限在某一分類上,也可能我們的一個(gè)測試包含多個(gè)分類。
《web性能測試實(shí)戰(zhàn)》:
么多類型的性能測試看起來很嚇人,實(shí)際上它他們大多是密切相關(guān)的。例如,運(yùn)行8個(gè)小時(shí)來測試系統(tǒng)是否可靠,而這個(gè)測試極有可能包含了可靠性能測、強(qiáng)度測試、并發(fā)測試、負(fù)載測試,等等。因此,在實(shí)施性能測試時(shí)決不能割裂它們的內(nèi)部聯(lián)系去進(jìn)行,而應(yīng)該分析它們之間的關(guān)系,以一種高效率的方式來設(shè)計(jì)性能測試。
轉(zhuǎn)載于:https://www.cnblogs.com/xiaoqingSister/p/5425779.html
總結(jié)
以上是生活随笔為你收集整理的在做性能测试之前需要知道什么的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。