为JAva Web应用程序编写自动化测试的最佳方法是什么

时间:2009-06-04 13:17:14

标签: java testing web-applications junit cruisecontrol

我发现对于java自动化测试更好的方法是使用Cruise Control(java),JUNIT(java测试框架)和Watij。请进一步的建议。任何成功集成这些工具的人以及为此找到的限制。

问候

3 个答案:

答案 0 :(得分:2)

我们通常会尝试在3个级别上测试应用程序:

  • 使用JUnit进行单元测试。为此,我们遵循Dependency Injection模式并在必要时使用模拟对象(基于JMock框架)。
  • 集成测试。这些也基于JUnit,但不要使用模拟对象并测试不同的应用程序层,例如写入数据库。出于基本数据的目的,我们遵循Object Mother模式。
  • 验收测试,为此我们使用Selenum。

对于测试自动化和持续集成,我们的项目是使用Maven和Hudson构建的。 我们目前正在研究的一项改进是使用Groovy代替Java进行测试。

我们必须解决的一些问题:在测试用例设置中创建基本数据(基于对象母模式),测试套装的组织,因为所有测试都需要花费大量时间来运行,处理测试代码中的重复很多摆弄Maven和Selenuim,但从长远来看绝对值得。

答案 1 :(得分:1)

我的一位同事是Watir的忠实粉丝,我猜这与Watij相似。我喜欢Selenium,并且最近一直在考虑与Tellurium一起玩。

在任何情况下,将其中任何一个与CruiseControl或Hudson(我最喜欢的)等持续集成引擎捆绑在一起,是处理Web应用程序功能测试的好方法。 JUnit非常适合单元测试甚至集成测试。

功能性Web应用程序测试的限制:

虽然您可以告诉用户单击“左侧菜单中的第一项”,但告诉计算机执行相同操作并非易事。 Web应用程序测试框架无法查看屏幕并轻松识别页面上的哪些元素构成菜单。他们需要更多关于要与之交互的元素的细节,而这反过来又要求了解HTML页面的构造方式。随着页面的变化,测试也会发生变化。

当页面的一部分中的每一个小变化都破坏了页面中其他不相关部分的测试时,这些测试被称为“脆弱”。确保测试更稳定需要一些经验,就像在常规单元测试中一样。例如,使用元素ID或名称来引用页面上的元素,而不是它们的完整XPath(可能很长且不可读以及脆弱)或它们的文本内容(如果它可能会更改)。

答案 2 :(得分:0)

我们喜欢使用WATIR进行Web应用程序的功能测试。这是Ruby的浏览器自动化软件包。易于学习,在编写了许多测试用例后,我们没有遇到任何障碍。