我负责测试一个重度使用 AJAX 的企业 Web 应用程序。我需要建立一个系统,允许无需人工干预持续运行测试。目前我主要关注负载测试,但我想使用相同的脚本进行功能测试。
目前,我正在使用 grinder 进行负载测试。我们记录脚本,然后对它们进行处理,以处理异步请求等内容。这个系统现在可以使用,但是脚本很难维护,并且不能在开发周期中进行维护。我需要能够通过编程语言“运行浏览器”,该语言需要抽象出 HTML 和 JavaScript 的详细信息,但必须是无头的。换句话说,如果我的测试脚本失败,它必须代表应用程序的实际故障。在 xvfb 中运行火狐浏览器不起作用,因为火狐浏览器即使在运行 xvfb 的无头 Linux 机器上仍然使用太多资源。我尝试在无头 x 服务器下使用 webdriver 来驱动火狐浏览器。
我已经在 HTMLUnit 上工作了几天,因为这是理想的解决方案。我一直在用 Jython 编写 HTMLUnit 驱动程序,因此可以将它们与 grinder 一起使用。不幸的是,我遇到了 JavaScript 错误(这并非在 Firefox/Chrome/IE 中的真正错误),我认为我已经走到了尽头。无论如何,我对 HtmlUnit 有很好的了解,但我确实需要替代方案。
我知道还有其他解决方案(envjs和zombie.js); 但是我不知道这些技术的发展程度,而且我不想再浪费一周时间走进死胡同。
如果拿到Firefox或Webkit的源代码,并注释掉所有的渲染/GUI调用,创建一个真正的无头浏览器会有多难?这个已经被做过了吗?用其中一个比另一个更容易实现吗?老实说,我想不通为什么这件事情还没有被完成,所以我猜想它比我预期的要难得多。
我假设,如果我能得到一个具有合理性能特征的真正无头浏览器(我有一大批服务器可以用来解决这个问题,但它不足以支撑带GUI渲染的真正的Firefox),那么我就可以解决问题了。