MonkeyTalk 【翻译原创】(一)MonkeyTalk 工具简介

water · 2014年12月22日 · 最后由 water 回复于 2015年05月08日 · 2428 次阅读
本帖已被设为精华帖!

前言:MonkeyTalk 工具是本人觉得强大、轻量、好用的一款工具,但是目前网上没有什么中文的资料,因此产生了对它官方文档进行一下翻译工作的想法,这是第一帖,本人水平有限,哪里有错还请大虾们指正。

MonkeyTalk 简介:
MonkeyTalk 是世界上最强大的移动应用测试工具。它实现 iOS 及 Android 上真实的、功能交互的自动化测试 ——包括从最简单的冒烟测试到复杂的数据驱动测试集的所有的测试。它支持原生、移动、混合型应用,在虚拟机或者真实设备上。
MonkeyTalk2.0 社区版本是 Gorilla Logic 五年来创建自动化测试工具的巅峰成就。它的下载量超过 7 万次,支持者世界各地的团队灵敏快速地实现他们 “五星好评” 的移动应用。
现在 MonkeyTalk 有了专业版,移动测试自动化变得更容易了。MonkeyTalk 专业版本是建立在社区办的基础上,为专业的移动测试提供无缝的工作流、更高的生产力、更少的麻烦和更简单的配置。它设计的初衷就是服务于应用测试人员和开发人员,事实证明它为每个项目的自动化测试都带来了良好的收益。MonkeyTalk 专业版是与 CloudMonkeyMobile 签约的产品,目前提供了免费的 beta 版本。

MonkeyTalk FAQ:
1,它总体是怎么工作的?
答:MonkeyTalk 是彻底的移动应用功能测试平台。它目前支持原生及混合的应用测试。此平台有三个基本的模块:MonkeyTalk IDE(集成开发环境),MonkeyTalk Agent 及 MonkeyTalk 脚本。
MonkeyTalk IDE —— 一个可以录制、回放及编写测试脚本的桌面应用
MonkeyTalk Agent —— 一个必须插入到所测试应用中的库
MonkeyTalk Script —— 美观、简单易懂、方便维护的测试脚本
首先,你必须把 MonkeyTalk Agent 植入到所测的应用中(详情请看相关文档http://www.cloudmonkeymobile.com/monkeytalk-documentation/monkeytalk-getting-started/install-agentMonkeyTalk),然后你可以使用 IDE 录制和回放脚本。参考文档(http://www.cloudmonkeymobile.com/monkeytalk-documentation/monkeytalk-getting-started),你会很快地上手测试的。

2,它支持真实设备吗,还是只支持虚拟设备 Emulator/Simulator?
答:都支持!它支持模拟器或者真实设备,支持 USB 线或者通过 WiFi 连接的真实设备。

3,我需要 Jailbreak 或者 Root 我的设备吗?
答:完全不用!只需要把 MonkeyTalk Agent 插入到你的应用代码中即可测试。(译者注:换句话说它需要源代码进行插码,或者未做安全/签名保护的 Apk/ipa 文件用专业版中的工具进行插入 Agent)

4,它是免费的吗?
答:是的。MonkeyTalk 免费下载,免费试用。

5,它是开源的吗?
答:是的。MonkeyTalk 是基于 GNU Affero General Public License v3 (AGPL v3) 开源协议的。我们非常欢迎对社区反馈和建议,尤其是补丁。
AGPL 是完全基于 GPL 的,但是有重要的一条是如果你修改使用了此开源代码,你必须把它发布出来。GPL 是允许公众发布修改版本而不公布源代码,而 AGPL 修补了这一条漏洞,所以公众在公共服务器上能访问它的修改版本,就应该可以查看它的源代码。如你有任何疑问,请阅读 AGPL v3 协议及联系你的律师。

6,它是跨平台的吗?我可以在 Android 和 IOS 上录制回放吗?我可以在 Android 上录制然后在 IOS 上回放吗?
答:可以。如果你 Android 和 IOS 上是逻辑上一样的应用的话,你应该可以在其中一个录制然后在另一个进行回放。因为 MonkeyTalk 是基于最高级别进行事件记录,逻辑上一样的应用不一定要有完全一样的 UI 来进行记录回放。例如,Android 典型的 Tabs 是在页面的顶部,而 IOS 是在底部,但只要它们有相同的操作记录成 TabBar.Select,它们在不同的 OS 上就会进行不同的正确回放。

7,我可以不需要源码进行测试吗?
答:不可以。你必须在应用 build 阶段插入 MonkeyTalk Agent,这是需要源码的。但是你一旦插码完毕后(无论是开发人员还是持续集成工具进行插码),你将不再需要访问源码。

8,我可以测试第三方应用吗(例如 Camera、Browser 等等)?
答:不可以。测试应用需要访问源码安装 MonkeyTalkAgent。

9,我可以测试 HTML5 Web 应用吗?
答:可以。从 1.0.40 开始我们就支持原生、混合及 Web 应用,包括 HTML5 应用,可以使用我们提供的 MTBrowser 应用进行测试。

10:,我可以测试桌面应用吗?Windows Phone 7 呢?黑莓呢?Flex Mobile 呢?
答:不可以。从 1.0.40 开始我们支持 IOS 和 Android 应用,Flex 和桌面 Web 应用仍然躺在 Source Code tree 中实验。我们的确有计划在未来支持更多的平台。

11,我可以测试手机游戏吗?
答:这个看情况。大部分游戏是基于随机数生成器的,这让可依赖的功能测试变得非常困难。未来我们可能发布覆盖随机数生成器及集成游戏引擎的 MonkeyTalk 版本。如果你使用标准 UI 的话,你仍然可以测试你应用中的非随机模块。

12,我能测试平板吗?还是只能在手机上测试?
答:都可以!MonkeyTalk 支持所有的 IOS 和 Android 机器,如果你发现有机器上 MonkeyTalk 不工作,请让我们知道。

13,测试可以全自动化吗?我可以在 CI(持续集成) 上跑吗?我可以在 IDE 之外跑吗?我可以在命令行跑吗?
答:可以。MonkeyTalk 测试可以使用 Ant 在命令行跑 (详细请看 Ant Runner 介绍 www.cloudmonkeymobile.com/content/ant-runner) 或者使用 MonkeyTalk Java 命令行执行器 (详细请看 Java RUnner 介绍 www.cloudmonkeymobile.com/content/java-runner)。我们使用 Hudson/Jenkins 作为我们的 CI 服务器作为我们内部测试,它运行的非常良好。大部分的全自动化都使用模拟器来运行应用测试,因为它可以方便地保证一个可重复的初始状态。

14,我可以发布一个插入了 MonkeyTalk Agent 的应用到应用商店吗?
答:也许可以,但是极力不推荐。我们建议你生成一个 MonkeyTalk-Enabled(插入了 MonkeyTalk Agent 的应用)只作为开发的版本。

15,我可以测试内嵌的 Web 页面吗?(iOS 上的 UIWebView,Android 上的 WebView)
答:从 MonkeyTalk Beta4 版本以后就支持内嵌的 Web 页面测试。在 Beta5,内嵌 Web 页面的录制仍然没有支持,但是脚本回放功能工作的很好。我们计划在未来加入对其的录制功能。

译者注:后面的 FAQ 是对于 DIE、iOS Agent、Android Agent、MonkeyTalk 脚本的一些内容,这里就不翻译了,后面对 MonkeyTalk 语言介绍及用户手册上都会有详细的说明。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 13 条回复 时间 点赞

MonkeyTalk 是个好工具。不过由于收费服务,所以国内用的人比较少,另外国内对测试也不重视。

#1 楼 @lihuazhang 我认为完全没必要用收费的服务,用开源的 Comunity 版本就好了,另外 Pro Beta 版本也是免费的

我挺看好这个工具的, 商业化工具的易用度和稳定还是可以保证的.
我关心的是他的不插码方式. 那个应该可以减少不少的工作量. 我记得 pro 版本里面有.
不知道你试过了没有..

前阵子你说过要发文章, 果然发分享了. 赞一下

#1 楼 @lihuazhang 有一个 monkeytalk 系列可以出来了. 不错.
我今天还特意下载了他们的工具看了下, 觉得做的还是不错的. 我在想他的 monkeytalkIDE 录制工具, 也许可以改造为 appium, 为 appium 做服务. 比如直接把他的脚本格式转化为 appium 的.

另外就是对插码方式不太满意, 虽然插码是主流, 不过这个工作如果可以自动化, 就非常好. 从官方的步骤来看, 应该是可以自动化的. 我也是刚开始研究.

#4 楼 @seveniruby 用 Pro Beta 版本,可以一键插码,但是需要 apk 没有进行过一些安全及签名的保护,否则会打不开的。其实源码插码步骤也非常简单,两三步的事情。

#4 楼 @seveniruby 搜索了下 monkeytalk 目前只有三篇文章。 文章还太少。

#5 楼 @weamylady 签名保护可以有办法绕过. 而且自己用公司的签名重签也没事. 主要是考虑到有些公司不会开放源代码给测试人员, 这种情况会影响插码框架的推广.

看着上面的介绍,感觉原理是不是属于进程间通信那种?

#8 楼 @agentwx 不是,是在 App 中使用 AspectJ 技术直接插入一个 Agent 来获取元素、操作。

也就是说,必须有源码的前提下才能使用 Monkeytalk 吗。

water #11 · 2015年01月29日 Author

#10 楼 @harryguo 一般情况下是这样,可以尝试下使用 MonkeyTalk PRO 版本,里面有一键 Instrument 的工具,如果 App 没有做太多的安全加密措施,应该是可以不需要源代码的。。

请问 monkeytalk 可以做 burntest 吧?比起 monkeytest 麻不麻烦呢?需要付费的吗?谢谢哦

water #13 · 2015年05月08日 Author

#12 楼 @lucky
1,不需要付费。
2,burntest 是什么鬼?monkeyTalk 是做功能测试的。
3,monkey 是压力测试的,两者没有可比性。monkeyTalk 用起来很简单,但肯定没有一条 monkey 命令来得简单~ ~

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册