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