有没有一种方法可以对Swing应用程序进行模糊测试?

5
在旧时代,PalmOS拥有一个模拟器,可以生成随机事件(“点击此处,在该文本字段中输入垃圾...”)来测试应用程序如何处理它们(称为“Gremlins”)。这有点像模糊测试,但适用于GUI。在Java Swing应用程序中是否有一种简单的(现成的)方法来实现这一点?
编辑:
请注意,我不想能够指定要触发哪些事件。我希望有一些代码可以自动生成并触发随机事件(例如“Math.random()”)。事件产生实际效果或发现错误的概率非常小。但是通过触发许多事件可以弥补这一点。

希望您的应用程序无法打开“打开文件”对话框,然后删除驱动器中的所有内容。 - Andrew T Finnell
如果这是接口的问题,希望我能在用户之前找到它。 - xmjx
在Windows上的任何应用程序都允许您在打开文件对话框中删除和创建文件夹。这不一定是应用程序中的错误。 - Andrew T Finnell
我写了一个“if”。此外,我更多地寻找由随机输入触发的错误。让测试用户在程序前面点击是一回事,而让 Gremlin 攻击你的程序则完全不同,因为 Gremlin 不关心文本字段是否只接受日期并在其他情况下崩溃。http://geekandpoke.typepad.com/geekandpoke/2010/02/simply-explained-edge-cases.html - xmjx
1个回答

5
尝试使用FEST。它通过按名称访问Swing组件并与之交互,简化了功能测试Swing GUI的过程。
以下是来自FEST网站的示例:
dialog.comboBox("domain").select("Users");
dialog.textBox("username").enterText("alex.ruiz");
dialog.button("ok").click();
dialog.optionPane().requireErrorMessage()
                   .requireMessage("Please enter your password");

编辑:

或者,您想要实现的目标可以使用 Math.random()、循环、findBomponentAt(int, int) 和 Robot 类轻松完成。特别是 Robot 类可能会有用,因为它具有模拟鼠标和键盘事件的方法。


听起来很酷,但不是我想要的。我想要自动/随机/事件触发。就像“Math.random()”,而不是“Random Access Memory”。 - xmjx
如果是这样,那么,无论您想要实现什么,都可以使用Math.random()、循环、findBomponentAt(int, int)Robot类来轻松实现。特别是Robot类可能会有用,因为它具有模拟鼠标和键盘事件的方法。 - npe
我已经编辑了原始答案,现在你可以看一下。很高兴能帮到你 :-) - npe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接