性能測試工具, Pure Software vs Appliance[1] 軟件測試
因為工作的原因,會經常去關注一些性能測試工具。 測試有很多的領域和方面,可能性能測試這個方面最離不開工具,基本上沒有辦法純手工來做,因為你不大可能請一百個人同時點擊按鈕來模擬100個并發連接。所以測試工具在這個時候就顯得比較重要,甚至測試的范圍和深度也很大程度上也依賴于工具的能力,這也是為什么Mercury,Quest還有Spirent這種純粹做測試工具的廠商可以成為年收入幾億美刀公司的原因之一吧。不過近年有很多純做測試工具的廠商被一些巨頭如IBM,HP收購,這可能和IT行業的另一場大討論有關,那就是專注和大而全的問題,anyway,這些都沒有否定他們的價值。
性能測試工具的出現有很長時間了,而且已經有很多的領先者,比如Mercury LoadRunner, Rational Performance Tester, Segue SilkPerformer, 還有Empirix, Compuware,Quest的產品,后面的因為沒有機會試用,所以不熟悉。以上這些工具都是純軟件的性能測試工具的代表。各家的產品設計理念都不相同,基本上每家都提出了一些概念和賣點。但其實它們的主要架構都是類似的,大致可以分為以下幾個方面:
1. Virtual User Generator。性能測試很多是要模擬多個用戶或者client的行為,所以一個自然的起點是你要知道一個用戶的behavior,這個模塊的輸出一般是一個client的腳本,可以獨立執行完成一次操作。各家用的語言不同,大致有C,Java,Pascal等幾種。Of coz都說自己的好,可能用的人還是覺得自己熟悉的好。這個話題也很有意思,當別論。還有一個問題是如何生成這樣的腳本,基本上有兩種辦法,一是自己寫,根據手冊,甚至有些可以用標準的C和Java語言。二是錄制,就是捕捉真正的client的一次操作過程,然后通過協議的反向解析,得到步驟,就是上面說的腳本。很多時候可能是先錄制,再在上面改改。
2. Load Generator。 一個用戶的行為已經有了,現在的問題是要模擬出成百上千的用戶。這個可以借助多進程或者多線程的方法,單個機器的能力有限,所以很多都支持distribution的方法,可以把很多機器組織起來作為一個group來產生load。
3. Conductor/Controller。性能測試有時候像指揮一群人長跑,所以需要組織和協調,比如是所有人聽到槍聲就開始跑呢還是一批批的跑,好點的工具都支持壓力曲線。如果跑的過程中隊形亂了,你也可以大喊一聲stop,讓所有人都停下來,退回原點。Conductor做的事情還有很多,比如可以設定monitor和實時的數據顯示。
4. Analysis/report generator。測試跑完了之后自然是要有結果的,一般都會提供一份自動生成的report,這些就是分析模塊做的事情。好的工具應該可以提供詳細的不同層次的數據分析,也有一些智能化的分析會給出可能的bottleneck。
潮流總是一陣一陣的,今年皮草明年復古。IT這個行業也是一樣,最近幾年的一個潮流是Appliance,簡單的說就是以前賣軟件,現在把軟件裝在硬件里面連硬件一起賣。比如一些網關安全產品,像http,email方面已經有很多了,還有Google也推出了search appliance。記得以前聯想出過漢卡,還有什么殺毒卡,后面都被純軟件取代了,F在又開始有一些硬件取代純軟件的例子。由此可見很多東西都不是絕對的,要看環境了,有點適者生存的味道。關于純軟和appliance各自的優劣,我覺得是一個big topic,還有很多問題沒有想太清楚,另找機會來討論吧。
還是回來看性能測試工具領域,現在也有這樣的趨勢。其實上面說的性能測試,受個人眼光之狹隘,更偏向于應用系統的性能測試。因為在網絡基礎設施,比如交換 機,路由器和無線設備的測試方面,性能測試設備的使用由來已久,而且占主導地位。成熟的領域總是有一些廠商奠定了自己的領先地位,比如Spirent,IXIA和Agilent等等,F在的一個趨勢是這些傳統的網絡性能測試廠商開始向應用性能測試領域挺進,唯一的解釋是application load testing領域是一個很大的市場。是的,Yankee的預測是這個領域的revenue在08年將超過600M USD,所以對他們而言,跑到第七層是一個必然的方向。他們的宣傳口號已經變成了“提供完整和先進的2-7層性能測試解決方案”,F在這方面已經有了一些比較成熟的產品,比如Spirent的Avalanche+Reflector,IXIA的硬件搭載它們的IxLoad模塊。上面提到的性能測試工具的四個主要模塊他們都有。很多的性能測試用純軟件和appliance都可以完成,那么他們就沒有分別了嗎?目前來看還是有不少差別的,比如以下幾個方面。
文章來源于領測軟件測試網 http://www.kjueaiud.com/