【轉】關于淘寶網性能測試的思考(來自IT168)
什么是性能測試?國內眾說紛紜,理解各不相同。很難說清楚,在此截取一段英文的資料,小二在此不敢妄加翻譯。
In software engineering, performance testing is testing that is performed, from one perspective, to determine how fast some aspect of a system performs under a particular workload. It can also serve to validate and verify other quality attributes of the system, such as scalability, reliability and resource usage.
從技術類型來看,當前主流的技術框架,有C/S和B/S。當然,性能測試也相應的分成這兩種。它們的測試方法,是不相同的。
C/S架構的系統,性能方面主要關心的是接口,以及數據庫端是否能承受得住壓力,還有數據庫是否存在并發問題。C/S架構形式多樣,雖然關注的地方比較單一,但是性能測試非常復雜,針對不同的內容,可能方法完全不一樣。在此,不做討論。
B/S架構的系統,性能方面關注的內容比C/S豐富的多。經典的web框架,分三層結構:客戶顯示層、業務邏輯層、數據庫層。隨著技術的發展,業務邏輯層又被拆分成很多層次,例如應用層、基礎服務層、消息同步層、cache等等。業務邏輯層又可以使用多種中間件實現,比如java開發的系統,會用到 jboss。整個系統的性能,除了jboss,還依賴于apache、網絡、數據庫性能等。
計算機技術已經廣泛應用于企業管理、互聯網絡等方面,相應的也誕生了辦公使用的OA系統和大型互聯網站系統。籠統可以劃分為這兩種。例如,人力資源管理系統、移動的信息管理平臺,都應該屬于OA系統范疇;而淘寶網,應該屬于大型互聯網站系統,而且是純粹電子商務方面的。這里,主要是針對淘寶網性能測試的思考。
在淘寶,系統架構比上述的輕描淡寫更加復雜。針對這么復雜的大型系統,面對每天巨大的流量、巨大的用戶群體,如何保證網站的性能?保證網站不宕機?通過性能測試可以解決這些問題,但是,新的問題又提出了,淘寶網的性能測試又該如何入手呢?
或許我們很容易想到,通過統計網站的用戶量,進行大量用戶下的性能測試,就能保證網站的性能。但,事實真的是這樣嗎?不然。
其實,網站與OA系統是有區別的。一個信息管理系統,它是一定能計算出總用戶數和使用用戶數的,也能比較準確的統計到并發用戶數,而且在一定時間內,系統使用的頻率一定是不高的。但是,一個超大型的電子商務網站,面對幾億的用戶群體,在同一時間,使用用戶數是不停變化的,且在同一時刻,即便用戶在線,也可能點擊瀏覽的是不同的頁面,觸發的是不同的請求。如果單從并發用戶的角度去考慮問題,進行分析和建模,未必適用。
既然傳統的策略不能用,我們該怎樣去面對呢?我們需要尋找固定不變的東西,從而找到突破點。從互聯網的特點出發,可以看到,在線用戶是不斷變化的,但是頁面是固定的。用戶U訪問了P頁面的行為,是能捕獲的。換句話,對于頁面P,不管當前有100個用戶,還是1000個用戶在使用,頁面的page view是可以統計的。這,就是問題的突破口。通過該方式,可以將頁面流量直接轉化成page view,做為性能測試的預期目標,而不去care在線用戶數和并發用戶數。得到這個數值之后,再通過建模、分析,將它轉化成測試工具可以衡量的指標,從而使復雜的模型變得簡單化。
突破口找到之后,接下來的工作就相對容易開展些。搭建性能測試環境、性能測試設計、性能測試腳本編寫與執行、結果分析、調優等環節,都有了依據。
任何問題的解決,最難克服的就是突破口。
原文:http://tech.it168.com/a2009/0527/578/000000578519.shtml
posted on 2009-05-29 13:37 xskow! 閱讀(172) 評論(0) 編輯 收藏 所屬分類: 測試