关于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/


推荐阅读

    linux命令行设置网卡?

    linux命令行设置网卡?,系统,地址,信息,网络,工具,电脑,工作,名称,设备,网卡,l

    linux设置ip命令?

    linux设置ip命令?,地址,系统,密码,设备,命令,服务,工具,网络,网卡,计算机,在L

    linux设置命令是什么?

    linux设置命令是什么?,系统,工作,信息,名称,地址,命令,在线,基础,标准,工具,l

    linux命令设置密码?

    linux命令设置密码?,密码,系统,服务,软件,地址,电脑,流程,管理,用户,命令,问

    linux设置编码命令?

    linux设置编码命令?,系统,数据,发展,文件,字符集,命令,数据库,以下,终端,大

    linux命令行设置语言?

    linux命令行设置语言?,系统,管理,环境,国家,工具,电脑,软件,文化,底部,语言,l

    linux设置壁纸的命令?

    linux设置壁纸的命令?,图片,系统,电脑,照片,位置,终端,颜色,字体,单击,壁纸,

    linux恢复命令行设置?

    linux恢复命令行设置?,系统,工作,密码,信息,工具,地址,电脑,命令,情况,地方,

    linux命令提示设置?

    linux命令提示设置?,系统,工作,地址,信息,命令,软件,目录,管理,变量,文件,Lin

    linux设置命令ip?

    linux设置命令ip?,地址,系统,代码,命令,密码,网卡,终端,计算机,测试,网关,lin

    linux设置man命令?

    linux设置man命令?,信息,系统,工具,工作,地址,命令,基础,地方,基本知识,技术

    linux鼠标设置命令?

    linux鼠标设置命令?,系统,软件,环境,产品,设备,数据,网络,网址,工具,情况,lin

    linux参数设置命令?

    linux参数设置命令?,网络,系统,地址,工作,信息,管理,服务,名称,状态,命令,在l

    linux设置电源的命令?

    linux设置电源的命令?,系统,信息,管理,设备,扩大,时间,设计,电脑,代码,位置,l

    linux设置路由器命令?

    linux设置路由器命令?,网络,信息,代码,地址,电脑,工作,环境,系统,密码,路由,l

    linux设置根命令过短?

    linux设置根命令过短?,系统,工作,软件,地址,命令,代码,情况,管理,基础,位置,3

    linux设置路由器命令?

    linux设置路由器命令?,网络,信息,代码,地址,电脑,工作,环境,系统,密码,路由,l

    linux命令行设置字体?

    linux命令行设置字体?,系统,工具,终端,软件,电脑,数字,位置,等级,字体,命令,L

    linux命令快捷设置?

    linux命令快捷设置?,第一,系统,名称,终端,发行,首页,命令,快捷键,窗口,桌面,l

    linux命令设置扩展屏?

    linux命令设置扩展屏?,工具,系统,电脑,技术,软件,装备,情况,工作,命令,显示