繼續(xù)這個(gè)系列的學(xué)習(xí),這一節(jié)重點(diǎn)介紹目前流行的性能測(cè)試工具以及如何選擇適合項(xiàng)目的工具。在此之前,我已經(jīng)對(duì)性能測(cè)試工具的原理與架構(gòu)做了分析。
http://www.cnblogs.com/fnng/archive/2012/07/31/2617546.html
性能測(cè)試工具的選擇與評(píng)估
在性能工具原理與架構(gòu)一章中,我們了解到性能測(cè)試工具的原理通常是:通過錄制、回放腳本,模擬多用戶同時(shí)訪問被測(cè)試系統(tǒng),模擬產(chǎn)生負(fù)載壓力,監(jiān)控并記錄各種性能指標(biāo),生成性能分析結(jié)果和報(bào)告,從而完性能測(cè)試的基本任務(wù)。
對(duì)需要進(jìn)行性能測(cè)試的組織來說,決定使用哪種性能測(cè)試工具也不是一個(gè)簡(jiǎn)單的問題。我們有需要對(duì)性能需求進(jìn)行分析,購(gòu)買成本,人員學(xué)習(xí)使用成本進(jìn)行綜合考慮,從而確定最適合的本次性能測(cè)試的工具。
注:這里所提到的性能測(cè)試工具為狹義上的性能測(cè)試工具,特指包含腳本生成、負(fù)載生成與測(cè)試數(shù)據(jù)搜集的性能測(cè)試工具,從廣義上來講,在性能測(cè)試過程中所用到一切工具,都可以稱為性能測(cè)試工具,其中包括,軟件協(xié)議分析工具,測(cè)試數(shù)據(jù)生成工具,測(cè)試監(jiān)控工具等都屬于性能測(cè)試工具范疇。
我簡(jiǎn)單的軟件性能測(cè)試工具分為三類,商業(yè)收費(fèi)工具、開源免費(fèi)工具、自主開發(fā)工具。下面是這三類工具的比較:

通過上面的比較分析,很難判別對(duì)某類工具的取舍,各自有其明顯的優(yōu)勢(shì),當(dāng)然也有明顯的缺點(diǎn),如何更好選擇工具,這里就要結(jié)合實(shí)際性能的需求了。
需要考慮以下幾個(gè)方面:
性能需求:
首先要考慮的是否滿足性能需求,例如系統(tǒng)的協(xié)議不支持,無法創(chuàng)建腳本,系統(tǒng)的模擬用戶數(shù)達(dá)不到,或都某此特殊功能無法測(cè)試,如流媒體性能測(cè)試等。一些有性能工具是無法滿足這些需求的,那當(dāng)然要首先排除。
購(gòu)買成本:
對(duì)于商業(yè)工具的購(gòu)買成本也是我們需要考慮的問題,其實(shí),這個(gè)問題也是老板需要考慮的問題,對(duì)性能測(cè)試成本的整體預(yù)算等。當(dāng)然了,在滿足性能需求的前提下,當(dāng)然一切從簡(jiǎn)。如果只需要某商業(yè)軟件的部分功能,也可以只購(gòu)買部分功能。有的是根據(jù)支持協(xié)議的多少、并發(fā)用戶上限來區(qū)分,如loadrunner 。
這里要多扯一點(diǎn),loadrunner應(yīng)該是性能測(cè)試領(lǐng)域的巨無霸,它的年服務(wù)費(fèi)多百萬,這不是一般的小公司能承受的,可能許多網(wǎng)友用破解習(xí)慣了不以為然。而且loadrunner是可以定制的,一般商業(yè)軟件都是可以定制的,也就是說,你有特定的需求,只要你愿意花錢,提供商都可以幫你定制開發(fā)。這樣算下來成本會(huì)很高。
那么開源軟件呢? 開源的性能測(cè)試工具其實(shí)非常的多,因?yàn)樗鼈兌挤謩e適合在不同的需求場(chǎng)景下,所以,它們的體積相比商業(yè)軟件會(huì)小很大,當(dāng)然功能也相對(duì)簡(jiǎn)陋。但是他們?cè)谀承┣闆r下可以完全滿足某些性能需求,或者可以通過幾款開源工具配合滿足,或者通過對(duì)開源工具進(jìn)行擴(kuò)展進(jìn)行滿足。對(duì)開源工具進(jìn)行擴(kuò)展,對(duì)測(cè)試人員的要求較高。需要測(cè)試人員對(duì)工具的原理及源代碼有相當(dāng)有研究。這里對(duì)測(cè)試人員自動(dòng)能力的提升非常有幫助。
或者你的性能測(cè)試項(xiàng)目特殊,找遍市面上的所有性能工具無一款滿意,商業(yè)定制成本過高。或者你想構(gòu)建自己有工具體系。處于公司需求的特殊性與長(zhǎng)期性考慮,可以自主開發(fā)一個(gè)性能測(cè)試工具來用。一次開發(fā),永久收益(當(dāng)然也需要維護(hù)與升級(jí)、擴(kuò)展等),而且更貼近自已的需求。目前很多知明的大公司都有自己的性能測(cè)試工具,用于內(nèi)部使用。
人員學(xué)習(xí)成本:
最后要提到的就是人員對(duì)工具的學(xué)習(xí)成本,其實(shí),測(cè)試人員在選擇性能測(cè)試工具時(shí)最先考慮的就是從自己會(huì)使用的工具入手,這樣可以最低的控制學(xué)習(xí)成生,如果整一個(gè)工具,測(cè)試人員單學(xué)測(cè)試腳本就學(xué)了半年,老板早讓你走人了。這也是對(duì)性能測(cè)試人員要求較高的地方。所以,對(duì)于性能測(cè)試人員,你最好熟悉一款流程的商業(yè)性能工具,一款開源免費(fèi)性能具,還需要熟悉常見的性能腳本開發(fā)語言等,這是基本要求。
性能測(cè)試工具介紹
商業(yè)工具 :
QA Load:Compuware公司的QALoad是客戶/服務(wù)器系統(tǒng)、企業(yè)資源配置(ERP)和電子商務(wù)應(yīng)用的自動(dòng)化負(fù)載測(cè)試工具。QALoad是QACenter性能版的一部分,它通過可重復(fù)的、真實(shí)的測(cè)試能夠徹底地度量應(yīng)用的可擴(kuò)展性和性能。QACenter匯集完整的跨企業(yè)的自動(dòng)測(cè)試產(chǎn)品,專為提高軟件質(zhì)量而設(shè)計(jì)。QACenter可以在整個(gè)開發(fā)生命周期、跨越多種平臺(tái)、自動(dòng)執(zhí)行測(cè)試任務(wù)。
SilkPerformer:一種在工業(yè)領(lǐng)域最高級(jí)的企業(yè)級(jí)負(fù)載測(cè)試工具。它可以模仿成千上萬的用戶在多協(xié)議和多計(jì)算的環(huán)境下工作。不管企業(yè)電子商務(wù)應(yīng)用的規(guī)模大小及其復(fù)雜性,通過SilkPerformer,均可以在部署前預(yù)測(cè)它的性能。可視的用戶化界面、實(shí)時(shí)的性能監(jiān)控和強(qiáng)大的管理報(bào)告可以幫助我們迅速的解決問題,例如加快產(chǎn)品投入市場(chǎng)的時(shí)間,通過最小的測(cè)試周期保證系統(tǒng)的可靠性,優(yōu)化性能和確保應(yīng)用的可擴(kuò)充性。
LoadRunner:一種較高規(guī)模適應(yīng)性的,自動(dòng)負(fù)載測(cè)試工具,它能預(yù)測(cè)系統(tǒng)行為,優(yōu)化性能。LoadRunner強(qiáng)調(diào)的是整個(gè)企業(yè)的系統(tǒng),它通過模擬實(shí)際用戶的操作行為和實(shí)行實(shí)時(shí)性能監(jiān)測(cè),來幫助您更快的確認(rèn)和查找問題。此外,LoadRunner 能支持最寬范的協(xié)議和技術(shù),為您的特殊環(huán)境,量身定做地提供解決方案。
WebRunner:是RadView公司推出的一個(gè)性能測(cè)試和分析工具,它讓web應(yīng)用程序開發(fā)者自動(dòng)執(zhí)行壓力測(cè)試;webload通過模擬真實(shí)用戶的操作,生成壓力負(fù)載來測(cè)試web的性能,用戶創(chuàng)建的是基于javascript的測(cè)試腳本,稱為議程agenda,用它來模擬客戶的行為,通過執(zhí)行該腳本來衡量web應(yīng)用程序在真實(shí)環(huán)境下的性能。
IBM Rational Performance Tester(簡(jiǎn)稱 RPT)也是一款性能測(cè)試工具,適用于基于 Web 的應(yīng)用程序的性能和可靠性測(cè)試。Rational Performance Tester 將易用性與深入分析功能相結(jié)合,從而簡(jiǎn)化了測(cè)試創(chuàng)建、負(fù)載生成和數(shù)據(jù)收集,以幫助確保應(yīng)用程序具有支持?jǐn)?shù)以千計(jì)并發(fā)用戶并穩(wěn)定運(yùn)行的性能。
開源或免費(fèi)工具:
Apache JMeter是Apache組織開發(fā)的基于Java的壓力測(cè)試工具。用于對(duì)軟件做壓力測(cè)試,它最初被設(shè)計(jì)用于Web應(yīng)用測(cè)試但后來擴(kuò)展到其他測(cè)試領(lǐng)域。 它可以用于測(cè)試靜態(tài)和動(dòng)態(tài)資源例如靜態(tài)文件、Java 小服務(wù)程序、CGI 腳本、Java 對(duì)象、數(shù)據(jù)庫(kù), FTP 服務(wù)器, 等等。JMeter 可以用于對(duì)服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,來在不同壓力類別下測(cè)試它們的強(qiáng)度和分析整體性能。
AutoBench 是一款基于httperf的Perl腳本。它會(huì)在一次測(cè)試中調(diào)用多次httperf來對(duì)web服務(wù)器進(jìn)行測(cè)試,每次會(huì)按照給定的參數(shù)增加并發(fā)連接數(shù),將 httperf的測(cè)試結(jié)果保存為CSV格式的文件,該文件可以被Excel直接讀取,方便生成測(cè)試報(bào)告。借助于autobench自帶的 bench2graph工具可以生成漂亮的測(cè)試結(jié)果對(duì)比圖。
ApacheBench 工具程式(ab)是 Apache 網(wǎng)站伺服器軟體的一個(gè)附帶的工具軟體,專門用來執(zhí)行網(wǎng)站伺服器的運(yùn)行效能,特別是針對(duì) Apache 網(wǎng)站伺服器 的效能分析。這支程式原本是用來檢測(cè) Apache 網(wǎng)站伺服器(Web Server) 所能夠提供的效能,特別是可以看出 Apache 網(wǎng)站伺服器能提供每秒能送出多少網(wǎng)頁(yè),當(dāng)然的,也可以用在任何其他的網(wǎng)站伺服器 Apache ab的全稱是ApacheBench,是 Apache 附帶的一個(gè)小工具,專門用于 HTTP Server 的benchmark testing,可以同時(shí)模擬多個(gè)并發(fā)請(qǐng)求。
curl-loader(也被稱為“omes-NIK”和“davilka”)是一個(gè)開源的C語言編寫的工具,模擬應(yīng)用負(fù)載和成千上萬的幾十萬人的HTTP / HTTPS和FTP/ FTPS的客戶端應(yīng)用程序的行為,每個(gè)有其自己的源IP地址。相反,其他curl-loader使用真正的C編寫的客戶端協(xié)議棧,即libcurl和TLS/ openssl的SSL的HTTP和FTP協(xié)議棧,支持登錄和驗(yàn)證口味和模擬用戶行為的工具。
Iago 是一個(gè)網(wǎng)站負(fù)載測(cè)試工具,Iago 針對(duì)一個(gè)給定的網(wǎng)站進(jìn)行訪問錄制并合成流量數(shù)據(jù)。它不同于其他的負(fù)載生成工具,它試圖保持恒定的請(qǐng)求率。例如如果你想按每分鐘100K來請(qǐng)求您的服務(wù),Iago 會(huì)試圖保持這個(gè)速度進(jìn)行測(cè)試。
Pylot 是一款開源的用以測(cè)試 Web Service性能和擴(kuò)展性的工具,它運(yùn)行HTTP負(fù)載測(cè)試,這對(duì)于制定容量計(jì)劃、確定基準(zhǔn)點(diǎn)、分析系統(tǒng)瓶頸以及系統(tǒng)調(diào)優(yōu)都非常有用。在使用過程 中,Pylot會(huì)發(fā)起并發(fā)請(qǐng)求(HTTP Requests),檢驗(yàn)服務(wù)器響應(yīng),以及帶有相關(guān)指標(biāo)的報(bào)表。它通過GUI或者Shell/Console來執(zhí)行和監(jiān)視對(duì)被測(cè)試網(wǎng)站的測(cè)試過程。
-----------------------------------------------
關(guān)于性能測(cè)試工具非常的多,如果你是個(gè)開源的粉絲可以去開源中國(guó)轉(zhuǎn)轉(zhuǎn),那里有許多非常優(yōu)秀的開源軟件。
目前市場(chǎng)上的性能測(cè)試的工具種類很多,可以簡(jiǎn)單的劃分為以下幾種:負(fù)載壓力測(cè)試工具、資源監(jiān)控工具、故障定位工具以及調(diào)優(yōu)工具。
1. 主流負(fù)載性能測(cè)試工具
負(fù)載性能測(cè)試工具的原理通常是通過錄制、回放腳本、模擬多用戶同時(shí)訪問被測(cè)試系統(tǒng),制造負(fù)載,產(chǎn)生并記錄各種性能指標(biāo),生成分析結(jié)果,從而完成性能測(cè)試的任務(wù)。
主流的負(fù)載性能測(cè)試工具有:
QA Load:Compuware公司的QALoad是客戶/服務(wù)器系統(tǒng)、企業(yè)資源配置(ERP)和電子商務(wù)應(yīng)用的自動(dòng)化負(fù)載測(cè)試工具。QALoad是QACenter性能版的一部分,它通過可重復(fù)的、真實(shí)的測(cè)試能夠徹底地度量應(yīng)用的可擴(kuò)展性和性能。QACenter匯集完整的跨企業(yè)的自動(dòng)測(cè)試產(chǎn)品,專為提高軟件質(zhì)量而設(shè)計(jì)。QACenter可以在整個(gè)開發(fā)生命周期、跨越多種平臺(tái)、自動(dòng)執(zhí)行測(cè)試任務(wù)。
SilkPerformer:一種在工業(yè)領(lǐng)域最高級(jí)的企業(yè)級(jí)負(fù)載測(cè)試工具。它可以模仿成千上萬的用戶在多協(xié)議和多計(jì)算的環(huán)境下工作。不管企業(yè)電子商務(wù)應(yīng)用的規(guī)模大小及其復(fù)雜性,通過SilkPerformer,均可以在部署前預(yù)測(cè)它的性能。可視的用戶化界面、實(shí)時(shí)的性能監(jiān)控和強(qiáng)大的管理報(bào)告可以幫助我們迅速的解決問題,例如加快產(chǎn)品投入市場(chǎng)的時(shí)間,通過最小的測(cè)試周期保證系統(tǒng)的可靠性,優(yōu)化性能和確保應(yīng)用的可擴(kuò)充性。
LoadRunner:一種較高規(guī)模適應(yīng)性的,自動(dòng)負(fù)載測(cè)試工具,它能預(yù)測(cè)系統(tǒng)行為,優(yōu)化性能。LoadRunner強(qiáng)調(diào)的是整個(gè)企業(yè)的系統(tǒng),它通過模擬實(shí)際用戶的操作行為和實(shí)行實(shí)時(shí)性能監(jiān)測(cè),來幫助您更快的確認(rèn)和查找問題。此外,LoadRunner 能支持最寬范的協(xié)議和技術(shù),為您的特殊環(huán)境,量身定做地提供解決方案。
WebRunner:是RadView公司推出的一個(gè)性能測(cè)試和分析工具,它讓web應(yīng)用程序開發(fā)者自動(dòng)執(zhí)行壓力測(cè)試;webload通過模擬真實(shí)用戶的操作,生成壓力負(fù)載來測(cè)試web的性能,用戶創(chuàng)建的是基于javascript的測(cè)試腳本,稱為議程agenda,用它來模擬客戶的行為,通過執(zhí)行該腳本來衡量web應(yīng)用程序在真實(shí)環(huán)境下的性能。
免費(fèi)測(cè)試工具:
OpenSTA:開源項(xiàng)目,功能強(qiáng)大,自定義功能設(shè)置完備,但設(shè)置通過Script來完成。必須學(xué)習(xí)Script編寫
WAS(Web Application Stress Tool):微軟的工具,輸出結(jié)果是純文本的。
主流商用負(fù)載性能工具的比較圖如下:
2.資源監(jiān)控工具
資源監(jiān)控作為系統(tǒng)壓力測(cè)試過程中的一個(gè)重要環(huán)節(jié),在相關(guān)的測(cè)試工具中基本上都有很多的集成。只是不同的工具之間,監(jiān)控的中間件、數(shù)據(jù)庫(kù)、主機(jī)平臺(tái)的能力以及方式各有差異。而這些監(jiān)控工具更大程度上都依賴于被監(jiān)控平臺(tái)自身的數(shù)據(jù)采集能力,目前的絕大多數(shù)的監(jiān)控工具基本上是直接從中間件、數(shù)據(jù)庫(kù)以及主機(jī)自身提供的性能數(shù)據(jù)采集接口獲取性能指標(biāo)。
首先,不同的應(yīng)用平臺(tái)有自身的監(jiān)控命令以及控制界面。比如UNIX主機(jī)用戶可以直接使用topas,vmstat,iostat了解系統(tǒng)自身的健康工作狀況。另外,weblogic以及websphere平臺(tái)都有自身的監(jiān)控臺(tái),在上面可以了解到目前的JVM的大小、數(shù)據(jù)庫(kù)連接池的使用情況以及目前連接的客戶端數(shù)量以及請(qǐng)求狀況等等。只是這些監(jiān)控方式的使用對(duì)測(cè)試人員有一定的技術(shù)儲(chǔ)備要求,需要自己熟練掌握以上監(jiān)控方式的使用。
第三方的監(jiān)控工具相應(yīng)的對(duì)一些系統(tǒng)平臺(tái)的監(jiān)控進(jìn)行了集成。比如Loadrunner對(duì)目前常用的一些業(yè)務(wù)系統(tǒng)平臺(tái)環(huán)境都提供了相應(yīng)的監(jiān)控入口,從而可以在并發(fā)測(cè)試的同時(shí),對(duì)業(yè)務(wù)系統(tǒng)所處的測(cè)試環(huán)境進(jìn)行監(jiān)控,更好的分析測(cè)試數(shù)據(jù)。
但Loadrunner工具其提供的監(jiān)控方式還不是很直觀,一些更直觀的測(cè)試工具能在監(jiān)控的同時(shí)提供相關(guān)的報(bào)警信息,類似的監(jiān)控產(chǎn)品如QUEST公司提供的一整套監(jiān)控解決方案包括了主機(jī)的監(jiān)控、中間件平臺(tái)的監(jiān)控以及數(shù)據(jù)庫(kù)平臺(tái)的監(jiān)控。QUEST系列監(jiān)控產(chǎn)品提供了直觀的圖形化界面,能讓測(cè)試者盡快進(jìn)入監(jiān)控的角色。
3. 故障定位工具以及調(diào)優(yōu)工具
技術(shù)的不斷發(fā)展以及測(cè)試需求的不斷提升,故障定位工具應(yīng)運(yùn)而生,它能更精細(xì)的對(duì)負(fù)載壓力測(cè)試中暴露的問題進(jìn)行故障根源分析。在目前的主流測(cè)試工具廠商中,都相應(yīng)地提供了對(duì)應(yīng)的產(chǎn)品支持。尤其是目前.NET以及J2EE架構(gòu)的流行,測(cè)試工具廠商紛紛在這些領(lǐng)域提供了相關(guān)的技術(shù)產(chǎn)品,比如Loadrunner模塊中添加的診斷以及調(diào)優(yōu)模塊、Quest公司的PerformaSure、Compuware的Vantage套件以及CA公司收購(gòu)的Wily的Introscope工具等等,都在更深層次上對(duì)業(yè)務(wù)流的調(diào)用進(jìn)行追蹤。這些工具在中間件平臺(tái)上引入探針技術(shù),能捕獲后臺(tái)業(yè)務(wù)內(nèi)部的調(diào)用關(guān)系,發(fā)現(xiàn)問題所在,為應(yīng)用系統(tǒng)的調(diào)優(yōu)提供直接的參考指南。
在數(shù)據(jù)庫(kù)產(chǎn)品的故障定位分析上,Oracle自身提供了強(qiáng)大的診斷模塊,同時(shí),Quest公司的數(shù)據(jù)庫(kù)產(chǎn)品也在數(shù)據(jù)庫(kù)設(shè)計(jì)、開發(fā)以及上線運(yùn)行維護(hù)都提供了全套的產(chǎn)品支持。