日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Web Service 性能测试工具比较

發(fā)布時間:2023/12/19 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Web Service 性能测试工具比较 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景

希望選擇一款Web Service性能測試工具,能真實模擬大量用戶訪問網(wǎng)站時的請求,從而獲取服務(wù)器當前的請求處理能力(請求數(shù)/秒)。
以微信服務(wù)器為例,每個用戶用獨立的登錄token,做各種操作,比如刷消息、發(fā)消息、看朋友圈等。

希望該性能測試工具符合如下要求:

1. 測試腳本能力,最好是Python/Ruby等最常用的
2. 每個并發(fā)實例能使用不同參數(shù)
3. CLI啟動測試,這對自動化測試很重要
4. Session支持,也就是第一個請求的響應(yīng),能用于后續(xù)請求的參數(shù)。
6. 單個結(jié)點的并發(fā)數(shù)量高。
7. 分布式支持,不受限于單個結(jié)點的計算能力。

性能測試工具選手:

Gatling

http://gatling.io/

Gatling是一款基于Scala 開發(fā)的高性能服務(wù)器性能測試工具,它主要用于對服務(wù)器進行負載等測試,并分析和測量服務(wù)器的各種性能指標。Gatling主要用于測量基于HTTP的服務(wù)器,比如Web應(yīng)用程序,RESTful服務(wù)等,除此之外它擁有以下特點:

  • 支持Akka Actors 和 Async IO,從而能達到很高的性能
  • 支持實時生成Html動態(tài)輕量報表,從而使報表更易閱讀和進行數(shù)據(jù)分析
  • 支持DSL腳本,從而使測試腳本更易開發(fā)與維護
  • 支持錄制并生成測試腳本,從而可以方便的生成測試腳本
  • 支持導(dǎo)入HAR(Http Archive)并生成測試腳本
  • 支持Maven,Eclipse,IntelliJ等,以便于開發(fā)
  • 支持Jenkins,以便于進行持續(xù)集成
  • 支持插件,從而可以擴展其功能,比如可以擴展對其他協(xié)議的支持
  • 開源免費

測試場景示例:
http://gatling.io/docs/2.1.7/advanced_tutorial.html

object Search {val feeder = csv("search.csv").random // 1, 2val search = exec(http("Home").get("/")).pause(1).feed(feeder) // 3.exec(http("Search").get("/computers?f=${searchCriterion}") // 4.check(css("a:contains('${searchComputerName}')", "href").saveAs("computerURL"))) // 5.pause(1).exec(http("Select").get("${computerURL}")) // 6.pause(1) }

統(tǒng)計圖:

?

nGrinder

官網(wǎng)很卡,真的很卡...zzz...

http://naver.github.io/ngrinder/

nGrinder是一個基于 Grinder 開發(fā)的一個非常易于管理和使用的性能測試系統(tǒng)。

它是由一個controller和連接它的多個agent組成,用戶可以通過web界面管理和控制測試,以及查看測試報告,controller會把測試分發(fā)到一個或多個agent去執(zhí)行。用戶可以設(shè)置使用多個進程和線程來并發(fā)的執(zhí)行該腳本,而且在同一線程中,來重復(fù)不斷的執(zhí)行測試腳本,來模擬很多并發(fā)用戶。

nGrinder的測試是基于一個python的測試腳本,用戶按照一定規(guī)則編寫測試腳本以后,controller會將腳本以及需要的其他文件分發(fā)到agent,用Jython執(zhí)行。并在執(zhí)行過程中收集運行情況、響應(yīng)時間、測試目標服務(wù)器的運行情況等。并保存這些數(shù)據(jù)生成運行報告,以供以后查看。

nGrinder的一大特點就是非常容易使用,安裝也非常容易,可以做到開箱即用,測試用戶也可以很容易就開始測試任務(wù)。當然,如果想執(zhí)行一些比較復(fù)雜場景的性能測試,就需要測試人員對python有一定認識。

測試場景示例:
http://grinder.sourceforge.net/faq.html#simulating-users

# # testRandomise.py # import random import stringclass TestRandomise:def __init__(self, filename):self._users = []infile = open(filename, "r")for line in infile.readlines():self._users.append(string.split((line),','))infile.close()def getUserInfo(self):"Pick a random (user, password) from the list."return random.choice(self._users)# # Test script. Originally recorded by the TCPProxy. # from testRandomise import TestRandomise tre = TestRandomise("users.txt")class TestRunner:def __call__(self):# Get user for this run.(user, passwd) = tre.getUserInfo()# ...# Use the user details to log in.tests[2002].POST('https://host:443/securityservlet',( NVPair('functionname', 'Login'),NVPair('pagename', 'Login'),NVPair('ms_emailAddress', user),NVPair('ms_password', passwd), ))

統(tǒng)計圖:

?

Locust

http://locust.io/

Locust 是一個開源負載測試工具。使用 Python 代碼定義用戶行為,也可以仿真百萬個用戶。

Locust 是非常簡單易用,分布式,用戶負載測試工具。Locust 主要為網(wǎng)站或者其他系統(tǒng)進行負載測試,能測試出一個系統(tǒng)可以并發(fā)處理多少用戶。

Locust 是完全基于時間的,因此單個機器支持幾千個并發(fā)用戶。相比其他許多事件驅(qū)動的應(yīng)用,Locust 不使用回調(diào),而是使用輕量級的處理方式 gevent。

測試場景示例:
http://docs.locust.io/en/latest/quickstart.html#example-locustfile-py

from locust import HttpLocust, TaskSetdef login(l):l.client.post("/login", {"username":"ellen_key", "password":"education"})def index(l):l.client.get("/")def profile(l):l.client.get("/profile")class UserBehavior(TaskSet):tasks = {index:2, profile:1}def on_start(self):login(self)class WebsiteUser(HttpLocust):task_set = UserBehaviormin_wait=5000max_wait=9000

統(tǒng)計圖:

?

其他未參與比較的工具

因為沒有腳本能力或CLI,所以未加入比較

  • JMeter
  • ApacheBench(ab)
  • Tsung

Locust作者對JMeter和Tsung發(fā)的牢騷:

http://my.oschina.net/u/1433482/blog/464092#OSC_h4_3

我們研究了現(xiàn)有的解決方案,都不符合要求。比如Apache JMeter和Tsung。?

JMeter基于UI操作,容易上手,但基本上不具備編程能力。其次JMeter基于線程,要模擬數(shù)千用戶幾乎不可能。?

Tsung基于Erlang,能模擬上千用戶并易于擴展,但它基于XML的DSL,描述場景能力弱,且需要大量的數(shù)據(jù)處理才知道測試結(jié)果。

比較

比較科目x工具矩陣

?

結(jié)論

很明顯,首選的全能選手就是?Gatling?,Akka Actor的并發(fā)模型就是來自于并發(fā)語言的鼻祖Erlang。

如果想自己擴展性能測試工具,那么Locust這個小而精的工具可以考慮。

nGrinder工具是韓國版微信Line開源的,并且專門開設(shè)了中文論壇,由韓國工程師回答中國開發(fā)者。但有兩個問題,一是官網(wǎng)太卡,其二示例都是片段不完整。

各位同學參照上面的對比,自己各取所需吧。

?

轉(zhuǎn)載地址:https://testerhome.com/topics/3003

總結(jié)

以上是生活随笔為你收集整理的Web Service 性能测试工具比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。