Web Service 性能测试工具比较
背景
希望選擇一款Web Service性能測試工具,能真實模擬大量用戶訪問網站時的請求,從而獲取服務器當前的請求處理能力(請求數/秒)。
以微信服務器為例,每個用戶用獨立的登錄token,做各種操作,比如刷消息、發消息、看朋友圈等。
希望該性能測試工具符合如下要求:
1. 測試腳本能力,最好是Python/Ruby等最常用的
2. 每個并發實例能使用不同參數
3. CLI啟動測試,這對自動化測試很重要
4. Session支持,也就是第一個請求的響應,能用于后續請求的參數。
6. 單個結點的并發數量高。
7. 分布式支持,不受限于單個結點的計算能力。
性能測試工具選手:
Gatling
http://gatling.io/
Gatling是一款基于Scala 開發的高性能服務器性能測試工具,它主要用于對服務器進行負載等測試,并分析和測量服務器的各種性能指標。Gatling主要用于測量基于HTTP的服務器,比如Web應用程序,RESTful服務等,除此之外它擁有以下特點:
- 支持Akka Actors 和 Async IO,從而能達到很高的性能
- 支持實時生成Html動態輕量報表,從而使報表更易閱讀和進行數據分析
- 支持DSL腳本,從而使測試腳本更易開發與維護
- 支持錄制并生成測試腳本,從而可以方便的生成測試腳本
- 支持導入HAR(Http Archive)并生成測試腳本
- 支持Maven,Eclipse,IntelliJ等,以便于開發
- 支持Jenkins,以便于進行持續集成
- 支持插件,從而可以擴展其功能,比如可以擴展對其他協議的支持
- 開源免費
測試場景示例:
http://gatling.io/docs/2.1.7/advanced_tutorial.html
統計圖:
?
nGrinder
官網很卡,真的很卡...zzz...
http://naver.github.io/ngrinder/
nGrinder是一個基于 Grinder 開發的一個非常易于管理和使用的性能測試系統。
它是由一個controller和連接它的多個agent組成,用戶可以通過web界面管理和控制測試,以及查看測試報告,controller會把測試分發到一個或多個agent去執行。用戶可以設置使用多個進程和線程來并發的執行該腳本,而且在同一線程中,來重復不斷的執行測試腳本,來模擬很多并發用戶。
nGrinder的測試是基于一個python的測試腳本,用戶按照一定規則編寫測試腳本以后,controller會將腳本以及需要的其他文件分發到agent,用Jython執行。并在執行過程中收集運行情況、響應時間、測試目標服務器的運行情況等。并保存這些數據生成運行報告,以供以后查看。
nGrinder的一大特點就是非常容易使用,安裝也非常容易,可以做到開箱即用,測試用戶也可以很容易就開始測試任務。當然,如果想執行一些比較復雜場景的性能測試,就需要測試人員對python有一定認識。
測試場景示例:
http://grinder.sourceforge.net/faq.html#simulating-users
統計圖:
?
Locust
http://locust.io/
Locust 是一個開源負載測試工具。使用 Python 代碼定義用戶行為,也可以仿真百萬個用戶。
Locust 是非常簡單易用,分布式,用戶負載測試工具。Locust 主要為網站或者其他系統進行負載測試,能測試出一個系統可以并發處理多少用戶。
Locust 是完全基于時間的,因此單個機器支持幾千個并發用戶。相比其他許多事件驅動的應用,Locust 不使用回調,而是使用輕量級的處理方式 gevent。
測試場景示例:
http://docs.locust.io/en/latest/quickstart.html#example-locustfile-py
統計圖:
?
其他未參與比較的工具
因為沒有腳本能力或CLI,所以未加入比較
- JMeter
- ApacheBench(ab)
- Tsung
Locust作者對JMeter和Tsung發的牢騷:
http://my.oschina.net/u/1433482/blog/464092#OSC_h4_3
我們研究了現有的解決方案,都不符合要求。比如Apache JMeter和Tsung。?
JMeter基于UI操作,容易上手,但基本上不具備編程能力。其次JMeter基于線程,要模擬數千用戶幾乎不可能。?
Tsung基于Erlang,能模擬上千用戶并易于擴展,但它基于XML的DSL,描述場景能力弱,且需要大量的數據處理才知道測試結果。
比較
比較科目x工具矩陣
?
]
結論
很明顯,首選的全能選手就是?Gatling?,Akka Actor的并發模型就是來自于并發語言的鼻祖Erlang。
如果想自己擴展性能測試工具,那么Locust這個小而精的工具可以考慮。
nGrinder工具是韓國版微信Line開源的,并且專門開設了中文論壇,由韓國工程師回答中國開發者。但有兩個問題,一是官網太卡,其二示例都是片段不完整。
各位同學參照上面的對比,自己各取所需吧。
?
轉載地址:https://testerhome.com/topics/3003
總結
以上是生活随笔為你收集整理的Web Service 性能测试工具比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php上传图片类型代码,php 上传图片
- 下一篇: 《CCNP TSHOOT 300-135