Ajax 负载测试工具

Posted

技术标签:

【中文标题】Ajax 负载测试工具【英文标题】:Tools for Ajax load testing 【发布时间】:2009-02-10 02:27:40 【问题描述】:

似乎有很多支持 AJAX 的压力/负载测试工具。 我想知道这些工具的实施效果如何。

他们只记录http请求并重放吗? 这是测试 AJAX 应用程序的正确方法吗? google 如何测试他们的 ajax 应用程序?

【问题讨论】:

【参考方案1】:

大多数负载测试工具都以相同的方式进行 AJAX 负载测试:它们执行在“记录”阶段看到的原始 HTTP 流量(可以是页面请求、图像请求,甚至是 AJAX 请求)。它们之间的主要区别在于它们的记录器/IDE 工具有多好,以及它可以多么容易地帮助您参数化 HTTP 请求,以便它们根据动态/实时结果反映真实世界的流量。

警告,公然插入:唯一真正的例外是我的公司,BrowserMob。它不是模拟观察到的流量,而是实际上使用真实的网络浏览器来驱动负载。因此,AJAX 内容由浏览器处理。

有用的链接:与上面明目张胆的插件分开(尽管我希望你检查一下 - 我们提前定价并提供免费试用),我最近写了一篇文章Ajaxian 关于AJAX load testing。它更详细地介绍了使用真实浏览器用户 (RBU) 与虚拟用户 (VU) 的技术含义。

【讨论】:

【参考方案2】:

看看 LoadBooster(https://www.loadbooster.com)。它利用无头脚本浏览器 PhantomJS/CasperJs 来测试网站。 Phantomjs 将解析和渲染每个页面,执行客户端脚本。无头浏览器方法更容易编写测试场景以支持复杂的 AJAX 繁重的 Web 2.0 应用程序,浏览器导航、鼠标单击和击键进入浏览器或等到元素存在于 DOM 中。 LoadBooster 也支持 selenium html 脚本。

免责声明:我为 LoadBooster 工作。

【讨论】:

【参考方案3】:

如果您只关心功能,Watin、Watir、Selenium 或任何功能性工具都可以。只要您在功能测试中投入足够的时间以允许 ajax 回调,那么这应该可以解决问题。

添加到我的回复中,

如果您正在谈论对您的 javascript 进行单元测试,您可以使用像 LosTechian in this posting 所描述的 qunit 之类的东西。这是一个非常有创意的使用 nunit 插件和 qunit 来集成 js 单元测试。

纯属巧合,发布 qunit testing 博客文章的同一个人昨天刚刚发布了一篇关于 this very topic

【讨论】:

这不是负载测试。负载测试在给定负载下测试应用程序的性能,例如“它在 100 个并发用户的情况下表现如何”。【参考方案4】:

Google 应用是用 GWT 编写的,它带有自己的 JUnit 扩展。 Article on unit testing ajax applications with GWT.

【讨论】:

【参考方案5】:

如果您不想设置自己的负载测试服务器,有几个免费的在线负载测试服务可以直接通过 Internet 运行负载测试。例如http://loadimpact.com 或http://loadstorm.com

【讨论】:

【参考方案6】:

我使用虚拟用户生成器(HP Loadrunner 软件的一部分)来测试 AJAX 应用程序。该软件有多种应用程序协议,可用于记录 Web 应用程序,例如AJAX,以及点击和脚本。

对于大多数 Web 应用程序负载测试,记录和重放 http 请求就足够了。这将给出服务器如何处理负载的结果。如果您的 Web 应用程序在客户端执行大量异步加载和渲染,例如解析 xml 或 json 的大型数据集,或许多 DOM 修改,包括浏览器层来衡量最终用户体验可能是相关的。

【讨论】:

【参考方案7】:

所有负载测试器都支持 AJAX——它们只是额外的 http 连接。

那里有一些免费的 - Jmeter、BadBoy、Grinder,它们都做得很好。

它们都对录制/播放有某种支持,但这并不总是您想要的。

我做过的最简单的方法是记录一个示例会话,用变量替换一些参数并将其从 csv 或 excel 文件中循环出来。

很好的起点:video 关于开源测试的 google 演示文稿。

编辑:更新视频链接。

【讨论】:

视频链接已失效【参考方案8】:

我在以前的工作中使用过SilkPerformer。根据链接,他们有一些 AJAX 增强功能。不幸的是,Silk 远非免费。

【讨论】:

【参考方案9】:

查看Jiffy。这是一个端到端的测量套件,因此有点复杂。但是,统计数据相当可观。

【讨论】:

【参考方案10】:

Siege?它可以进行 HTTP 测试并通过你想要的任何东西。

【讨论】:

【参考方案11】:

你也可以看看fwptt 它是开源的。如果您是 .net 开发人员,您可以利用参数自动处理以及使用您自己的 .net 对象进行测试的可能性。

【讨论】:

【参考方案12】:

我已经成功地使用 JMeter 对我们的 Ajax (JSF/RichFaces) 应用程序进行了负载测试。我没有使用 JMeter 的记录工具——而是使用 Firefox 的 HttpFox 插件来监控浏览器向服务器发布的内容,然后我在 JMeter 中重新创建了它。

确实有点复杂,但负载测试现在相当稳健。 JMeter 有各种有用的“元素”来从网页中提取 ID、执行条件逻辑、递增计数器等。

【讨论】:

【参考方案13】:

更好地为负载测试 ajax 应用程序编写隔离测试方法或 API。有一些原因:

向 Ajax 应用程序(例如 GWT)编写功能测试并不容易。 您可以使用 Jmeter WebDriver plugin,但每次运行都会启动浏览器,这将占用大部分 RAM 和 CPU。 您将加载后端而不是前端,因此您可以避免使用 ajax。

您可以像这样设计您的测试:对于 Ajax 应用程序,使用 Selenium 或 PhantomJS/CasperJS。对于负载测试,使用 JMeter,Gatling 通过 API 而不是通过 Ajax。

【讨论】:

【参考方案14】:

我的选择是 firebug(浏览器插件)。它非常轻巧且易于处理

【讨论】:

以上是关于Ajax 负载测试工具的主要内容,如果未能解决你的问题,请参考以下文章

JMeter 性能测试基本过程及示例

JMeter 性能测试基本过程及示例

压力测试、负载测试和并发测试有啥区别?

Jmeter是否支持客户端javascript

性能测试,负载测试,压力测试有啥区别

如何使用loadrunner测试页面性能