軟件性能測試工具的發展以及不同性能測試工具之間的使用對比總結
一、性能測試工具的發展
性能測試工具的發展主要包括如下幾個階段:
- 開發工程師測試階段:由于早期沒有專業的性能測試工具,也沒有專門的性能測試工程師,所以性能測試主要依靠開發工程師自己通過寫測試代碼的方式來完成性能測試,而且這時的性能測試也比較簡單,相關體系和規范幾乎沒有。
- 性能測試工具的初期階段:在上個世紀末,隨著軟件系統的發展,性能測試開始被日益重視,也正是在此時開始出現了專業的性能測試工具,比如1998年Jmeter 發布了第一個版本,同時在1999年的時候,LoadRunner也發布了第一個版本,但是早期的性能測試工具都比較簡單,比如早期的LoadRunner僅僅用于模擬多個用戶同時訪問某個軟件系統,并且能收集一些性能測試數據以用于評估系統的性能表現。這時的性能測試工具的功能都比較少,無法滿足一些復雜業務場景的性能測試以及無法提供更多的性能分析診斷功能。同時這個階段開始出現了一些簡單的性能測試體系和規范,但是還遠遠不夠完善。
- 性能測試工具的發展階段:LoadRunner在發布了第一個版本后受到了大量軟件開發者的好評,隨后又開始發布了第二個版本,在這個版本中開始支持Web協議、數據庫協議等網絡應用協議,并且可以模擬多種Web瀏覽器的行為(比如點擊按鈕,填寫表單等),同時在2003年的時候,LoadRunner發布了第三個版本增加了對移動應用程序、不同網絡環境的模擬等的支持。與此同時Jmeter也在這個階段進行了大量的版本迭代和發布,光在1999年的時候,Jmeter 就發布了超過4個版本,支持了那個時期常見的Http等Web協議的性能測試。
- 性能測試工具的井噴階段:在這個階段除了LoadRunner、Jmeter在不斷的迭代發布之外,還出現了WebLoad(官方網址:https://www.radview.com/)、NeoLoad(官方網址:https://www.tricentis.com/products/performance-testing-neoload)、Gatling(官方網址:http://www.fefe.de/gatling/)、Ngrinder(官方網址:https://naver.github.io/ngrinder/)等大量的性能測試工具,這些性能測試工具各有特點,除了推動了性能測試工具的發展外,還極大的推動了性能測試這個行業的發展。
- 云服務性能測試工具階段:隨著云計算的出現和高速發展,軟件系統的部署不在局限于本地部署或者自建機房部署,而是更多的去上云部署,所以很多云服務的廠商也趁機推出了自己的云服務的性能測試工具,比如阿里云推出的性能測試 PTS工具(官方網址:https://cn.aliyun.com/product/pts)等,當然云服務的性能測試也可以通過傳統的Jmeter、LoadRunner等性能工具來完成。
- 性能測試工具的未來階段:隨著人工智能的快速發展,相信未來的性能測試工具也會更加AI化,會不需要性能測試工程師寫更多性能測試腳本,會讓性能測試變得更加簡單。
二、各個性能測試工具的對比
性能測試發展到現在已經非常的成熟,而且可選的性能測試工具也很多,這里對常見的性能測試工具做一個對比,如下表所示。
|
性能測試工具名稱 |
優點 |
缺點 |
|
Jmeter |
1、 開源免費,支持對幾乎所有的軟件系統做性能測試,而且支持插件和擴展,可以擴展其功能和性能以滿足特定的性能測試需求。 2、 支持性能測試流程編排,并且也支持斷言、邏輯控制器等高級性能測試邏輯,可滿足復雜的性能壓測需求。 3、 支持分布式的部署,可以模擬大量的高并發請求。 4、 學習成本低,相關的技術資料非常齊全,社區非常強大。 |
1、 使用Java 語言開發,軟件界面功能比較簡單,體驗性較差。 2、 可查看的監控和報告指標較少。 3、 分布式部署時較復雜,維護和管理分布式集群成本較大。 |
|
LoadRunner |
1、 商業付費軟件,擁有可靠的售后支持,在國內的知名度很高。 2、 提供非常強大的負載測試能力,支持分布式部署, 能生成詳細的性能測試結果和報告。 3、 成熟、穩定的企業級性能測試,適用于超大規模性能并發測試,并且提供豐富的測試場景和性能結果分析功能。 4、 支持Web協議的性能測試腳本錄制,可以減少部分編寫性能測試腳本的難度。 |
1、 付費軟件,購買價格較高,軟件安裝包較大,并且安裝程序繁雜。 2、 操作難度較大,需要一定的學習和培訓成本。 3、 底層是基于C語言開發,編寫性能測試腳本時,需要對C語言腳本有一定的了解。 4、 只能運行在 Windows 系統上,不能兼容其他的操作系統來運行。 |
|
WebLoad |
1、 支持超高并發的性能壓測,并且兼容支持包括Windows、Solaris和Linux在內的眾多操作系統。 2、 性能測試報告提供了詳細和深入的性能分析數據,幫助性能測試工程師更好地理解系統的性能表現?。 |
1、 腳本語言是非常見的標準語言,學習起來較為困難?,學習成本較高。 2、 商業付費軟件,購買價格較高,雖然也提供社區版,但是社區版只支持單機模式。 |
|
NeoLoad |
1、 提供包括負載測試、壓力測試、穩定性測試、容量規劃等多種功能以滿足不同測試需要。 2、 支持包括HTTP、HTTPS、SOAP、REST、JDBC、JMS、FTP 等在內的多種應用協議。 3、 提供了豐富的報告功能,可以直觀地展示測試結果和性能指標,方便分析和優化性能問題。 |
1、 商業付費軟件,購買價格較高。 2、 對于初學者來說,需要一定的學習成本才能熟練掌握其測試功能和操作方式。 |
|
Gatling |
1、 支持復雜的場景編排,能夠模擬各種用戶行為和業務場景。 2、 采用了異步非阻塞的 IO 模型(Akka架構),可以支持高并發的性能測試,性能表現非常出色。 3、 開源,可以免費使用。 |
1、 需要一定的編程基礎,對于沒有任何編程經驗的用戶來說,可能需要較高的學習成本。 2、 性能測試報告較弱,但是可以通過擴展組件來獲取更多的性能監控信息。 3、 主要支持Web應用程序的性能測試,對于其他類型的應用程序支持不友好。 |
|
Ngrinder |
1、 采用Web 界面來管理性能測試腳本和進行性能測試以及查看測試報告,使用較為簡單。 2、 支持分布式性能壓測,分布式壓測時,由一個 controller 和連接它的多個 agent 組成,controller 會把測試分發到多個 agent 上去執行。用戶可以設置使用多個進程和線程來并發的執行性能測試腳本,而且在同一線程中,通過重復不斷的執行對應的性能測試腳本,來模擬多個并發用戶執行。 |
1、 性能測試腳本是基于Python語言來編寫,對于一些復雜場景的性能測試,需要測試人員對 python 有一定認識。 2、 測試報告和監控界面較為簡單,無法獲取到更多較為詳細的監控數據。 |
從對比的情況看,Jmeter 是一個適合中小型軟件公司使用的最佳性能測試工具,因為Jmeter 是一款完全開源和免費的性能測試工具,并且在強大的社區支持下一直保持著活躍的版本更新,也是非常適合于普通性能測試工程師進行學習的一款優秀的性能測試工具,因為Jmeter在互聯網和社區中可以搜索到非常多的技術資料,在遇到問題時很容易找到相關資料來查閱以快速的解決問題。
三、關于Jmeter相關的圖書對比

參考內容:
1、清華大學出版社出版的圖書《JMeter核心技術、性能測試與性能分析》
浙公網安備 33010602011771號