【问题标题】:what is the Best approach for writting automation tests for JAva web applications为 JAva Web 应用程序编写自动化测试的最佳方法是什么
【发布时间】:2009-06-04 13:17:14
【问题描述】:

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

问候

【问题讨论】:

    标签: java testing web-applications junit cruisecontrol


    【解决方案1】:

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

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

    为了测试自动化和持续集成,我们的项目是使用 Maven 和 Hudson 构建的。 我们目前正在研究的改进之一是使用 Groovy 而不是 Java 进行测试。

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

    【讨论】:

    • Tellurium 看起来像在 Selenium 之上的 Groovy。可能值得一看。
    【解决方案2】:

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

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

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

    虽然您可以告诉用户单击“左侧菜单中的第一项”,但告诉计算机这样做并不容易。 Web 应用程序测试框架不能看着屏幕并轻易辨别页面上的哪些元素构成了菜单。他们需要更多关于与什么元素交互的细节,而这反过来又需要一些关于如何构建 HTML 页面的知识。随着页面的变化,测试也会发生变化。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • Watij 也是一个用于 Java Web 应用程序功能测试的工具。我想知道java的最佳方法。任何想法
      • 可以理解。我喜欢用 java 编写代码(编译的、类型安全的等),但用 ruby​​ 编写测试用例(开销更少、更容易阅读测试、特定领域的语言等)。我们对 WATIR 很满意,因此它与 WATIJ 的质量相同,值得一试。但我没有这方面的经验。
      猜你喜欢
      • 1970-01-01
      • 2020-11-19
      • 2010-09-12
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 2010-09-13
      相关资源
      最近更新 更多