MILY: 宋體">版權聲明:本文可以被轉載,但是在未經本人許可前,不得用于任何商業用途或其他以盈利為目的的用途。本人保留對本文的一切權利。如需轉載,請在轉載是保留此版權聲明,并保證本文的完整性。也請轉貼者理解創作的辛勞,尊重作者的勞動成果。
作者:陳雷 (Jackei)
郵箱:jackeichan@gmail.com
Blog:http://jackei.cnblogs.com
大概在一年前的一次討論中,我的好友陳華第一次提到了這個模型的最初版本,經過幾次討論后,我們發現經過完善和擴展的“理發店模型”可以用來幫助我們理解很多性能測試的概念和理論,以及一些測試中遇到的問題。在最近的一次討論后,我決定撰寫一篇文章來專門講述一下這個模型,希望可以幫助大家更好的理解性能測試有關的知識。
不過,在這篇文章中,我將會盡量的只描述模型本身以及相關的一些擴展,而具體如何將這個模型完全同性能測試關聯起來,我不會全部說破,留下足夠的空間讓大家繼續思考和總結,最好也一起來對這個模型做進一步的完善和擴展^_^ 我相信,當大家在思考的過程中有所收獲并有所突破時,那種快感和收獲的喜悅才真的是讓人倍感振奮而且終生難忘的 ^_^
當然,我要說明的是,這個模型僅僅是1個模型,它與大家實際工作中遇到的各式各樣的情況未必都可以一一對應,但是大的方向和趨勢應該是一致的。
理發店模型
進一步理解“最佳并發用戶數”和“最大并發用戶數”
理發店模型的進一步擴展
相關資料
相信大家都進過或見過理發店,一間或大或小的鋪面,1個或幾個理發師,幾張理發用的椅子和供顧客等待的長條板凳。
在我們的這個理發店中,我們事先做了如下的假設:
1. 理發店共有3名理發師;
2. 每位理發師剪一個發的時間都是1小時;
3. 我們顧客們都是很有時間觀念的人而且非常挑剔,他們對于每次光顧理發店時所能容忍的等待時間+剪發時間是3小時,而且等待時間越長,顧客的滿意度越低。如果3個小時還不能剪完頭發,我們的顧客會立馬生氣的走人。
通過上面的假設我們不難想象出下面的場景:
1. 當理發店內只有1位顧客時,只需要有1名理發師為他提供服務,其他兩名理發師可能繼續等著,也可能會幫忙打打雜。1小時后,這位顧客剪完頭發出門走了。那么在這1個小時里,整個理發店只服務了1位顧客,這位顧客花費在這次剪發的時間是1小時;
2. 當理發店內同時有兩位顧客時,就會同時有兩名理發師在為顧客服務,另外1位發呆或者打雜幫忙。仍然是1小時后,兩位顧客剪完頭發出門。在這1小時里,理發店服務了兩位顧客,這兩位顧客花費在剪發的時間均為1小時;
3. 很容易理解,當理發店內同時有三位顧客時,理發店可以在1小時內同時服務三位顧客,每位顧客花費在這次剪發的時間仍然是均為1小時;
從上面幾個場景中我們可以發現,在理發店同時服務的顧客數量從1位增加到3位的過程中,隨著顧客數量的增多,理發店的整體工作效率在提高,但是每位顧客在理發店內所呆的時間并未延長。
當然,我們可以假設當只有1位顧客和2位顧客時,空閑的理發師可以幫忙打雜,使得其他理發師的工作效率提高,并使每位顧客的剪發時間小于1小時。不過即使根據這個假設,雖然隨著顧客數量的增多,每位顧客的服務時間有所延長,但是這個時間始終還被控制在顧客可接受的范圍之內,并且顧客是不需要等待的。
不過隨著理發店的生意越來越好,顧客也越來越多,新的場景出現了。假設有一次顧客A、B、C剛進理發店準備剪發,外面一推門又進來了顧客D、E、F。因為A、B、C三位顧客先到,所以D、E、F三位只好坐在長板凳上等著。1小時后,A、B、C三位剪完頭發走了,他們每個人這次剪發所花費的時間均為1小時?墒D、E、F三位就沒有這么好運,因為他們要先等A、B、C三位剪完才能剪,所以他們每個人這次剪發所花費的時間均為2小時——包括等待1小時和剪發1小時。
通過上面這個場景我們可以發現,對于理發店來說,都是每小時服務三位顧客——第1個小時是A、B、C,第二個小時是D、E、F;但是對于顧客D、E、F來說,“響應時間”延長了。如果你可以理解上面的這些場景,就可以繼續往下看了。
在新的場景中,我們假設這次理發店里一次來了9位顧客,根據我們上面的場景,相信你不難推斷,這9位顧客中有3位的“響應時間”為1小時,有3位的“響應時間”為2小時(等待1小時+剪發1小時),還有3位的“響應時間”為3小時(等待2小時+剪發1小時)——已經到達用戶所能忍受的極限。假如在把這個場景中的顧客數量改為10,那么我們已經可以斷定,一定會有1位顧客因為“響應時間”過長而無法忍受,最終離開理發店走了。
我想并不需要特別說明,大家也一定可以把上面的這些場景跟性能測試掛上鉤了。如果你還是覺得比較抽象,繼續看下面的這張圖 ^_^
文章來源于領測軟件測試網 http://www.kjueaiud.com/