移动端 App UI 自动化测试浅谈

Haibo · 2015年09月12日 · 最后由 __big__xp 回复于 2016年01月05日 · 5328 次阅读

很多做测试的同学对 UI 自动化充满着向往,但又充满畏惧,经常不知道如何入手。一方面是因为技术薄弱,觉得自动化测试比较难,另一方面可能对自动化测试持怀疑态度。那到底什么是 UI 自动化测试,它能给我们带来什么样的价值呢?下面我们探讨下移动端的 UI 自动化方法。

什么是 UI 自动化?

  • 首先,我们引用来自 Monkey 大神对的定义:UI 自动化包括界面层面(控件,元素,位置,显示等的识别)以及功能交互层面(往往是通过代码或者测试框架来模拟真实用户的操作)
  • 从个人的理解来看,UI 自动化是通过工具或者脚本语言将测试过程模拟出来,并重复执行,用以验证功能是否正确的过程。

为什么要做 UI 自动化测试?

  • 对于移动 app 而言,很多公司都采用敏捷开发的模式,因此测试也必须敏捷测试,每个迭代的周期非常短,经常要对原有功能进行回归测试,增加大量重复人力成本。引入 UI 自动化测试可以用来快速回归测试 app 原有功能,测试人员只需要关注新功能的测试。
  • 移动端 App 的测试用例大部分是功能验证相关的用例,通过 UI 操作即可验证,这就为 UI 自动化提供了便利条件。
  • 测试重复度高,执行效率低,通过 UI 自动化可以快速重复执行,达到提高测试效率的目的。

常用 UI 自动化测试工具

这几年,移动端技术发展非常迅速,测试手段也同样发展迅速,出现了大量用于对移动端 app 进行自动化测试的工具,下面简单列举下:

  • Monkey 是 Google 开发的 UI/应用测试工具,也是命令行工具,主要针对压力测试。你可以在任意的模拟器示例或者设备上运行。Monkey 发送一个用户事件的 pseudo-random 流给系统,作为你开发应用的压力测试。
  • IOS UI Automation,基于 IOS instrument。
  • MonkeyTalk 通过在 App 中加入 client 自动化为 iOS 和 Android 应用进行真实的,功能性交互测试。有成熟的集成开发环境,有 API 支持和持续集成解决方案,且方便二次开发,目前不开源,属于功能强大但没有被很好推广的测试框架。
  • Robolectric 是一款 Android 单元测试框架,使用 Android SDK jar,所以你可以使用测试驱动开发 Android 应用。
  • Robotium 结合 Android 官方提供的测试框架达到对应用程序进行自动化的测试。另外,Robotium 4.0 版本已经支持对 WebView 的操作。
  • uiautomator 测试框架提高用户界面(UI)的测试效率,通过自动创建功能 UI 测试示例,可以在一个或者多个设备上运行你的应用。
  • Selendroid 使用 Selenium 2 客户端 API 编写。可以在模拟器和实际设备上使用,也可以集成网格节点作为缩放和并行测试。
  • Appium 是一个开源的、跨平台的自动化测试工具,适用于测试原生或混合型移动 App,支持 iOS、Android 和 FirefoxOS 平台。
  • Calabash 是一款适用于 iOS 和 Android 平台的跨平台应用测试框架,支持 Cucumber,开源且免费,隶属于 Xamarin 公司。

主流跨平台 UI 自动化测试框架的对比分析

一个好的自动化测试框架,它应该是要能够支持跨平台的,目前市面上有三个主流的跨平台测试框架,这里简单比较分析三个框架的优缺点。

测试框架 Appium Calabash MonkeyTalk
支持的平台 Android、iOS、H5 Android、iOS、H5 Android、iOS、H5
所需环境 Appium、Node、JDK、Android SDK、Selenium、Xcode Calabash、Gem、Ruby、JDK、Android SDK、Xcode MonkeyTalk、Android SDK、Xcode
支持的语言 Almost Any Ruby MonkeyTalk、Java、Javascript
支持录制回放 No Yes Yes
工作原理 通过扩展 WebDriver API 编写脚本模拟测试步骤,然后通过 Server 翻译后发送给对应的移动设备 使用 Cucumber 框架组织测试用例,通过 Http 和 Json 与测试 app 通信 通过嵌入在 app 中的 client 对用户操作进行录制回放
是否开源 Yes Yes No
优点 开源,社区活跃 行为描述语言,用例重用度高 录制回放,无需编码,环境易于搭建
缺点 大量编码,元素难以定位 环境复杂,UI 难以定位 灵活性稍差,需要在 App 中安装 Client

总结

套用网上一位测试朋友的话,“自动化测试听起来很神秘,学起来很简单,用起来很麻烦”。UI 自动化的优点很多,但要考虑适用场景,否则适得其反。同样,我们也要选好一个适合的自动化框架,这样才能提高效率。总而言之,想搞好自动化测试,还需要测试人员不断地提高测试理解力,分析能力和代码水平。

共收到 9 条回复 时间 点赞

你们是不是在深圳做了分享啊?

#1 楼 @lihuazhang 公司内部分享过

这个对比还是不错的

有没有 MonkeyTalk 的安装包啊,官网上已经下载不了了

6楼 已删除

@penghaibo203 Monkeytalk 以后会更新吗? 现在用这个的人不多,有些问题也无处可问,希望大神能建个 QQ 群方便集中交流。

#7 楼 @banzhihuilan 我发邮件问官方,得到的回复是他们把 Monkeytalk 卖给了 Oracle,然后我又去联系 Oracle,他们暂时没有推出这个软件,可能要做二次开发什么的

#8 楼 @zjjx_ty 哦,感谢!

@penghaibo203 想尝试一下移动端的 ui 自动化,用户量大概 3K-5K,有什么框架推荐的嘛?谢谢

Haibo MonkeyTalk Java API 使用教程 中提及了此贴 06月26日 17:51
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册