性能測試知多少---性能測試工具原理與架構


 

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

     你是否覺得我對loadrunner有仇?我之所以將其分開來學,只是希望自己在學習性能測試的時候不要被loadrunner局限了而已。只是覺得在做性能測試時不要帶loadrunner的思維,這樣更容易把握性能測試的本質。

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

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

  服務器端性能測試工具也我們測試人員通常所認為的性能測試工具。LoadRunnerJMeterSilkPerformance、服務器端壓力性能工具需要支持產生壓力和負載,錄制和生成腳本,設置和部署場景,產生並發用戶和向系統施加持續的壓力。

  前端性能測試工具應用比較廣泛,開發人員,前端開發人員、測試人員都會經常用到。Firebug fildder2Yslow 、前端性能測試工具只需要關於心瀏覽器等客戶端工具對具體需要展現的頁面的處理過程。

 

 

服務器性能測試工具原理                                                        

 

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

  客戶端與服務器相當於兩個人,通過信息來進行交流。由於初次見面不好意思直接交流,與是找來了中間傳話人,客戶端把信息告訴給傳話人,由傳話人來轉達給服務器。那么服務器反饋的信息也由傳話人轉達給客戶端。一般性能測試工具都需要錄制或編寫客戶端行為腳本。

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

     對於目前流行的性能測試工具,他們的基本工作原理都是一致的。在客戶端通過多線程或多進程模擬虛擬用戶訪問,對服務器端施加壓力,然后在過程中監控和收集性能數據。

性能測試工具應該具備什么的特質呢?

1、工具本身占用系統資源少,可擴展性好,可用性強。    

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

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

4、測試腳本的重復性強。

 

 

服務器性能測試工具的架構                                                             

   

用戶行為生成部分

     我為什么說的這么朦朧,對於熟悉loadrunner的朋友,我說成虛擬用戶腳本生成器,你更容易理解,這個腳本,我們可以錄制,也可以手工編寫。你不要以為這是生成用戶行為的唯一方式。因為在JMeter成中是添加各種組件,通過對組件的配置來完成用戶行為的,當然也可以通過錄制。而在相對簡陋的性能測試工具curl_loaderlinux環境下的運行的),他是通過編寫配置文件的形式來描述用戶形為的。

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

 

壓力產生器

  壓力產生器用於根據腳本內容產生實際的負載,在性能測試工具中,壓力產生器扮演着“產生負載”的角色。也就根用戶的設置,進行自我復制來生成多個客戶端向服務器發送請求。對於工具來說,每復制出來的一份就是一個進程或線程,進程和線程的運行是要占用系統資源的。所以,對一台壓力測試機來說能運行的虛擬用戶數也是有限的。根基測試機的配置而定。那么這個時候就要通過多台測試機合作,來模擬更多的虛擬用戶向服務器發請求。

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

 

用戶代理

  用戶代理是運行在負載機上的進程,該進程與產生負載壓力的進程或線程協作,接收調度系統的命令,調度產生負載壓力的進程或線程,從這個意義上看,用戶代理也是壓力產生器的一部分。

 

調度能力

  我們在做復雜的性能測試時,常常會設計各種場景,不同的虛擬用戶數,不同事務的用戶比例,運行時間,設置同步點等,這個時候也需要我們的測試工具有壓力調度能力。從而才能更真實的模擬我們所設計的運行場景。

 

監控系統

  監控系統是性能測試工具直接與用戶進行交互的主要部分,監控系統,主要用戶在壓力測試過程中對各種軟硬件進行監控,如對數據庫、應用服務器,服務器的主要性能表現情況進行監控。用於判斷系統當前處於什么狀態。

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

 

壓力結果分析

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

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

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM