如何对需要使用javascript的Web应用进行压力测试

12

已有类似问题( 如何对Web应用程序进行压力测试?)但我想测试一个需要防止重复提交并采取一些反XSRF措施的Web应用程序,因此需要进行JS评估。

有没有人使用和要分享的具有JS需求和使用的Web应用程序进行压力测试的经验?

我猜jMeter不起作用...

谢谢!

10个回答

3
一种值得尝试的解决方案是在亚马逊EC2上运行Selenium,以提供所需的可扩展性。 Selenium官网有一个教程,其中包含一个与Selenium Grid一起提供的示例。对于小型机器,Windows机器每小时的费用为12.5美分,这意味着500台机器测试将花费62.50美元/小时。
优点:
- Selenium在真实浏览器中运行,因此您的JavaScript会像在客户端上执行一样。 - 低成本 - 在自己的硬件上尝试此操作将显著增加成本。
缺点:
- 您需要建立从亚马逊到您的应用程序的网络连接。

3
Watir和Selenium RC或任何其他全浏览器解决方案的问题在于它们需要一个完整的浏览器:P 浏览器非常昂贵,通常需要300MB或更多的RAM。将这些要求乘以100甚至更多,你就需要大量的硬件。幸运的是,有一个解决方案:我最近创办了一家公司,正是你所寻找的。请查看http://browsermob.com,你可以运行有限的测试(最多25个用户)来感受这个应用程序。如果您有任何问题,请随时与我们联系!

Patricky,您的网站在HTTPS实现方面存在问题。 - shanabus
我们可以使用Lynx或其他低内存浏览器吗? - Jonathan

3

Watir是一个简单的开源库,用于自动化Web浏览器。

Watir以与人类相同的方式驱动浏览器。它可以点击链接、填写表单、按按钮。Watir还可以检查结果,比如页面上是否出现了预期的文本。

它主要驱动Internet Explorer,但也可以在Firefox(以及某种程度上的Safari)中使用。


2

我与测试人员合作使用 Bad Boy 进行负载测试。我相信您可以测试使用 JavaScript 的交互,因此您应该能够测试诸如双重提交之类的内容。


2

就您的后端而言,无论请求是由JavaScript还是负载测试工具触发,只要该请求是有效的,都不会有任何问题。

您可以创建许多假请求,这些请求可以执行许多不同的操作(希望能代表实际使用模式),并使用负载测试工具对您的Web服务器进行压力测试。

市面上有很多这样的工具:

  • jMeter
  • http_load
  • Grinder
  • httpperf

1
因为JMeter不是一个浏览器,所以它不会解释你获取的页面上的JavaScript代码:

JMeter不处理嵌入在HTML页面中的JavaScript或小程序。 [JMeter Wiki]

那么,你可以做什么呢?你可以将WebDriver添加到JMeter测试,通过这种方式来评估网页。
Web Driver Sampler可以自动化浏览器(客户端)上的执行和收集性能指标。到目前为止,性能测试的大部分工作都在服务器端进行。然而,随着技术的进步,HTML5、JS和CSS的改进,越来越多的逻辑和行为被推到客户端。这增加了网站/网络应用程序的整体感知性能,但这个度量标准在JMeter中不可用。增加整个浏览器执行时间的因素可能包括:
1. 客户端JavaScript执行 - 例如AJAX、JS模板 2. CSS转换 - 例如3D矩阵转换、动画 3. 第三方插件 - 例如Facebook like、Double click ads、网站分析等
所有这些因素都增加了整个浏览器执行时间,该项目旨在测量完成渲染所有此内容所需的时间。
官方指南:https://jmeter-plugins.org/wiki/WebDriverTutorial/

0

0

我尝试过还不错的Badboy。而且有一个大而笨重的工具叫SilkTest。它需要很多编程才能启动和运行,但你可以完成非常稳定的东西!

如果你只需要对来自IIS日志文件的请求进行压力测试,我有一个定制的构建工具。我很快会在CodePlex上发布它。


1
SilkTest是一种专门用于功能测试的工具, 如果要进行负载测试,您应该使用SilkPerformer的浏览器驱动负载测试。 - tehlexx

0

我觉得使用Selenium进行压力测试并不实际,因为每个客户端都需要运行一个浏览器,这会导致可扩展性问题。但是它可以很好地测试Javascript。 - Peter Kelley

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接