加载测试UI

时间:2009-02-19 20:44:39

标签: php stress-testing

我一直在开发一个网站,它在前端大量使用AJAX和动态JavaScript,现在是时候开始进行压力测试了。但是,如何正确地测试需要点击前端几个链接的东西呢?我能够轻松快速地反复访问网站每个页面的一种方法是将Google Mini指向它。但是,这不会单击链接,然后导航模态窗口和类似的东西。

编辑 - 我应该指出该网站是在PHP5中完成的,而使用的JavaScript库是jQuery。不确定这是否会产生任何影响但感觉知道可能有用。

5 个答案:

答案 0 :(得分:2)

JMeter非常棒。您可以记录您的会话并根据自己的喜好进行调整。

所谓的'ajax负载测试'是本网站上反复出现的主题,经常被混淆。因此,让我们直截了当:正常网页的负载测试和使用ajax的负载测试之间确实没有区别。这一切都归结为离散的要求;他们恰好不是整页翻新。

要记住的一件事是负载测试处理请求的服务器(负载测试)和正在更新的UI组件的屏幕性能(javascript的执行情况)之间存在明显差异。

简单负载测试示例:

  1. 初始页面加载
  2. 登录
  3. 导航?
  4. 5-10'ajax'请求(或任何可能符合您的应用程序使用模式的内容)
  5. 注销

答案 1 :(得分:1)

有一些负载测试工具可以支持AJAX。例如,WebLoad

http://www.radview.com/solutions/ajax-load-testing.aspx

答案 2 :(得分:1)

你真正想要的是压力测试是服务器处理ajax请求的能力。使用加载工具在“记录”测试时查看请求,然后根据需要进行调整。我只使用了vs测试版,所以我不能指出你的成本低。

答案 3 :(得分:1)

我在某种程度上不同意内森和弗雷迪。他们是正确的,“AJAX测试”在HTTP请求中确实没有什么不同。但事情并非那么简单。在Why Load Testing Ajax is Hard上查看我在Ajaxian.com上的文章。

JMeter,Pylot和The Grinder都是生成HTTP请求的绝佳工具(我个人推荐Pylot)。但在他们的核心,他们不充当浏览器和处理JavaScript,这意味着他们所做的只是重放他们在创纪录的时间看到的流量。如果这些AJAX请求对于该会话是唯一的,则它们可能不适合/正确地重放大量。

事实是,随着越来越多的逻辑被推入浏览器,使用传统的负载测试工具正确模拟流量变得更加困难(如果不是不可能的话)。

在我的文章中,我举了一个简单的例子,说明当你想查询1000个不同的搜索词时(加载测试期间的一个重要目标),测试谷歌主页的难度。要使用JMeter / Pylot / Grinder,您最终会以该工具的本机语言重新编写部分AJAX代码(在您的情况下使用jQuery)。

如果你的目标是测量用户所感知的响应时间(这可能是一天结束时最重要的事情),那就更加复杂了。对于使用Comet /“Reverse Ajax”(一种长时间保持打开套接字的技术)的非常复杂的应用程序,传统的加载工具根本不起作用。

我的公司BrowserMob提供了一个load testing service,它使用由Selenium驱动的Firefox浏览器来驱动数百或数千个真实浏览器,让您可以测量和计算视觉元素的性能。在浏览器中。我们还支持传统虚拟用户(盲目HTTP流量)和模拟浏览器(通过HtmlUnit)。

所有这一切,通常混合使用BrowserMob等服务加上传统的负载测试是正确的方法。也就是说,真正的浏览器非常适合全保真负载测试,但它们永远不会像“虚拟用户”那样经济,因为它们需要10-100倍的RAM和CPU。请参阅我最近的博客文章,了解是否simulate or not to simulate virtual users

希望有所帮助!

答案 4 :(得分:0)

您可以使用类似openSTA的内容。

这允许记录与网站的会话,然后通过相对简单的脚本语言播放。

您还可以轻松测试Web服务并编写自己的脚本。

它允许您以任何您想要的方式将脚本放在一起进行测试,并配置迭代次数,每次迭代中的用户数量,引入每个新用户的加速时间以及每次迭代之间的延迟。测试也可以安排在未来。

它是开源的,免费的。

它会生成许多可以保存到电子表格的报告。然后,我们使用数据透视表轻松分析和绘制结果图。