天天看點

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

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

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

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

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

  伺服器端性能測試工具也我們測試人員通常所認為的性能測試工具。loadrunner、jmeter、silkperformance、伺服器端壓力性能工具需要支援産生壓力和負載,錄制和生成腳本,設定和部署場景,産生并發使用者和向系統施加持續的壓力。

  前端性能測試工具應用比較廣泛,開發人員,前端開發人員、測試人員都會經常用到。firebug 、fildder2、yslow 、前端性能測試工具隻需要關于心浏覽器等用戶端工具對具體需要展現的頁面的處理過程。

伺服器性能測試工具原理                                                        

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

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

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

     對于目前流行的性能測試工具,他們的基本工作原理都是一緻的。在用戶端通過多線程或多程序模拟虛拟使用者通路,對伺服器端施加壓力,然後在過程中監控和收集性能資料。

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

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

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

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

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

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

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

使用者行為生成部分

     我為什麼說的這麼朦胧,對于熟悉loadrunner的朋友,我說成虛拟使用者腳本生成器,你更容易了解,這個腳本,我們可以錄制,也可以手工編寫。你不要以為這是生成使用者行為的唯一方式。因為在jmeter成中是添加各種元件,通過對元件的配置來完成使用者行為的,當然也可以通過錄制。而在相對簡陋的性能測試工具curl_loader(linux環境下的運作的),他是通過編寫配置檔案的形式來描述使用者形為的。

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

壓力産生器

  壓力産生器用于根據腳本内容産生實際的負載,在性能測試工具中,壓力産生器扮演着“産生負載”的角色。也就根使用者的設

置,進行自我複制來生成多個用戶端向伺服器發送請求。對于工具來說,每複制出來的一份就是一個程序或線程,程序和線程的運作是要占用系統資源的。是以,對

一台壓力測試機來說能運作的虛拟使用者數也是有限的。根基測試機的配置而定。那麼這個時候就要通過多台測試機合作,來模拟更多的虛拟使用者向伺服器發請求。

  那麼,對于性能測試來說,很重要的一點就是産生“并發”的請求,不然就不會對伺服器産生壓力。那多台機子如何産生“步調一緻”的虛拟使用者呢?使用“使用者代理”

使用者代理

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

排程能力

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

監控系統

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

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

壓力結果分析

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

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

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

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