写点什么

使用 FlexMonkey 测试 Flex

  • 2008-10-24
  • 本文字数:1803 字

    阅读完需:约 6 分钟

在这篇新闻中,InfoQ.com 与 FlexMonkey 项目创建者、来自 Gorilla Logic 的 Stu Stern 一起讨论了 FlexMonkey 。FlexMonkey 是一个用来测试 Flex 应用的开源工具,它采用记录 / 回放模式。

Stern 首先对 FlexMonkey 进行了概要性描述:

FlexMonkey 是一个开源的 Flex 应用和库,可以记录和回放用户界面的交互并生成可重复使用的测试用例,你可以在持续集成框架(如 Cruise Control)中运行这些测试用例。

接下来 InfoQ 问询了 FlexMonkey 与其他 Flex 测试工具有何区别:

我们注意到 FlexMonkey 是唯一一个完全基于 Flex 的记录 / 回放工具。它无需浏览器插件(当然除了 Flash player 以外),也用不着特殊的脚本语言。记录下来的 UI 场景可以作为 ActionScript 的源代码,它们既可读又可编辑。甚至不需要使用记录工具就可以轻松创建测试,因为利用 FlexMonkey API,我们没必要直接在 ActionScript 中指定大多数的 UI 操作。 如果你了解 Flex,那么你对 FlexMonkey 的使用就几乎没有任何问题,能运行 Flex 的地方就能运行 FlexMonkey(也就是说几乎任何平台都可以)。

接下来,Stern 谈到了许可协议:

FlexMonkey 本身基于 Apache 2 许可,这意味着你可以修改其源代码,并将其作为其它开源或商业产品的一部分。很显然,Gorilla Logic 认为将 FlexMonkey 放出价值更大,而并不是将其作为一个产品来卖! 但我们应该注意到 FlexMonkey 依赖于 Adobe 的 Flex Automation API,它位于 FlexBuilder 专业版中。FlexBuilder 标准版包含了 Automation API 的试用版,这限制了应用每次加载时所允许的重放次数。你可以通过 FlexBuilder 标准版来试用 FlexMonkey,如果觉得满意再升级到专业版。我们希望 Adobe 将 Automation API 加到大多数已开源的 Flex 平台中,但现在你不得不使用 FlexBuilder 专业版。专业版还可以进行性能与内存分析,因此如果你正在进行要求严 格的企业级开发,那么无论如何也要升级到专业版。

InfoQ 谈到了测试异步功能所面临的挑战:

FlexMonkey 所生成的每个 UI 事件都是异步的,而且 FlexMonkey 都会在生成每个后续事件前暂停(默认暂停 500 毫秒)。如果你有一个运行时间很长的数据库查询(比如由按钮点击所触发),那么在按钮事件产生后你可以增加延迟时间。 像 FlexUnit 这样的测试运行框架也需要针对异步操作进行特殊的处理。FlexMonkey API 本身就是异步的,因此你需要通过某种手段告诉运行器测试何时完成。当 FlexMonkey 在一个测试用例中处理完所有的事件时它会产生一个 READY_FOR_VALIDATION 事件。如果使用 FlexUnit,你需要在调用下一个测试用例前使用 FlexUnit 的 addAsync 方法来告诉 FlexUnit 等待这个事件完成。

我还要补充一下,尽管 FlexUnit 是当前唯一一个直接集成到 FlexMonkey 中的 xUnit 框架,但你仍然可以将其他针对 Flex 的 xUnit 框架与 FlexMonkey 搭配使用。我再强调一次,FlexMonkey 测试其实就是 ActionScript。此外,你可以直接将其他任何 xUnit 框架集成到 FlexMonkey 中并生成代码,就像我们对 FlexUnit 所做的一样 (请放心大胆地去做吧)。

InfoQ 紧接着问道,FlexMonkey 是如何使用 Flex Automation 框架的:

当你运行一个使用了 Automation API 的应用时,每个 UI 事件(如按钮或者鼠标点击)都会生成一个“automation 事件”来描述相应的 UI 事件。这种包含在 automation 事件中的信息可以反馈到 Automation API 中并产生一个假的按钮点击,而 Flex 对其的响应就好像它是原生的 UI 事件一样。正如我之前所提到的,通过使用 FlexMonkey API,你可以创建一个此前并没有被 Automation API 记录下来的事件。我们可以使用 FlexMonkey 记录并回放几乎任何 Flex UI 事件,包括相关的“exotic”操作,比如某个 DataGrid 里的 itemEditor 是一个 ComboBox,那么我们就可以从中选择一个条目。

最后,InfoQ 问 Stern,读者还需了解什么:

尽管我们的开源项目还是个新兵,但 FlexMonkey 却相当稳定。它有丰富的文档。大多数人能在不到一小时内就成功运行起来。 你可以运行 http://keystone.gorillalogic.com/~sstern/MonkeyContacts.html 上的这个示例应用来快速了解 FlexMonkey。如果你运行这个示例,你会看到记录并回放 UI 场景是多么的简单,你还能看到生成的 ActionScript 是什么样子的。

该项目本身位于 http://flexmonkey.googlecode.com 。我们希望看过这篇新闻的每个人都能加入我们这个快速发展的社区!

查看英文原文: Flex Testing with FlexMonkey

2008-10-24 09:454174
用户头像

发布了 88 篇内容, 共 259.7 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

阿里巴巴“高并发”天花板教程《基础+实战+源码+面试+架构》

程序知音

Java 高并发 阿里 多线程与高并发 java架构

CentOS时代即将结束 国产系统能否避免“受限”覆辙?

天翼云开发者社区

如何选择靠谱的西安培训机构?

小谷哥

JAVA开发培训哪家比较好

小谷哥

过等保是浪费钱吗?一定要过等保吗?

行云管家

等级保护 过等保 等保2.0

信用卡市场发展洞察:浦大喜奔APP探索大零售融合经营体系

易观分析

金融 银行 信用卡

Wallys /QCA9880 vs QCA9882/802.11ac Solution/MU-MIMO

wallys-wifi6

QCA9880 QCA9882

100+大屏模板免费领!葡萄城BI行业应用方案重磅发布!

葡萄城技术团队

BI 发布会

2022年8月中国网约车领域月度观察

易观分析

网约车

融云云盘,不止于存储

融云 RongCloud

云盘 云存储

限时开源!阿里P8架构师手写Spring全家桶核心知识学习笔记

了不起的程序猿

Java spring 编程 程序员 Spring全家桶

ApacheCon Asia 2022 精彩回顾 | 如何让更多人从大数据中获益?

Apache DolphinScheduler

自学Java和java培训哪个好就业

小谷哥

DataLeap的Catalog系统近实时消息同步能力优化

字节跳动数据平台

大数据 kafka 数据治理 实时同步 数据研发

【微信小程序】页面导航详解

陈橘又青

9月月更

常见堡垒机小知识汇总-行云管家

行云管家

安全 IT 堡垒机 IT运维

工赋开发者社区 | 从零开始的新跨平台浏览器:Ladybird 正式起飞

工赋开发者社区

年轻一代程序员:社牛、不卷、玩开源

腾源会

开源 腾源会

参加Java培训能学到开发技术吗?

小谷哥

Java培训学生可以学到哪些开发技术呢

小谷哥

会当“零”绝顶!天翼云零信任产品利刃出鞘

天翼云开发者社区

安全

技术分享| 分布式系统中服务注册发现组件的原理及比较

anyRTC开发者

音视频 分布式系统

易观千帆 | 2022年7月银行APP活跃用户规模盘点:江浙沪城商行表现亮眼

易观分析

App 金融 银行

人工智能、机器学习与深度学习的区别在哪里?

Finovy Cloud

人工智能 深度学习

数据湖管理及优化

阿里云大数据AI技术

大数据 spark 数据湖 企业号九月金秋榜

企业上云安全感多“亿”点!

天翼云开发者社区

天翼云安全一体化纵深体系是怎么炼成的?

天翼云开发者社区

云安全

QA如何高效参与技术设计评审

转转技术团队

质量管理 测试 技术设计质量把控

Java进阶(二十八)SimpleDateFormat格式化日期问题

No Silver Bullet

Java 9月月更

天翼云全场景业务无缝替换至国产原生操作系统CTyunOS!

天翼云开发者社区

系统

10CSS动画案例,学会了惊艳所有人

大师兄

CSS 前端 9月月更

使用FlexMonkey测试Flex_Java_Jon Rose_InfoQ精选文章