這個(gè)是我在給一朋友說(shuō)瀏覽器與服務(wù)器之間交流時(shí)用到的例子,感覺(jué)比容易理解,所以拿來(lái)分享一下。

   假設:

  1.  A、B、C三個(gè)人。

  2.  C欠A錢(qián)(這里不考慮多少)

  3.  B是專(zhuān)門(mén)要賬

   思考:

瀏覽器與服務(wù)器的信息傳遞次數:

   A對B說(shuō),C欠我錢(qián),你幫我去要。B接到指令后就去找C要錢(qián)。

   B對C說(shuō),給我20塊錢(qián)。

   C說(shuō),沒(méi)有。

   B對C說(shuō),給我10塊錢(qián)。

   C說(shuō),沒(méi)有。

   B對C說(shuō),給我5塊錢(qián)。

   .........

   最后,B回來(lái)對A說(shuō),哎呀媽呀,C那丫的忒摳門(mén)了,一分錢(qián)沒(méi)有。

   對于A(yíng)來(lái)講,只是來(lái)說(shuō),它只是讓B問(wèn)C要錢(qián),具體的B與C之間交互了幾次,A是不知道的,它所知道的就是B返回給它的結果,C一分錢(qián)沒(méi)有。

   瀏覽器與服務(wù)器傳遞數據的大?。?/p>

   還是上面的過(guò)程,A對B說(shuō),C欠我錢(qián),你幫我去要。B接到指令后就去找C要錢(qián)。

   B對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給我整了一堆硬幣,太重了,路上走的慢,都快累死我了。

   對于A(yíng)來(lái)講,只是來(lái)說(shuō),它只是讓B問(wèn)C要錢(qián),誰(shuí)知道C給的是支票還是硬幣。所以,B去要錢(qián)消耗的時(shí)間就很長(cháng)。

   所以,要想提高瀏覽器對服務(wù)器的訪(fǎng)問(wèn)速度,應該減少數據傳遞次數與數據傳遞的大小。

這樣就很自然的引出了瀏覽器的cookie 

   A在C哪里存了5毛錢(qián)。

   A對B說(shuō),我在C哪里存了5毛錢(qián),你去拿來(lái)我看看。B跑去問(wèn)C要了5毛錢(qián)回來(lái)給A看。

  過(guò)了一會(huì ),A又對B說(shuō),我在C哪里存了5毛錢(qián),你去拿來(lái)我看看。B跑去問(wèn)C要了5毛錢(qián)回來(lái)給A看。

  過(guò)了一會(huì ),A又對B說(shuō),我在C哪里存了5毛錢(qián),你去拿來(lái)我看看。這次C煩了,對B說(shuō),你把錢(qián)放自己口袋里吧,等A要的時(shí)候,你來(lái)問(wèn)我5毛的人民幣有沒(méi)有改版,沒(méi)有改版的話(huà),你就直接把口袋里的5毛錢(qián)給A看就行了。

  在這里A就相當于我們用戶(hù),B相當于瀏覽器,C是服務(wù)器。而cookie就是B的口袋,當然了cookie的用處還很多。比如我們登陸一個(gè)系統,提示我們是否保存密碼(有的還有期限比如,一個(gè)星期或一個(gè)月),如果我們保存了,下次再訪(fǎng)問(wèn)登陸時(shí),瀏覽器就已經(jīng)幫我們填寫(xiě)好了賬戶(hù)密碼或直接幫我們登陸。那這個(gè)賬戶(hù)密碼就放在我們?yōu)g覽器的cookie中。

   為什么要說(shuō)上面的例子呢?因為我們大部分的一部分性能測試是基于B/S架構系統的,理解了瀏覽器與服務(wù)器之間的數據傳遞,有助于我們理解性能測試。

----//在開(kāi)始性能測試之前,我們需要知道什么?

     當客戶(hù)或老板把你叫來(lái),對你說(shuō),去給我們系統做個(gè)性能測試,千萬(wàn)別傻傻的說(shuō)“好!”然后,就走了,我以前這么干過(guò)(那時(shí)不懂,打腫了臉充胖子),回到座位后,不知從何下手了。

   那么,我們需要知道什么呢?

 1. 性能測試的目的

  首先要知道客戶(hù)的要求。

  我把性能測試按目的分以下幾種

   1)客戶(hù)有明確要求

   這是一個(gè)好的結果,這說(shuō)明客戶(hù)對性能測試有一定的了解,知道他們需要的系統要達到一個(gè)什么樣的標準。如:系統要求同時(shí)滿(mǎn)足100用戶(hù)登陸,平均每個(gè)用戶(hù)登陸時(shí)間不能超過(guò)5秒。這個(gè)需求很明確,當然也不排除一些不懂裝懂的用戶(hù),提一些不現實(shí)的要求。

   不管怎么說(shuō),用戶(hù)提要求了,這個(gè)比較容易,你可以對現系統做一次性能測試,至于,是通過(guò)優(yōu)化系統還是增加硬件設備才能達到要求。就不是我們考慮的問(wèn)題了。

   2)只是想知道目前系統性能(容量測試)

   可以把我們的目的就是求得最大用戶(hù)數和最佳用戶(hù)數。但是,這仍然是比較含糊的一個(gè)需求,我們需要對系統做出分析,找出系統的壓力點(diǎn)。

   3)找出系統性能瓶頸

   這個(gè)同樣需要分析可能對系統造成瓶頸的邏輯業(yè)務(wù),然后才能進(jìn)行性能測試。

   4)了系統在長(cháng)時(shí)間的壓力下性能狀況(強度測試)

   這個(gè)一般驗證系統的穩定性,因為系統一旦上線(xiàn),就有可能會(huì )長(cháng)期處在大用戶(hù)的訪(fǎng)問(wèn)狀態(tài),可能以前沒(méi)發(fā)現的一些問(wèn)題就會(huì )暴漏出來(lái)。比較典型的就是內存溢出。

 2. 性能測試的環(huán)境

  確定了我們的測試目的,當然需要測試環(huán)境。這里的環(huán)境,我們需要考慮一下幾點(diǎn)

  1)硬件環(huán)境

我們需要了解被測服務(wù)器硬件配置,用于加壓客戶(hù)端的機子配置,CPU 內存  等

  2)軟件環(huán)境

   我們需要了解被測系統的架構,前端、中間件、服務(wù)器(這里指運行系統軟件服務(wù)器,如tomcat)、數據庫,以及他們的部署位置。

   用于加壓的客戶(hù)端采用什么性能測試工具進(jìn)行加壓。

  3)網(wǎng)絡(luò )環(huán)境

   網(wǎng)絡(luò )環(huán)境很重要。在上面的幾個(gè)目的中,除了找出系統性能瓶頸可以在廣域網(wǎng)進(jìn)行,因為這個(gè)目的可以不用設置太多的虛擬用戶(hù),只要找出系統哪個(gè)地方影響了整個(gè)系統的性能就行。 

   其他目的的測試都需要在,局域網(wǎng)進(jìn)行,不然你壓力工具所發(fā)送的請求都會(huì )卡死在網(wǎng)絡(luò )的傳輸過(guò)程中。

  3. 尋找系統的壓力點(diǎn)

  我們需要對系統的哪個(gè)頁(yè)面或業(yè)務(wù)進(jìn)行加壓。這個(gè)不是自己想出來(lái)的,需要與開(kāi)發(fā)人員的溝通。系統的首頁(yè)?系統的登錄?還是系統的交易過(guò)程?各個(gè)業(yè)務(wù)的用戶(hù)比例是多少?

  只有獲得有效的性能需求,才容易尋找和定位壓力點(diǎn)。