16

我负责测试一个大量使用 AJAX 的企业 Web 应用程序。我需要构建一个允许在没有人工干预的情况下连续运行测试的系统。目前我最感兴趣的是负载测试,但我希望用于生成负载的相同脚本用于功能测试。

目前我正在使用磨床进行负载测试。我们记录脚本,然后处理它们以处理异步请求等。该系统目前有效;但是脚本很微妙,我无法在我们的开发周期中维护它们。我需要能够通过一种抽象出 html 和 javascript 细节的编程语言来“运行浏览器”,但它必须是无头的。换句话说,如果我的测试脚本中断,它必须代表应用程序的实际中断。在xvfb中运行 firefox不起作用,因为即使在运行xvfb的无头 linux 机器上,firefox 仍然使用太多资源。我尝试在无头 x 服务器下使用 webdriver 驱动 Firefox。

我已经研究HTMLUnit好几天了,因为这是理想的解决方案。我一直在Jython中编写HTMLUnit驱动程序,因此我可以将它们与磨床一起使用。不幸的是,我遇到了 javascript 错误(这不是 firefox/chrome/IE 中的真正错误),我认为我已经走到了尽头。无论如何,我很了解HtmlUnit,我真的需要一个替代方案。

我知道还有其他一些解决方案(envjszombie.js);但是我不知道这些技术有多发达,我不想再浪费一周时间走上死胡同。

获取 Firefox 或 Webkit 的源代码并注释掉所有渲染/GUI 调用并创建一个真正的无头浏览器有多难?这已经完成了吗?一个人会比另一个人更容易做到这一点吗?老实说,我无法理解为什么这还没有完成,所以我猜这比我预期的要困难得多。

我假设如果我能得到一个具有合理性能特征的真正无头浏览器(我有一个庞大的服务器机群来解决这个问题,但它对于真正的带有 GUI 渲染的 firefox 来说还不够大),那么我将被设置。

4

4 回答 4

14

在此处输入图像描述

这是由http://www.phantomjs.org/上的人完成的。用他们自己的话来说:

PhantomJS 是一个带有 JavaScript API 的无头 WebKit。它具有对各种 Web 标准的快速和原生支持:DOM 处理、CSS 选择器、JSON、Canvas 和 SVG。

PhantomJS 是基于 Web 的应用程序、站点抓取、页面捕获、SVG 渲染器、PDF 转换器和许多其他用例的无头测试的最佳解决方案。

PhantomJS 由 Ariya Hidayat 创建

于 2011-09-30T12:19:39.960 回答
1

您也许可以利用一些可用的 JavaScript 单元测试工具来组装您需要的那种环境。

例如,我发现在rhino中加载env.js可以为测试大多数 JavaScript 提供可接受的假浏览器。它在某些 DOM 属性上有所不足,例如相对于其窗口大小的元素,但根据我的经验,这并不是一个严重的问题。

也可以看看:

于 2011-01-18T03:01:36.833 回答
1

看看LoadBooster。它是一种基于云的负载测试服务,它利用无头浏览器 PhantomJS 来测试网站。免责声明:我为LoadBooster工作。

于 2014-02-10T09:00:23.730 回答
0

看看WebKitDriver。该项目包括 WebKit 的无头实现。

于 2011-05-16T05:58:03.770 回答