我一直在使用Selenium / Webdriver在网格设置中进行功能测试。
我们正在过渡到基于Solr的搜索服务。我已经有Solrmeter用于对搜索引擎核心进行负载测试,并具有用于对Rest-ful服务进行负载测试的UI。我们还想对整个端到端服务链进行负载测试,即


用户界面->静态服务-> Solr核心。


我的老板希望我使用Selenium / WebDriver进行端到端负载测试,以使其与我们的核心测试框架集成。

我对此表示怀疑,因为WebDriver没有支持负载的支持工具。测试。在Selenium / WebDriver中,我想到的最简单的方法是在发送查询和结果显示在网页上时在脚本中编写时间戳。然后编写一些报告机制以收集和显示报告。我也想像硒会慢一些。

另一方面,来自stackoverflow社区的成员建议使用JMeter,因为我认为这样做不太麻烦。在这种情况下,有人可以给我Selenium / WebDriver与JMeter的优缺点吗?

#1 楼

已经多次问过类似的问题。普遍的共识是,UI自动化工具(例如Selenium)不是负载测试的好选择。造成这种情况的原因有很多,但主要的原因是它的运行速度要慢得多。您可以使用JMeter之类的工具轻松地在一秒钟之内处理成千上万个并发请求,在Selenium中进行重现将需要成千上万个服务器,这些服务器全部经过协调才能为您提供相同的流量。有诸如硒网格或浏览器生物之类的工具可以让您精心安排这些类型的测试,但与JMeter之类的工具相比,它确实效率低下。

性能测试有些不同,因为可以使用Selenium来测量UI加载或完成某些操作所花费的时间,但是您通常与负载测试一道执行性能测试,以回答诸如:在服务器处于无负载/中负载/高负载/变化负载等情况下,X操作的性能如何。

就适合负载测试的工具而言,JMeter非常受欢迎免费工具,但还有很多其他工具,包括我更喜欢的工具-Visual Studio负载测试(需要您可能已经拥有或可能尚未拥有的Visual Studio许可证)。

评论


Visual Studio负载测试?以前从未听说过。...与HP loadrunner相比,价格是多少?

–起搏器
2015年9月18日上午10:09

便宜得多。对于大型组织而言,HP LoadRunner可能花费数百万美元。 Visual Studio负载测试现在带有Visual Studio Enterprise 2015许可(以前是Visual Studio Ultimate)。自从我使用它以来,他们似乎还增加了相对便宜地在云中运行测试的功能:visualstudio.com/en-us/get-started/test/load-test-your-app-vs。或者,您可以免费使用自己的硬件。 Enterprise的初始成本为6,000美元,每年的许可证续期费用为2,169美元。

–山姆·伍兹(Sam Woods)
2015年9月18日在17:54

是的loadrunner如此昂贵,以至于雇用某人破解许可证而不是预先支付,实际上具有商业意义。

–起搏器
2015年9月21日在11:43

#2 楼

您也可以查看Gatling,这是基于akka的开源压力测试工具。

在Gatling主页上,您可以直接比较测试规范在Gatling和JMeter中的外观。

如果要创建大量负载,我认为没有什么比akka作为引擎更好了。

负载越大要创建测试,专用的负载测试工具与Selenium / Webdriver等常规Web测试框架相比,效果会更好。

我认为您会很快达到您所能做的一切在进行负载测试时,请使用Selenium / Webdriver,否则您将不得不为使用Gatling或JMeter时内置的内容自己编写大量代码。在这种情况下,如果您不太谨慎的话,您可能会在测试代码中引入一些自己的并发错误:并发总是很困难。

评论


加特林很棒。由于使用了Scala,因此测试也非常简洁易读

–无所畏惧的鬣狗
17年4月17日在6:13

#3 楼

我想补充一下,是否可以使用Selenium进行性能测试。
示例:您有使用Web-UI的应用程序,并且想要与一个用户一起测量UI响应但要处理庞大的数据库。
在这种情况下,JMeter是一个错误的选择,因为它无法处理Ajax请求。在过去的项目中,我一直在处理这种情况,对于这样的容量测试,我们使用了Selenium。
在其他情况下,JMeter更好。

评论


?您为什么会说JMeter无法处理Ajax请求?能够做到。

–起搏器
2015年9月18日上午10:16

不使用其他插件,这是一项相当棘手的任务,因为您必须手动复制所有请求,恕我直言。

– Dzmitry Kashlach
2015年9月21日在6:08

内置的JMeter记录器怎么样?不行吗您只需要打开它,然后运行Ajax请求...,记录器就会自动记录所有请求。无需手动工作。

–起搏器
15年9月21日在11:45

没那么简单。这样的请求可以包含令牌,ID,并且一旦记录,这种情况在重放时可能会失败。通常是数百个请求。

– Dzmitry Kashlach
2015年9月21日14:35



我的意思是,我们必须使用$ {foobar}之类的变量来修改令牌ID。这样做之后就可以了吧?

–起搏器
15/09/22在3:09



#4 楼

(免责声明:我是Gatling项目的首席开发人员)

即使使用巨大的网格,使用Webdriver进行负载测试目前似乎效率不高。

如果要减少维护功能测试和负载测试的成本,您可以构建一个系统,在该系统中从功能测试中获取负载测试:


将记录系统插入功能测试中,例如加特林记录器,并获取您的负载测试基础
对其进行编辑以添加循环,用户,动态数据等
随着功能测试的发展,您可以重新运行第一步并与之前的进行区别输出,因此您可以轻松地确定您必须修改的内容。在加特林,这比在JMeter中容易,因为场景不是XML的一大块,而是表达性的DSL。


评论


加特林如何赚钱?基本上,JM已得到时间证明。加特林实际上是否有计划至少在未来20年内坚持下去?

–起搏器
2015年9月18日上午10:14

#5 楼

我发现将两者结合使用会给您最真实的结果。正如海报中已经提到的那样,Selenium需要大量服务器才能获得与jmeter之类的工具类似的负载。 theautomatedtester.co.uk/blog/2012/automating-web-performance-data-collection-with-browsermob-proxy-and-selenium.html)并并行运行测试,您将获得用户的真实浏览器性能。 >
Atlassian还希望在此区域使用webdriver开发工具(您可以在他们的博客上找到它),希望他们可以开源。

评论


对于过时的客户端Selenium性能测试,这也是一个很好的资源:code.google.com/p/selenium-profiler

–大卫
13年1月20日在6:04

#6 楼

尝试通过Selenium Grid扩展到大量用户时遇到了问题。我最终选择了Funkload,原因是:


它非常容易快速扩展和运行测试
(没有浏览器实例的随机挂起)
易于使用的HTTP请求记录器
通过实现webunit Python模块,可以轻松加载测试API。
它的图形输出可以包含服务器监视(如果已配置)
这对可视化输出非常有帮助。

您可以在此处找到文档:http://funkload.nuxeo.org/

#7 楼

我不会亲自使用JMeter。我可能会使用SoapUI(由Maven执行),因为它也很适合Jenkins。 SoapUI可以完成JMeter可以做的所有工作,尤其是通过其Maven集成。我还更喜欢SoapUI进行Groovy集成,如果需要使用BDD,则可以以这种方式(与xUnit)集成JBehave。

评论


Jmeter有一个maven插件,可让您轻松地将其插入Jenkins。 jmeter.lazerycode.com。

– Ardesco
13年7月22日在9:48

#8 楼

首先,我为IT Central Station工作,这是一个用于众包IT评论的平台。在我们的网站上查看这些各种产品的最简单方法可能是查看您正在研究的这些产品的比较页面。

如果您正在研究JMeter和Selenium之外的其他工具,则可能需要研究HP的更新工具StormRunner。我们的一些实际用户最近对其进行了审核。

评论


尽管主题仅包含指向注册页面的链接,但sqa.stackexchange.com/help/promotion您的答案。更好地总结结果并链接到“打开”的详细信息。这只是垃圾邮件的另一种形式。

– Niels van Reijmersdal
15年7月27日在21:21

嗨,阿比盖尔!让我感谢您公开声明您的隶属关系。就占星术而言,这是罕见的事情。现在,尽管我们当然不介意链接到外部内容,但我们对于可接受的答案的标准是,它本身就是没有链接的答案。为了使此答案完全可以接受,需要更改什么,我不确定,因为我还没有注册才能查看该报告。但是,在寻求外部资源支持之前,必须有一个独立的答案。谢谢!

–corsiKa♦
15年7月27日在22:15

响应此有用的反馈,我确保所有链接都不需要注册。

–阿比盖尔
15年7月28日在17:22

@corsiKa,他当然不是在烦恼...只有在他不表示效忠的情况下才会烦恼。

–起搏器
2015年9月18日上午10:20

#9 楼

我知道这是一篇过时的文章。
看看这些家伙:

http://blazemeter.com/

他们支持100%jmeter脚本,因此,您可以使用硒Webdriver插件进行jmeter测试,并在Amazon EC2实例上运行它们。

每个负载生成器(代理)的建议“公式”为:
C = B + 1其中
C是并发用户数
B是浏览器实例数

从这里获取:
http://jmeter-plugins.org/wiki/WebDriverTutorial/

因此,您可以在blazemeter平台上执行非UI(api)和UI测试。
报告非常出色。

定价可能会有点“问题”,如果您需要产生非常大的负载,但仍然有可能,blazemeter的人员将提供强大的支持。

出色的blazemeter!

评论


您是否与blazemeter有联系?如果您事先说出您是项目的一部分还是只是一个满意的用户,这将有所帮助。

–凯特·保罗(Kate Paulk)
2014年6月5日14:19

#10 楼

免责声明:首先,我隶属于以下建议的工具。

因为10年前我们开展业务时我们不喜欢这些工具(功能太贵或功能太少或很难使用) ),我们编写了自己的工具。后来,在客户要求购买它的选择之后,我们也开始将其作为产品提供。

它基于Java,涵盖了功能测试(我们扩展了Selenium WebDriver概念,与WebDrivers完全兼容)以及负载测试。有几种编写和编写测试的方法。该工具的核心由HttpClient和HtmlUnit组成。该工具以工程为中心,因此比UI东西更多的代码和命令行。

我们最近引入了一个版本,您可以在其中使用WebDriver和Firefox来衡量性能,而不仅仅是交互性,而且我们很着迷进入FF来衡量网络内容。如果您有足够好的机器,则可以使用它进行负载测试,或者只是在将其连接到Jenkins(我们有一个插件)后测量随时间推移的性能发展情况。

看看。您可以使用免费版,也可以将其永久用于任何功能测试或什至较小的性能比较。升级也是免费的。 https://www.xceptance.com/cn/xlt/

我们还开源了我们的测试套件之一,以能够轻松地基于CSV数据构建简单的测试。将采用更多方法来简化构建测试套件的过程。 https://github.com/Xceptance/testsuite-nocoding

#11 楼

我将Telerik Test Studio添加到列表中。我将其用于5台PC上的10,000个虚拟用户。如果您负担得起,我不能推荐它。比JMeter更容易使用。另外,我的自动化测试在同一个项目中,因此不需要上下文切换或学习新工具。