【发布时间】:2011-06-10 19:58:28
【问题描述】:
我负责测试一个大量使用 AJAX 的企业 Web 应用程序。我需要构建一个允许在没有人工干预的情况下连续运行测试的系统。目前我最感兴趣的是负载测试,但我希望用于生成负载的相同脚本用于功能测试。
目前我正在使用grinder 进行负载测试。我们记录脚本,然后处理它们以处理异步请求等。该系统目前有效;但是脚本很微妙,我无法在我们的开发周期中维护它们。我需要能够通过一种抽象出 html 和 javascript 细节的编程语言来“运行浏览器”,但它必须是无头的。换句话说,如果我的测试脚本中断,它必须代表应用程序的实际中断。在xvfb 中运行firefox 不起作用,因为即使在运行xvfb 的无头Linux 机器上,firefox 仍然使用太多资源。我尝试在 headless x 服务器下使用 webdriver 驱动 firefox。
我已经在HTMLUnit 上工作了好几天,因为这是理想的解决方案。我一直在Jython 中编写HTMLUnit 驱动程序,因此我可以将它们与磨床一起使用。不幸的是,我遇到了 javascript 错误(这不是 firefox/chrome/IE 中的真正错误),我认为我已经走到了尽头。无论如何,我很清楚HtmlUnit,我真的需要一个替代方案。
我知道还有一些其他的解决方案(envjs 和zombie.js);但是我不知道这些技术有多发达,我不想再浪费一周时间走上死胡同。
获取 Firefox 或 Webkit 的源代码并注释掉所有渲染/GUI 调用并创建一个真正的无头浏览器有多难?这已经完成了吗?一个人会比另一个人更容易做到这一点吗?老实说,我无法理解为什么这还没有完成,所以我猜这比我预期的要困难得多。
我假设如果我能获得一个具有合理性能特征的真正无头浏览器(我有一个大型服务器机群来解决这个问题,但它对于真正的带有 GUI 渲染的 firefox 来说还不够大),那么我就会做好准备。
【问题讨论】:
-
您是否考虑过使用 BrowserMob (browsermob.com/performance-testing) 或 Gomez (gomez.com/products-solutions/products/load-testing) 等商业服务。虽然不便宜,但似乎比尝试破解 Firefox/Webkit 更容易。
-
我真的没有研究过这些服务,但我听说过。我热衷于将内部系统与开源技术组合在一起。我们有很多测试服务器,我真的很想利用它们。不过感谢您的建议。
标签: firefox browser webkit headless headless-browser