已经提出了一个类似的问题( 对 Web 应用程序执行压力测试?),但我想测试一个 Web 应用程序,它可以防止重复提交并采取一些反 XSRF 操作,因此需要评估 JavaScript。
有没有人对需要(和使用)JS 的 Web 应用程序进行压力测试并分享任何经验?
我猜jMeter不会工作......
谢谢!
已经提出了一个类似的问题( 对 Web 应用程序执行压力测试?),但我想测试一个 Web 应用程序,它可以防止重复提交并采取一些反 XSRF 操作,因此需要评估 JavaScript。
有没有人对需要(和使用)JS 的 Web 应用程序进行压力测试并分享任何经验?
我猜jMeter不会工作......
谢谢!
瓦提尔?
Watir 是一个用于自动化 Web 浏览器的简单开源库。Watir 以与人们相同的方式驱动浏览器。它点击链接,填写表格,按下按钮。Watir 还会检查结果,例如页面上是否出现预期的文本。
它驱动 Internet Explorer,但也适用于 Firefox(在某种程度上和 Safari)。
Watir 和 Selenium RC 或任何其他完整浏览器解决方案的问题在于他们需要完整的浏览器:P
浏览器运行起来非常昂贵,通常需要 300MB 或更多的 RAM。将这些要求乘以 100,您就需要大量硬件。幸运的是,有一个解决方案:我最近创办了一家完全符合您要求的公司。
查看http://browsermob.com,您可以运行一个有限的测试(最多 25 个用户)来体验该应用程序。如果您有任何问题,请随时与我们联系!
可能值得追求的一种解决方案是在 Amazon EC2 上运行 Selenium 以提供您需要的可扩展性。Selenium有一个使用 Selenium 网格附带的示例的教程。小型机器的 Windows 机器每小时 12.5 美分,这意味着 500 台机器测试的费用为每小时 62.50 美元。
优点:
缺点:
与我一起工作的测试人员使用Bad Boy进行负载测试。我相当肯定你可以测试使用 javascript 的交互,所以你应该能够测试像双重提交这样的东西。
就您的后端而言,只要请求是有效的,无论是来自 JavaScript 还是负载测试工具触发请求都无关紧要。
你可以创建一堆做很多不同事情的假请求(希望能代表实际的使用模式),然后用负载测试工具猛击你的网络服务器。
那里有一堆:
因为 JMeter 不是浏览器,所以它不会解释您获取的页面上的 JavaScript 代码:
JMeter 不处理嵌入在 HTML 页面中的 Javascript 或小程序。[JMeter 维基]
所以,你可以做什么?您可以将 WebDriver 添加到 JMeter 测试中,并由此评估网页。
Web Driver Sampler 在浏览器(客户端)上自动执行和收集性能指标。到目前为止,大部分性能测试都在服务器端进行。但是随着技术的进步,HTML5、JS和CSS的改进,越来越多的逻辑和行为被下推到客户端。这增加了网站/webapp 的整体感知性能,但该指标在 JMeter 中不可用。增加整体浏览器执行时间的因素可能包括:
- 客户端 Javascript 执行 - 例如。AJAX、JS 模板
- CSS 转换 - 例如。3D 矩阵变换、动画
- 3rd 方插件 - 例如。Facebook like、双击广告、网站分析等
所有这些都增加了浏览器的整体执行时间,这个项目旨在测量完成渲染所有这些内容所需的时间。
我试过 Badboy,没问题。又大又胖又重的工具是 SilkTest。它需要大量的编程才能启动和运行,但你可以完成一些非常可靠的事情!
如果您只需要对来自例如 IIS 日志文件的请求进行压力测试,我有一个自定义构建工具。我很快就会在 CodePlex 上发布它。
Selenium RC是另一种选择。
同样相关的,请查看我最近关于 Ajaxian 的文章。我认为它很好地解释了为什么真正的浏览器确实很重要,以及为什么执行 JavaScript 对于负载测试变得越来越重要。