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


