关于java:什么是基于Swing的应用程序的最佳测试工具?

关于java:什么是基于Swing的应用程序的最佳测试工具?

What is the best testing tool for Swing-based applications?

当我们尝试为应用程序设置尽可能多的单元测试时,我总是发现缺少UI级别的测试。 那里有很多选择,但是我不确定哪是一个很好的起点。

您首选的用于测试Swing应用程序的单元测试工具是什么? 你为什么喜欢它?


在我们这边,我们使用FEST测试SWING GUI。这是经典摇摆机器人上的适配器,但可以大大简化其使用。

结合TestNG,我们发现这是一种通过GUI模拟"人为"行为的简便方法。


如果您的目标应用程序具有自定义组件,我绝对会推荐Marathon来自动化您的测试。

我被赋予了使用几个极其复杂的自定义组件自动化应用程序的任务,这些组件是完全由内部编写的。我经历了为期两个月的审查过程,在此过程中,我从近30种可用的商业和FOSS测试工具清单中决定了使用哪种测试工具。

它是唯一能够成功实现我们特定定制组件自动化的测试工具。 IBM的Rational Functional Tester,Microfocus的TestPartner,QF-Test,Abbot和FEST失败了。

从那以后,我就能够成功地将测试与Cruise Control集成在一起,从而使它们在完成应用程序的每次构建时都可以运行。

不过要注意一点:
1)它处理JTables的方式在边缘相当粗糙。我通过为他们编写自己的代理类来解决这个问题。
2)尚不支持拖放动作的记录/重放。


考虑一下Marathon(http://www.marathontesting.com/Home.html)-测试是用Jython编写的,因此根据对象状态编写任何种类的谓词都很容易。


我可以强烈推荐QFTest。我已经将它用于我的商业产品,并且几乎可以零代码运行(我的应用在某些方面需要使用Java客户端API)。它可以很好地识别摆动组件,并且可以很好地容忍对GUI的更新-(调整大小,重新定位和添加组件不会破坏现有测试)。我已经对功能进行了重大更新,并且测试仍然可以正常进行。

它昂贵,但我认为它将在几个月内收回投资。

在QFTest之前,我尝试过:

1)Automatedqa-很好的工具,但是以Windows为中心并且不了解Swing。类似于Quick test Pro。

2)UISpec4J-在花了整整50个小时的时间之后,我遇到了脆弱性及其产生的神秘Java代码的问题。使用它太麻烦了-尝试调试/更新数百行Java,执行一系列GUI操作序列,这对我的大脑来说是行不通的。我最终避免编写测试,因为它比实际编写应用程序本身要复杂得多!


您可以尝试使用Cucumber和Swinger用普通的英语编写针对Swing GUI应用程序的功能接受测试。 Swinger在后台使用Netbeans的Jemmy库来驱动该应用程序。

黄瓜允许您编写如下测试:

1
2
3
4
5
6
7
8
 Scenario: Dialog manipulation
    Given the frame"SwingSet" is visible
      And the frame"SwingSet" is the container
    When I click the menu"File/About"
    Then I should see the dialog"About Swing!"
    Given the dialog"About Swing!" is the container
    When I click the button"OK"
    Then I should not see the dialog"About Swing!"

观看此Swinger视频演示以实际操作。


我有一次玩过QF-TEST的机会。它是商业性的,但是提供了很多功能。也许您可以看一下:http://www.qftest.de/en/index.html


不是答案,而是提炼。

记录和回放是错误的要求。团队需要具备在编写代码之前编写测试的能力。否则,编码人员将完成工作并等待测试人员争先恐后地记录测试(发现问题时被修复打断)。

在BDD / TDD / ATDD类型的设置中,您确实需要某种工具,该工具可以为尚未编写的代码编写脚本测试,并指定UI元素名称等。

是否有可用于非瀑布测试的工具?


我喜欢Jemmy,为测试Netbeans而编写的库。


尝试捣蛋器:http://pounder.sourceforge.net/


推荐阅读