虽然我们尝试为我们的应用程序设置尽可能多的单元测试,但我总是发现缺少 UI 级测试的数量。那里有很多选择,但我不确定从哪里开始是个好地方。
用于测试 Swing 应用程序的首选单元测试工具是什么?你为什么喜欢它?
在我们这边,我们使用FEST来测试 SWING GUI 。这是经典摆动机器人上的适配器,但它极大地简化了它的使用。
结合 TestNG,我们发现它是一种通过 GUI 模拟“人类”动作的简单方法。
如果您的目标应用程序有自定义组件,我肯定会推荐Marathon来自动化您的测试。
我的任务是自动化一个包含几个极其复杂的自定义组件的应用程序,这些组件都是在内部从头开始编写的。我经历了一个持续两个月的审查过程,在这个过程中,我从近 30 种可用的测试工具列表中决定使用哪种测试工具,包括商业和 FOSS。
它是唯一能够成功自动化我们特定自定义组件的测试工具;IBM 的 Rational Functional Tester、Microfocus 的 TestPartner、QF-Test、Abbot 和 FEST 都失败了。
从那以后,我已经能够成功地将测试与 Cruise Control 集成,以便它们在完成应用程序的每个构建时运行。
不过要提醒一句:
1) 在处理 JTable 的方式上,它的边缘相当粗糙。我通过为他们编写自己的代理类来解决这个问题。
2) 还不支持拖放动作的录制/回放。
考虑 Marathon ( http://www.marathontesting.com/Home.html)——测试是用 Jython 编写的,因此很容易根据对象状态编写任何类型的谓词。
我有机会玩过一次 QF-TEST。它是商业的,但提供了很多功能。也许你看看它:http ://www.qftest.de/en/index.html
您可以尝试使用Cucumber和Swinger为 Swing GUI 应用程序用简单的英语编写功能验收测试。Swinger 在后台使用 Netbeans 的Jemmy库来驱动应用程序。
Cucumber 允许您编写如下测试:
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 视频演示,看看它的实际效果。
我强烈推荐 QFTest。我已将它用于我的商业产品,并且几乎为零代码(我的应用程序需要使用 java 客户端 API 来处理某些事情)。它很好地处理了摆动组件的识别,并且非常容忍对 GUI 的更新——(调整大小、重新定位和添加组件不会破坏现有的测试)。我已经对功能进行了重大更新,并且我的测试仍然有效。
它很贵,但我认为它会在几个月内收回成本。
在 QFTTest 之前,我尝试过:
1) Automatedqa - 好工具,但以 Windows 为中心,不理解 Swing。类似于快速测试专业版。
2)UISpec4J - 在每周投入 50 个小时之后,我遇到了脆弱性和它产生的神秘 Java 代码的问题。使用它太费力了——尝试调试/更新数百行执行一系列 GUI 操作的 java 对我的大脑不起作用。我最终避免编写测试,因为它比实际编写应用程序本身要复杂得多!
尝试磅: http: //pounder.sourceforge.net/
我喜欢 Jemmy,为测试 Netbeans 而编写的库。
不是回答,而是提炼。
录制和播放是错误的。团队需要在编写代码之前编写测试的能力。否则,编码人员会完成他们的工作并等待测试人员争先恐后地记录测试(当他们发现问题时会被修复中断)。
在 BDD/TDD/ATDD 类型的设置中,您确实需要某种工具,允许您为尚未编写的代码编写脚本测试,指定 UI 元素名称等。
是否有适用于非瀑布测试的工具?