1. 程式人生 > >【蟲師--系列08】效能測試知多少---效能測試工具原理與架構

【蟲師--系列08】效能測試知多少---效能測試工具原理與架構

來自:http://www.cnblogs.com/fnng/archive/2012/07/31/2617546.html      作者:蟲師

在效能測試的學習過程中,堅持思想與工具(分開)並行,當前面世面上的效能測試書籍大多把理論與loadrunner融為一體講解,這樣做是正確的,因為有一些效能名詞概念也源於工具。但是,效能測試不是loadrunner,所有的作者也是這麼認為的。但他們在講效能測試的時候講的就是loadrunner有,只是講的多少不同罷啦。

     你是否覺得我對loadrunner有仇?我之所以將其分開來學,只是希望自己在學習效能測試的時候不要被loadrunner侷限了而已。只是覺得在做效能測試時不要帶

loadrunner的思維,這樣更容易把握效能測試的本質。

----------------------------------------------------- 

  效能測試工具,從廣義上講,在效能測試過程中使用到的所有工具都可以稱其為效能測試工具。從狹義上來講,我們可以把效能測試工具分為伺服器端效能測試工具與前段效能測試工具。

  伺服器端效能測試工具也我們測試人員通常所認為的效能測試工具。LoadRunnerJMeterSilkPerformance、伺服器端壓力效能工具需要支援產生壓力和負載,錄製和生成指令碼,設定和部署場景,產生併發使用者和向系統施加持續的壓力。

  前端效能測試工具應用比較廣泛,開發人員,前端開發人員、測試人員都會經常用到。Firebug 

fildder2Yslow 、前端效能測試工具只需要關於心瀏覽器等客戶端工具對具體需要展現的頁面的處理過程。

伺服器效能測試工具原理                                                        

  效能測試工具的主要作用是通過模擬生產環境中的真實業務操作,對被測試系統實行壓力負載測試,監視被 測試系統在不同業務、不同壓力效能下的效能表現,找出潛在的效能瓶頸進行分析、優化。

  客戶端與伺服器相當於兩個人,通過資訊來進行交流。由於初次見面不好意思直接交流,與是找來了中間傳話人,客戶端把資訊告訴給傳話人,由傳話人來轉達給伺服器。那麼伺服器反饋的資訊也由傳話人轉達給客戶端。一般效能測試工具都需要錄製或編寫客戶端行為指令碼。

      這樣傳達人就有了客戶端的行為能力,從而假扮客戶端來欺騙伺服器,與之進行通訊。有了客戶端行為了傳達人可以進行自我複製。從而變出N多個傳達人對伺服器進通訊。---這個傳達人的行為和能力也就是效能測試工具的基本特質。(突然覺得效能工具像第三者插足,而且是可以自我複製瘋狂變態的第三者,哈哈!)

     對於目前流行的效能測試工具,他們的基本工作原理都是一致的。在客戶端通過多執行緒或多程序模擬虛擬使用者訪問,對伺服器端施加壓力,然後在過程中監控和收集效能資料。

效能測試工具應該具備什麼的特質呢?

1、工具本身佔用系統資源少,可擴充套件性好,可用性強。    

2、能模擬真實業務事務操作,在併發時能真正產生業務壓力。(這一點是核心)

3、對壓力測試結果能很好地進行效能分析,快速找出被測試系統的瓶頸。

4、測試指令碼的重複性強。

伺服器效能測試工具的架構                                                             

使用者行為生成部分

     我為什麼說的這麼朦朧,對於熟悉loadrunner的朋友,我說成虛擬使用者指令碼生成器,你更容易理解,這個指令碼,我們可以錄製,也可以手工編寫。你不要以為這是生成使用者行為的唯一方式。因為在JMeter成中是新增各種元件,通過對元件的配置來完成使用者行為的,當然也可以通過錄制。而在相對簡陋的效能測試工具curl_loaderlinux環境下的執行的),他是通過編寫配置檔案的形式來描述使用者形為的。

     我前面也有提了,雖然效能測試工具由不同的形式來描述,但他們的原理是一樣的,都是通過Proxy方式來實現,具體來說,Proxy作為客戶端和伺服器之間的中間人,接收客戶端的資料包。

壓力產生器

  壓力產生器用於根據指令碼內容產生實際的負載,在效能測試工具中,壓力產生器扮演著“產生負載”的角色。也就根使用者的設定,進行自我複製來生成多個客戶端向伺服器傳送請求。對於工具來說,每複製出來的一份就是一個程序或執行緒,程序和執行緒的執行是要佔用系統資源的。所以,對一臺壓力測試機來說能執行的虛擬使用者數也是有限的。根基測試機的配置而定。那麼這個時候就要通過多臺測試機合作,來模擬更多的虛擬使用者向伺服器發請求。

  那麼,對於效能測試來說,很重要的一點就是產生“併發”的請求,不然就不會對伺服器產生壓力。那多臺機子如何產生“步調一致”的虛擬使用者呢?使用“使用者代理”

使用者代理

  使用者代理是執行在負載機上的程序,該程序與產生負載壓力的程序或執行緒協作,接收排程系統的命令,排程產生負載壓力的程序或執行緒,從這個意義上看,使用者代理也是壓力產生器的一部分。

排程能力

  我們在做複雜的效能測試時,常常會設計各種場景,不同的虛擬使用者數,不同事務的使用者比例,執行時間,設定同步點等,這個時候也需要我們的測試工具有壓力排程能力。從而才能更真實的模擬我們所設計的執行場景。

監控系統

  監控系統是效能測試工具直接與使用者進行互動的主要部分,監控系統,主要使用者在壓力測試過程中對各種軟硬體進行監控,如對資料庫、應用伺服器,伺服器的主要效能表現情況進行監控。用於判斷系統當前處於什麼狀態。

  當然,監控系統不是效能工具必須的部分,可以通過軟硬體系統自身的監控工具或者第三方監控工具進行監控。但是否有強大的效能計數器監控系統是衡量效能測試工具是否強大的指標之一。

壓力結果分析

  壓力結果分析工具可以用來輔助進行測試結果的分析,效能測試工具一般都能將監控系統獲取的效能技術數器值生成曲線圖,折線圖等各種圖表。通過展現效能測試過程中的各種引數指標,來供測試人員進行分析。

  但這裡需要強調的是,壓力結果分析工具本身不能代替分析者進行效能結果分析,而只是提供多種不同的資料揭示和呈現方法而已。對於這些資料進行分析必然要依靠測試工程師對系統性能分析的知識和經驗。

------------------------------------------------------- 

  對上面介紹的效能測試工具架構的組成部分,不是第一個效能測試工具都具備,而所具備的強大程度也不相同。比如,有些效能測試工具不具備使用者代理能,有些監控系統能監控的資源很有限或簡陋,有些結果分析資料的呈現不夠詳盡等。