如何进行Web应用程序的完整堆栈集成测试

时间:2010-01-11 07:04:02

标签: ruby tdd selenium bdd culerity

我希望增强我们当前的测试套件,并通过完整的堆栈集成/验收测试进行持续集成。

我正在寻找像Culerity和Selenium这样的工具,可以在运行用户故事时执行前端javascript。我正在寻找能够覆盖前端javascript和高级功能的东西,而不需要花费大量的开发时间来维护复杂的测试环境。我们目前正在使用Rspec,Cucumber和CruiseControl.rb,因此很容易与这些工具集成。

任何无头浏览器和具有js功能的测试环境是否值得设置和维护?您遇到的最佳选择是什么,以及要避免的陷阱?

感谢。

1 个答案:

答案 0 :(得分:1)

你听起来比我更偏向这条路,但无论如何我都会发表评论。

我正在开发一个JavaScript项目(带有Java + MySQL后端),并决定使用Selenium进行测试,并尝试尽可能全面地实现覆盖。我还尝试了一些其他的测试工具,但我不能说我真的了解它们中的任何一个。与Selenium相比,他们的网站中没有一个出现过非常优雅或受欢迎的内容。我打算最终整合到CruiseControl,但还没有这样做。

这是一个有趣的项目,在一天结束时,我对Selenium非常满意。 Selenium plusses:

  1. 测试'脚本'都可以用Java编写,不涉及晦涩的脚本语言。除此之外,您还可以轻松地在测试之前和之后操作和验证数据库中的数据。
  2. Se也支持Perl,C#等我认为,虽然这对我没有兴趣。
  3. Selenium IDE是一个很好的工具,可以快速了解Se的工作原理,定位器的工作方式等等。您不希望使用IDE实际长期运行测试,但它非常适合您的脚,以及持续搞清楚事情。
  4. Se似乎与jUnit完美配合。可能也是TestNG,但还没有尝试过,它在我的待办事项清单上。
  5. 优秀的文档和网站。
  6. 劣势:

    1. 我花了很多时间弄清楚如何在所有情况下找到元素。这部分是我使用的框架(ExtJS)的“错误”,而不是Selenium。
    2. 无论你做什么,Se都有时间依赖性 - 例如。你必须注入人工暂停才能使其发挥作用的地方。
    3. 我的测试中还有监视器大小的依赖项。我认为这是非常不受欢迎的,但在某些地方似乎是不可避免的。基本上,这是因为有许多元素类型,JS不支持您以编程方式单击。
    4. 与#3相关,在我被迫驾驶鼠标的地方。这意味着您必须拥有专用的测试PC。这没什么大不了的,但似乎不对。
    5. 测试很慢 - 主要是由于Se调用Firefox所需的时间。毫无疑问,这部分是我的环境,我怀疑我可以做很多事情来改善这一点。然而,它真的很明显,并不明显为什么。运行大约40次测试大约需要10分钟。
    6. 支持论坛非常参差不齐。好吧,你得到你付出的代价。但是我一次又一次地发现有人发布了我的问题,并且该帖子被忽略了,否则当OP指出该建议是假的时候,没有提供无效的解决方案。
    7. HTH,欢呼。