生产中的HtmlUnit + Selenium

我目前正在使用HtmlUnit和Selenium在我的生产代码中驱动它(WebDriver)。

我正在以编程方式使用这些库进行各种网站的搜索和交互,并且取得了一些成功,并且没有遇到内存问题(确保会话始终被清理)。

我想知道这些库是否适用于生产环境或推荐使用。 由于有关自动化测试的大量信息而不是我如何使用它,因此很难通过Google找到。

我意识到这是一个相当普遍的问题,但我正在寻求关于这些库的建议以及可能更好的替代方案。

WebDriver和Selenium非常适合生产环境。 我现在已经在多机器/多数据中心分布式网格上广泛使用它们2年,并且绝对没有我们无法应对的性能和稳定性问题。

我们首选的驱动程序是Firefox(比HTMLUnit重,并且更难配置),我们不得不调整网格以了解我们可以运行多少个实例。 我们的最大稳定性是每个核心1个

我们的selenium / webdriver实例已经24/7运行2年了(1年使用selenium 1,其他迁移selenium 2 / WebDriver递增)并进行适当的监控(您应该监控内存使用情况/ CPU使用情况)和一堆负载测试,我们已经达到了很好的水平,我们经历了几个monthes而没有重新启动过程

我们也广泛使用HTMLUnit,并且同样满意这个库

我的post的要点是:是的,这些库是生产就绪的。 但是,作为所有生产软件,您必须对其使用进行基准测试,以找到最佳稳定性的适当配置。 我建议您在生产中使用Selenium Grid,这是一种并行化流程的好方法

我正在使用HtmlUnit进行类似的生产,并且遇到了很多问题 – 主要是性能相关的。 目前我切换到HtmlUnit 2.10的快照版本,其中实现了一些对我性能改进很重要的(例如,在HashSet.contains()上用HashSet.contains()替换ArrayList.contains() DomNode.addDomChangeListener() )。

尽管如此,在JavaScript密集的页面上CPU负载相当高。 通常,我不能在双核Linux机器上同时运行10个以上。 我相信HtmlUnit仅在解释器模式下使用Rhino(JavaScript引擎),这非常慢。 此外,您需要小心释放HtmlUnit使用的所有资源以避免内存泄漏。

总而言之,HtmlUnit设计用于运行相对较短的测试用例而不是长时间运行的服务器应用程序。 可以对它进行足够的调整,以便它可以管理,但肯定会更好。

我发现的另一种方法是phantom-js ,它是WebKit浏览器的无头版本,本机应用程序在运行JavaScript时要快得多。

一般来说,使用你的测试“直觉”。 WebDriver和HTMLUnit的作用是模拟真实用户在网页中执行某些操作。

我个人的直觉是,我应尽可能减少生产测试。 因此,如果我的webapp仍然存在,我个人会仅使用这些工具进行validation。

是的,它是generics问题的通用答案,但试试这个:

聚集负责webapp的人并询问他们:

  • 应该在生产上进行测试吗? (所以总有一点点机会,有些客户会看到那些测试数据)

  • 如果是,应该在生产中测试什么?

  • 如果是,是否应该自动化?

然后你有答案;)