5

我一直在研究一个 Flex 组件,我想为它编写一些自动化测试。问题是,我看过的 UI 测试工具(FlexMonkeySelenium Flex API)不能模拟“足够”:

到目前为止出现的大多数错误都与 Flex 处理拖放的方式有关,这些库无法足够准确地模拟。例如,我需要测试在组件的下半部分发生“drop”事件的情况——FlexMonkey 和 Selenium Flex API 都无法做到这一点(它们可能会模拟鼠标事件,但不会包含坐标)。

那么,是否有任何“好”的方法来自动化这种测试?

编辑:经过大量研究,看起来唯一可以做到这一点的软件是iMacros,它是仅限 Windows 的,界面是......缺乏。所以我要自己写。基本上,它将放置一个 HTTP 接口,java.awt.Robot以便代码(任何语言)可以模拟鼠标/键盘事件。如果您有兴趣,请PM我,我会及时通知您。

编辑 2:我已经在 BitBucket 上发布了我编写的框架的第一个版本 Blunderbuss:http: //bitbucket.org/wolever/blunderbuss/。您将需要 Jython 来运行它 ( http://www.jython.org/ ),但之后该flex-client示例应该可以工作。

Blunderbuss的视频在 Vimeo 上直播:

目前这仍然是一个概念验证,因为我还没有周期来清理它并使它更有用……但也许有足够多的人打扰我会给我那个时间:)

4

4 回答 4

4

我使用Eggplant来测试 Flash 和 AIR 应用程序,而无需在代码中添加任何挂钩。这是一个很棒的工具,但它非常昂贵。它通过 VNC 进入系统来模拟真实用户,并使用图像识别 - 除其他外 - 与应用程序交互。

于 2009-12-15T14:46:22.390 回答
2

我绝对对您的自定义 Java 类感兴趣,并且(尽管我在 Java 方面还不是最擅长的(但...)),如果您正在考虑进行这种协作,我愿意提供帮助。

至于 Flash MouseEvents。不幸的是,实际上并没有一种准确的方法来模拟 Flash 中的拖放体验。当由鼠标生成时,MouseEvents 的处理方式与常规事件非常不同,虽然您可以通过将事件传递给处理函数或通过使调度程序触发新的 DragEvent(DragEvent.DRAG_DROP...,它与让用户与之交互是不一样的。对于某些功能(例如访问剪贴板),Flash 中的任何内容都无法实现您的目标。

老实说,您可能正朝着正确的方向前进——使用不是用 Flash 编写的东西来驱动伪造的鼠标事件可能是您最好的选择。

于 2009-09-24T06:40:48.073 回答
1

我从来没有在 Flex 中使用过它,但我最近偶然发现了一些关于 MS Surface SDK 中自动化包的信息……在研究了那些可用于测试的类自动化用户行为之后,例如将假鼠标移动到此点,执行此操作。当您使用Flex mx.automation packages and classes时。我的猜测(和希望)是你能够使用这些类实现你想要的。

于 2009-07-15T20:08:40.283 回答
1

您也可以尝试自动热键 - 它类似于一个宏编辑程序,但它已被证明非常有效,您可以编写脚本并非常轻松地设置它。

于 2009-07-15T20:43:03.473 回答