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

Posted

技术标签:

【中文标题】如何对需要 javascript 的 Web 应用程序进行压力测试【英文标题】:How to stress test a javascript-requiring Web App 【发布时间】:2010-09-17 22:57:59 【问题描述】:

已经问过一个类似的问题( Performing a Stress Test on Web Application?),但我想测试一个 Web 应用程序,它可以防止重复提交并采取一些反 XSRF 操作,因此需要评估 javascript

有没有人对需要(和使用)JS 的网络应用进行压力测试并分享任何经验?

我猜 jMeter 不会工作...

谢谢!

【问题讨论】:

【参考方案1】:

这个区域有一个新工具called k6

它有一种访问DOM的方法,我打算在a project.试试它

背景故事:

您可以访问this和this blog.

也许会有所帮助。

【讨论】:

【参考方案2】:

因为 JMeter 不是浏览器,它不会解释您获取的页面上的 JavaScript 代码:

JMeter 不处理嵌入在 html 页面中的 Javascript 或小程序。 [JMeter 维基]

那么,你能做什么?您可以add WebDriver to JMeter test 并以此评估网页。

Web Driver Sampler 自动执行和收集 浏览器(客户端)的性能指标。很大一部分 到目前为止,性能测试一直在服务器端进行 事物。然而,随着技术的进步,HTML5、JS 和 CSS 改进,越来越多的逻辑和行为被推倒 给客户。这增加了整体感知性能 website/webapp,但是这个指标在 JMeter 中不可用。事物 增加整体浏览器执行时间的可能包括:

    客户端 Javascript 执行 - 例如。 AJAX、JS 模板 CSS 转换 - 例如。 3D 矩阵变换、动画 第三方插件 - 例如。 Facebook 点赞、双击广告、网站分析等

所有这些都增加了浏览器的整体执行时间,而这 项目旨在测量完成所有渲染所需的时间 这个内容。

官方指南:https://jmeter-plugins.org/wiki/WebDriverTutorial/

【讨论】:

【参考方案3】:

可能值得追求的一个解决方案是在 Amazon EC2 上运行 Selenium 以提供您需要的可扩展性。 Selenium 上有一个tutorial,使用的是 Selenium 网格附带的示例。小型机器的 Windows 机器每小时 12.5 美分,这意味着 500 台机器测试的费用为每小时 62.50 美元。

优点:

Selenium 在真正的浏览器中运行,这意味着您的 Javascript 正在像在客户端上一样执行 低成本 - 尝试在您自己的硬件上执行此操作会花费更多

缺点:

您必须建立从 Amazon 到您的应用程序的网络连接

【讨论】:

【参考方案4】:

另外,请查看我最近关于 Ajaxian 的文章。我认为它很好地解释了为什么真正的浏览器很重要以及为什么执行 JavaScript 对于负载测试变得越来越重要。

http://ajaxian.com/archives/why-load-testing-ajax-is-hard

【讨论】:

【参考方案5】:

Watir 和 Selenium RC 或任何其他完整浏览器解决方案的问题在于他们需要完整的浏览器:P

浏览器运行起来非常昂贵,通常需要 300MB 或更多的 RAM。将这些要求乘以 100,您就需要大量硬件。幸运的是,有一个解决方案:我最近创办了一家完全符合您要求的公司。

查看http://browsermob.com,您可以运行有限的测试(最多 25 位用户)来体验这款应用。如果您有任何问题,请随时与我们联系!

【讨论】:

Patricky,您的网站的 HTTPS 实施存在问题 我们可以只使用 Lynx 或其他低内存浏览器吗?【参考方案6】:

Selenium RC 是另一种选择。

【讨论】:

我认为使用 Selenium 进行压力测试并不实用,因为每个客户端都需要运行导致可伸缩性问题的浏览器。但是它会很好地测试 Javascript【参考方案7】:

Watir?

Watir 是一个用于自动化网络浏览器的简单开源库。 Watir 以与人们相同的方式驱动浏览器。它点击链接,填写表格,按下按钮。 Watir 还会检查结果,例如页面上是否出现预期的文本。

它驱动 Internet Explorer,但也适用于 Firefox(在某种程度上和 Safari)。

【讨论】:

【参考方案8】:

我试过 Badboy,没问题。又大又胖又重的工具是 SilkTest。它需要大量的编程才能启动和运行,但您可以完成一些非常扎实的工作!

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

【讨论】:

嗯,SilkTest 是一个专门用于功能测试的工具,对于负载测试,您可能希望使用 SilkPerformer 的浏览器驱动负载测试。【参考方案9】:

就您的后端而言,只要请求有效,无论是来自 JavaScript 还是来自负载测试工具,触发请求的原因都无关紧要。

您可以创建一堆虚假请求来做很多不同的事情(希望能代表实际的使用模式),并使用负载测试工具猛击您的网络服务器。

那里有一堆:

jMeter http_load 磨床 httpperf

【讨论】:

【参考方案10】:

与我合作的测试人员使用Bad Boy 进行负载测试。我相当肯定您可以测试使用 javascript 的交互,因此您应该能够测试双重提交之类的东西。

【讨论】:

以上是关于如何对需要 javascript 的 Web 应用程序进行压力测试的主要内容,如果未能解决你的问题,请参考以下文章

如何构建 Javascript 架构以补充 PHP MVC Web 应用程序?

Web 性能优化:理解及使用 JavaScript 缓存

如何将 javascripts 添加到我的 InDesign Server Java Web 应用程序?

如何使用 Javascript/PHP 从 Web 应用程序打开移动应用程序(Android 或 iOS)

如何对 AngularJS Web 应用程序进行性能测试?

如何正确防御xss攻击