目标:
我有一个用Java编写的企业应用程序来测试性能。我需要单独进行操作,因此我将基本上模拟通过http / https进行的用户交互。

我的发现:


硒不适合负载测试。即使使用线程,
Selenium似乎也不能同时满足很多请求。
推荐它为最推荐的解决方案,但是编写脚本会增加学习的难度。
OpenSTA似乎还剩下2007年之后,否则它是一个很好的工具
最近遇到了加特林。他们声称克服了其他工具的缺点,包括Jmeter

次要要求/方案:


我在团队中拥有硒专业知识,并且一些脚本是
/>准备进行回归测试。所以也许我想重用它们。
我不愿意有一个付费的解决方案,直到我能用开源工具/ API完美地完成我的工作
,即使它需要更多的努力< br站在我这边。

所以,请提出您的解决方案/工具。我仍然认为我最终会使用Jmeter ..但是需要建议。͏͏͏͏͏

评论

我同意user246的回答。您可能还需要看一下:sqa.stackexchange.com/questions/3551/…

这引诱我使用加特林而不是jmeter github.com/excilys/gatling/wiki/Benchmarks

我没用过加特林,但从我读过的书来看,它应该可以满足您的需求。

@Napster,好吧,基准当然是朝加特林操纵的……..

#1 楼

使用Grinder,我有些运气。它基于Java,但您也可以用Jython或Clojure编写脚本。

您说过,您想利用团队当前的Selenium脚本和专业知识性能测试。您没有描述您的回归测试脚本,但是您可能要重新考虑它们是否合适。特别是,您应该考虑两个问题:Selenium是否适合性能测试,功能测试是否适合性能测试?

首先,您可能已经意识到,Selenium是一种非常耗费资源的方法,可以用来进行性能测试。在系统上加载。让我引用Selenium Grid常见问题解答中的第一个问题:


问:您是否建议使用Selenium Grid进行性能/负载测试?

答:Selenium网格不是为进行性能和负载测试而设计的[...]

的主要原因是,使用真实的浏览器进行性能/负载测试
是一个非常糟糕的主意,因为它很难/ expensive来缩放负载,并且
实际负载非常不一致。

[...]

例如,要模拟200个并发用户,您需要200
并发浏览器,它们具有基于Selenium
,您可能也至少需要10台计算机来生成这种
负载。当JMeter / Grinder / httperf可以在一台机器上生成相同类型的负载时,这是相当疯狂的。


其次,功能测试和性能测试之间存在压力。功能测试的重点是在各种情况下的正确行为,包括一些很少发生但对用户体验很重要的行为。性能测试的重点是系统在预期负载下的响应方式。如果您的功能测试没有对典型用户的工作流程进行建模,则它不属于性能测试。例如,可能很重要的一点是,当您输入两位数的电话号码时,页面会生成一个不错的错误消息,但是,问一下100个用户同时输入时会发生什么,则毫无意义。

即使功能测试能够对典型的用户行为进行建模,它仍然可能不适用于性能测试。功能测试的重点是处理一组输入并检查结果是否与期望值匹配。如果测试涉及多个步骤,则还可能出于诊断目的检查中间结果。以我的经验,性能测试无需进行所有检查,因为它会减慢性能测试的速度。 (更准确地说,可能有几个线程检查预期结果与实际结果,但是大多数线程只是尝试加载系统负载而不必担心正确的结果。)

评论


同意,我也使用Selenium成功完成了一项性能测试(不重用现有的功能测试),仅出于在负载下测量性能的目的。

–山姆·伍兹(Sam Woods)
2012-12-19 18:06

您对功能测试和性能测试脚本之间的区别的解释很棒!

– Tejas
2012年12月20日上午11:24

我放弃了使用Selenium的计划,因为我将产生巨大的负载,真的非常巨大!

– Tejas
2012年12月20日上午11:26

@ user246,如果功能测试本身需要大量用户怎么办?那么,硒在这样的功能测试中也不会失败吗?

–起搏器
2015年9月18日在10:22

功能测试通常在条件逻辑中行使分支。如果“大量用户”意味着多个用户各自具有不同的角色,并且参与了工作流程,那么您大概可以使用Selenium。如果您的意思是“数百个用户”,那么您将不再测试条件逻辑。 Web应用程序没有“如果少于200个用户,请执行此操作;否则请执行”条件逻辑,因此您不再需要进行功能测试。当然,您可以自由地定义不同的术语,但是在测试条件逻辑和测试聚合行为之间仍然存在差异。

–user246
15年9月18日在18:49

#2 楼

我尝试过加特林(Gatling),我会比Jmeter更好地评价它。


最大的好处是您可以为负载测试编写一些代码-
安全地引入类型,可重用性和可维护性。
对于Java开发人员来说,scala并不难。
您可以产生更高的负载,而无需实际阻塞您自己的计算机。
Jmeter本身的性能会随着负载的增加而降低。这将为负载测试生成不正确的结果。加特林(Gatling)是相当新的东西,但是很棒。

您可以从它的网站上引用它。我完全推荐它,我也提出了一个观点,并说服管理层使用它

http://gatling-tool.org/

评论


我还要补充一点,JMeter API太冗长了,而加特林测试很简明易懂。这也会影响学习曲线:加特林对我来说似乎更容易。

– dzieciou
16年4月5日在6:16

#3 楼

jmeter

我知道这听起来像在打败一匹老马,但这是最常用的开源工具。互联网上有关于使用和设置文档。此外,如果您的公司是一家Java商店,那么可能会有很多开发人员可以帮助您的团队入门。

评论


是的,我们经营一个Java商店。因此,我正在考虑使用Jmeter和gatling,现在甚至考虑使用磨床进行最终选择。

– Tejas
2012-12-20 11:25

这引诱我使用加特林而不是jmeter github.com/excilys/gatling/wiki/Benchmarks

– Tejas
2012年12月21日在7:34

#4 楼

我会建议使用Jmeter进行性能测试...

顾名思义,Jmeter是用于负载测试客户端/服务器应用程序的Java工具之一。以前,它仅用于测试Web应用程序,而如今,它已用于其他测试功能。它通常用于衡量性能并加载客户端-服务器应用程序的功能行为测试。它还可以处理FTP和JDBC请求。您必须了解WinRunner等其他工具。您将很高兴知道,与WinRunner相比,Jmeter具有简单直观的GUI易于使用。此外,它是绝对免费的,可以作为开放源代码轻松地进行修改。

Jmeter的重要功能是通过使用它可以刺激服务器上的繁重负载,而不是在服务器上,而且可以通过网络或对象上的繁重负载来测试不同负载类型下的强度。还可以使用Jmeter对性能进行图形分析,或者还可以在大量并行负载下测试服务器/脚本/对象的行为。

#5 楼

由于您不愿意使用付费工具,并且已经同意强烈建议将JMeter作为性能测试的开源解决方案。是的,它可能会增加学习曲线,并且可能会忙于编写测试脚本。但是现在情况并非如此!

自从出现Blazemeter以来,我一直在将JMeter与JMeter结合使用,并且非常容易且几乎没有脚本,除非我想更改某些配置选项。

Blazemeter在Google Chrome浏览器中具有扩展名。您可以使用它来记录您的测试脚本,然后在JMeter中使用它来运行测试。 Blazemeter扩展程序将在您浏览被测应用程序时记录所有HTTP请求,以及所有必需的登录凭据,Cookie和会话。记录完脚本后,可以将其导出为“ .jmx”文件,可以在JMeter中打开该文件以运行测试。您还可以在JMeter中对测试计划进行所需的所有更改。