压力/负载测试 Ajax 重型 Web 应用程序

3

我想通过不断访问一系列URL来模拟对我的Web服务器的重负载!

最初,我计划使用wget/curl编写一个简单的脚本,但由于该网站在大部分处理中使用了大量的Ajax请求,因此这不是可行的选择。这将需要我编写一个复杂的脚本来解析链接中的HTML,提取Ajax请求并使用curl进行操作。我需要递归地为每个请求执行此操作。

理想情况下,有一种方法可以让浏览器(或类似的东西)只循环遍历一系列URL,在移动之前每个链接花费15-30秒的时间!这意味着当访问每个URL时,所有我的JavaScript都将被执行,而且站点的负载将是代表性的。

有人知道如何轻松做到这一点吗?

4个回答

3

请看LoadBooster(https://www.loadbooster.com)。它是一种基于云的负载测试服务,利用无头可编程浏览器PhantomJS来测试网站。免责声明:我为LoadBooster工作。


2

这会执行页面中的所有JavaScript吗?因为我真的需要在页面中触发Ajax请求,以便真正测试负载。 - Tristan
没有。据我所知也没有类似的东西。你可以设置ab的头部使用XmlHttpRequest,但它不会为你运行应用程序或点击链接。这是不可能的。它将获取JavaScript文件,并抓取所有需要设置您的应用程序的内容。 - Layke
哦,那真遗憾。它不需要点击链接,基本上只需要执行页面的document.onload中的JavaScript,然后服务器的其余请求就会加载。 - Tristan

2
您需要的是“负载测试软件”。有很多解决方案,它们处理AJAX的能力差别很大。通过类似Selenium的工具驱动真实浏览器可能是您入门最容易的选择,假设您的测试场景真的像“访问这些URL列表”一样简单。至少有一个真正基于浏览器的Web测试工具可以为您完成此操作(BrowserMob)。我们的产品Web Performance Load Tester模拟浏览器,但我们通常能够很好地处理AJAX。据我所知,所有免费解决方案在涉及AJAX时都相当有限。

0
我使用WebLOAD 进行类似类型的测试 - 它的相关性引擎在复杂的AJAX情况下非常有用。

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