我负责测试一个大量使用AJAX的企业web应用程序。我需要构建一个系统,允许在没有人工干预的情况下连续运行测试。目前,我最感兴趣的是负载测试,但我希望在功能测试中使用用于生成负载的相同脚本。
目前对于负载测试,我使用的是grinder。我们记录脚本,然后处理这些脚本,以处理异步请求等。这个系统现在可以工作;但是脚本很精致,我不能在我们的开发周期中维护它们。我需要能够‘运行浏览器’通过编程语言,抽象的html和javascript的细节,但它必须是无头的。换句话说,如果我的测试脚本中断了,那么它一定代表了应用程序的实际中断。在xvfb中运行火狐是行不通的,因为即使在运行xvfb的无头linux机器上,火狐也会占用太多的资源。我试着在headless x服务器上使用webdriver来驱动firefox。
我已经在HTMLUnit上工作了几天了,因为这是理想的解决方案。我一直在用Jython编写HTMLUnit驱动程序,因此我可以在研磨机上使用它们。不幸的是,我遇到了javascript错误(在firefox/chrome/IE中不是真正的错误),我想我已经走到了这条路的尽头。无论如何,我很清楚HtmlUnit,我真的需要一个替代方案。
我知道还有一些其他的解决方案(envjs和zombie.js);但是我不知道这些技术是如何开发的,我不想再浪费一个星期走进死胡同。
将Firefox或Webkit的源代码注释掉所有的渲染/GUI调用并创建一个真正的无头浏览器会有多难?这件事完成了吗?一个比另一个更容易做到这一点吗?老实说,我不能理解为什么还没有做到这一点,所以我猜这比我预期的要难得多。
我假设,如果我可以得到一个真正的无头浏览器,具有合理的性能特征(我有一个大的服务器舰队来解决这个问题,但它还不够大,不足以让真正的firefox使用GUI渲染),那么我就会被设定。
发布于 2011-09-30 20:19:40
这是由http://www.phantomjs.org/的人完成的。用他们自己的话说:
PhantomJS是一个带有JavaScript接口的无头WebKit。它具有对各种web标准的快速和本机支持: DOM处理、CSS选择器、JSON、Canvas和SVG。
PhantomJS是基于web的应用程序的无头测试、站点抓取、页面捕获、SVG渲染器、PDF转换器和许多其他用例的最佳解决方案。
PhantomJS由Ariya Hidayat创建
发布于 2011-01-18 11:01:37
您也许能够利用一些可用的JavaScript单元测试工具来组装所需的环境。
例如,我发现在rhino中加载env.js可以提供一个可接受的假浏览器来测试大多数JavaScript。它缺少某些DOM属性,比如相对于窗口大小的元素,但根据我的经验,这并不是一个严重的问题。
另请参阅:
发布于 2014-02-10 17:00:24
看看LoadBooster吧。它是一个基于云的负载测试服务,它利用无头浏览器PhantomJS来测试网站。免责声明:我为LoadBooster工作。
https://stackoverflow.com/questions/4719902
复制相似问题