如何有效的選擇性能測(cè)試工具
下方查看歷史精選文章
大數(shù)據(jù)測(cè)試過(guò)程、策略及挑戰(zhàn)
在過(guò)去的幾十年里,用于性能測(cè)試的自動(dòng)化工具發(fā)生了巨大的改變,從胖客戶端到Web架構(gòu),以及隨著移動(dòng)互聯(lián)的激進(jìn)的發(fā)展,越來(lái)越的應(yīng)用以移動(dòng)互聯(lián)的方式來(lái)提供服務(wù)。
相應(yīng)的性能測(cè)試相關(guān)的自動(dòng)化工具所需提供的功能也越來(lái)越面向Web和移動(dòng)開(kāi)發(fā),而不再是支持傳統(tǒng)的二層架構(gòu)中常用的技術(shù)了。
尤其是,這是年開(kāi)源社區(qū)的大力貢獻(xiàn),在開(kāi)源領(lǐng)域我們有了更多的優(yōu)秀的開(kāi)源性能測(cè)試工具,例如:
Apache JMeter: https://jmeter.apache.org
Gatling:?https://gatling.io
Locust:https://locust.io
這里就列出我們大家用到或容易接觸到的工具,其他工具就不羅列了。
似乎我們看著這些工具都不錯(cuò),但我們?cè)趯?shí)踐中還是會(huì)有顧慮的:如果你的一些性能測(cè)試場(chǎng)景涉及非Web場(chǎng)景,那么可選的工具就會(huì)大大減少。
盡管經(jīng)過(guò)這么多年,各類工具已經(jīng)大有發(fā)展,但對(duì)于非web類場(chǎng)景的開(kāi)源工具依舊像魔咒一樣困擾著很多測(cè)試人員。
從性能測(cè)試執(zhí)行和分析來(lái)看,非web場(chǎng)景的性能測(cè)試與web場(chǎng)景沒(méi)多大不同,關(guān)鍵的難點(diǎn)在于其通信協(xié)議不同,報(bào)文抓取、分析工具可能不一樣,以及對(duì)于測(cè)試場(chǎng)景腳本的開(kāi)發(fā)。? 對(duì)于有些應(yīng)用了加密、壓縮等技術(shù)的,在性能測(cè)試時(shí),會(huì)進(jìn)一步提升測(cè)試腳本的開(kāi)發(fā)難度。
當(dāng)然了,對(duì)于web應(yīng)用的性能測(cè)試有時(shí)也是會(huì)有一些挑戰(zhàn)的,例如流媒體的壓測(cè),使用了客戶端證書(shū)等安全機(jī)制的,針對(duì)這些應(yīng)用了特定技術(shù)的場(chǎng)景,大家就會(huì)發(fā)現(xiàn)現(xiàn)有的性能測(cè)試工具就無(wú)法滿足需求了。
所以在進(jìn)行性能測(cè)試之前,我們應(yīng)該充分:考慮工具的實(shí)際功能和壓測(cè)需求。
盡管在性能測(cè)試實(shí)施之際,有著各種挑戰(zhàn),但測(cè)試工具還是我們的必需選擇---因?yàn)椴皇褂霉ぞ撸覀儗o(wú)法開(kāi)展有效的性能測(cè)試。
所以我們要開(kāi)展有效的性能測(cè)試,就必須使用自動(dòng)化技術(shù)。
下面我們就市面上常見(jiàn)的商業(yè)工具和開(kāi)源工具進(jìn)行一個(gè)大的總結(jié),看看一般通用的性能測(cè)試工具有哪些共同點(diǎn):
?腳本模塊。工具都支持終端用戶行為的錄制,有些工具則支持多重協(xié)議的錄制,但不管是那種模式,筆者建議:盡量采用手工編碼方式來(lái)實(shí)現(xiàn)測(cè)試腳本。
測(cè)試管理。工具都會(huì)支持測(cè)試場(chǎng)景的創(chuàng)建、執(zhí)行,使用會(huì)話和場(chǎng)景來(lái)模擬不同用戶的操作行為。
壓力引擎。工具用于產(chǎn)生負(fù)載的核心功能,一般都支持分布式生成負(fù)載,以便支撐起大規(guī)模的性能測(cè)試實(shí)施。
分析模塊。提供對(duì)每次測(cè)試實(shí)施所產(chǎn)生的數(shù)據(jù)進(jìn)行分析的能力。通常包括了各種自動(dòng)產(chǎn)生的報(bào)表、可配置的圖表和原始數(shù)據(jù)。有些工具甚至提供了專家級(jí)或是更技術(shù)底層的分析能力,以幫助用戶對(duì)結(jié)果進(jìn)行深度分析、提煉更為重要的關(guān)注點(diǎn)。
可選能力。作為上述能力的補(bǔ)充,一般工具都會(huì)以插件的方式來(lái)提供豐富的可選能力,例如監(jiān)控能力等等。
通過(guò)上述回顧性能測(cè)試的發(fā)展及工具的共性,我們?cè)撊绾斡行У倪x擇我們的性能測(cè)試工具呢?
可能有人就會(huì)講了,這有什么好選擇的,不是jmeter、locust、就是loadrunner這些常見(jiàn)的工具羅。?
但本文的目的不是在于告訴你直接從現(xiàn)在市面上大家共知的工具,而是通過(guò)文章把我如何去選擇一個(gè)合適的工具的經(jīng)驗(yàn)告訴大家。
在很多時(shí)候,由于前期對(duì)工具、技術(shù)、團(tuán)隊(duì)、資源等評(píng)估不夠,很多性能測(cè)試項(xiàng)目在編寫腳本、性能分析階段陷入問(wèn)題的泥潭。下面是筆者如何選擇工具的一些建議。
?協(xié)議支持。選擇性能測(cè)試工具最重要的一點(diǎn)就是確保所選的工具能支持目標(biāo)壓測(cè)應(yīng)用協(xié)議棧。
直接成本。開(kāi)源工具一般來(lái)講不存在這個(gè)問(wèn)題,能直接使用工具所有的能力。但當(dāng)開(kāi)源工具不足以支撐我們的工作目標(biāo)時(shí),這些需要引入商業(yè)工具,就要考慮其授權(quán)方式了,例如虛擬用戶授權(quán)的價(jià)格。額外協(xié)議授權(quán)的費(fèi)用。額外的監(jiān)控和分析插件的費(fèi)用等等。
腳本能力。市面上大部分工具都宣稱通過(guò)錄制就能實(shí)現(xiàn)性能測(cè)試的目的,從筆者實(shí)際項(xiàng)目實(shí)踐來(lái)看,項(xiàng)目實(shí)踐時(shí),錄制功能是應(yīng)該丟入毛坑的。所以強(qiáng)悍的腳本支持能力是一個(gè)工具必備的,主要體現(xiàn)在幾個(gè)方面:一個(gè)是要有豐富的功能或是API;一個(gè)是有這對(duì)應(yīng)的詳細(xì)的文檔;一個(gè)是有社區(qū)的支持;一個(gè)是有完整的使用示例。
只是工具還是解決方案。很多工具只是一個(gè)單純的測(cè)試工具,但有的工具則是成套的性能測(cè)試解決方案,或是有配套的開(kāi)源解決方案。所謂解決方案通常包含:自動(dòng)化需求管理、數(shù)據(jù)的自動(dòng)構(gòu)造和管理、監(jiān)控和分析、結(jié)果可視化等等。
基于上述幾個(gè)方面的意見(jiàn),我們要根據(jù)現(xiàn)有團(tuán)隊(duì)的情況,來(lái)決定是引入合適的工具、還是解決方案還是基于開(kāi)源工具進(jìn)行二次開(kāi)發(fā)又或是外包。
不管是哪種方式,我們要充分考慮投入產(chǎn)出比。現(xiàn)在開(kāi)始有些第三方是性能測(cè)試saas服務(wù)商,甚至還提供基于其saas服務(wù)提供完整的測(cè)試實(shí)施和過(guò)程咨詢服務(wù)。
具體采用哪種方式,需要大家根據(jù)投入成本、團(tuán)隊(duì)現(xiàn)狀、未來(lái)團(tuán)隊(duì)發(fā)展等等因素來(lái)統(tǒng)籌考慮。


