继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

盘点:Android与iOS开发常用的五个开源自动化工具

GD_SeHun
关注TA
已关注
手记 160
粉丝 570
获赞 3.9万

概述
自动化测试在产品测试中起着非常重要的作用。它能够给项目开发带来诸多好处:在产品开发阶段,重复可靠的运行,确保没有回归方面的问题;在产品面临交互的关键时刻,用最短的时间覆盖最大化面积的测试执行区域;它重复地进行着每个周期的回归测试,最大限度地减少人为错误所产生的风险或疏忽。

在市场上有很多的自动化测试工具,有开源的,也有付费的,其中前者被广泛应用在自动化测试社区,如果你想要在项目中选择合适的开源自动化工具,会相当的棘手。 以下笔者收集了移动开发常用的五个开源自动化工具,供你参考。

1) Calabash (可用于Android和iOS开发)

图片描述

Calabash是一个用于Android和iOS自动化验收的开源的测试框架。作为一个跨平台的框架,它为Android和iOS的自动化测试提供了独立的库,支持Cucumber——通过自然的英语传递应用行为从而实现BDD(行为驱动开发)。

Calabash提供了一条连接Cucumber测试工具与移动端操作系统的桥梁。所编写的Cucumber测试声明列表会形成不同的测试场景,而这些声明全都是由Ruby定义的。

在Calabash中,一个Cucumber的声明只允许被定义一次,但是可重复运用到一个Cucumber脚本下的多个不同的场景之中。

实际的测试都是由Gherkin语言进行编写(在feature文件中),再转译成Ruby语言,然后运行在Cucumber框架之中。

优点

  • 庞大的社区支持。
  • 简单而富有表现力的测试声明(如通过英语传递)
  • 支持屏幕上的所有行为,如滑动、缩放、旋转等。
  • 热情富有活力的社区。
  • 支持跨平台开发。(同样的代码既可运行在Android上也可运行在iOS上)

缺点:

  • 某个测试步骤一旦出现问题后,后续的步骤将会跳过。这会造成更加严重的产品问题。
  • 由于在默认情况下会首先安装应用程序,因此运行测试会需要一段时间。当然,我们可以通过代码来改变配置。
  • 在iOS中需要将Calabash框架转化进ipa文件里。
  • 在iOS中需要应用程序的代码。
  • 除了Ruby,其它所涉及的语言(如Gherkin)不友好。
2) Appium (可用于Android和iOS开发)

图片描述
Appium是由Sauce Labs公司开发的一个用于本地、混合、移动web应用程序的开源自动化测试框架。Appium框架中的库函数可调用运行在后台操作连接设备的Appium服务器,在内部它使用JSONWire协议与使用Selenium WebDriver 的iOS或Android应用程序产生联系。

与主要由Ruby支持的Calabash不同的是,Appium使用的框架语言可由你任意选择,这其中包括Java、 Python、 Ruby和所有其它Selenium WebDriver支持的语言。

Appium服务器被托管在节点服务器之上。你可以通过一组节点命令来开启Appium服务器。如果你使用Appium独立应用程序来作为你的服务器(从Appium网站下载),Inspector工具就可以对你应用程序上的所有定位器(Locator)进行定位/识别/操作。

优点:

  • 支持多种语言。
  • 不需要对访问源代码。
  • 庞大的社区支持。
  • 支持Mac的脚本记录。
  • 可使用Appium服务器应用程序的“Inspector”工具来提取标识符。
  • 内置支持‘Selendroid’的Appium服务器桌面应用程序。
  • 支持使用供应商提供的框架: UIAutomation for iOS、UIAutomator for android 4.2+
    及Selendroid for android 2.3+。
  • 支持物理设备以及模拟器。
  • 支持本地、混合和移动web应用程序自动化。

缺点:

  • Appium服务器的桌面应用程序发布经常不稳定。
  • 脚本记录无法用于Windows操作系统下应用服务器的桌面应用程序。
3) Robotium (可用于Android开发)

图片描述
Robotium是一个用于功能、系统和验收测试场景开发的开源测试框架。它与Selenium很相似,但只能用于Android。目前,它已经获得了Apache License 2.0的许可。

由于非常简单并且能够创建强大健壮的自动化场景,Robotium在自动化社区中广受欢迎。它使用了运行时间与GUI组件相结合的方式,安装测试用例套件来作为Android设备或者模拟器上的应用程序,从而提供了测试执行的真实环境。

优点:

  • 易于在最短时间内编写测试脚本。
  • 使预安装应用程序的自动化成为了可能。
  • 自动追踪当前活动。
  • 由于运行时间与GUI组件相结合,它的测试实施比Appium更加快捷和健壮。
  • 无须访问代码或者知道应用程序实施也能够正常工作。
  • 支持Activities、Dialogs、 Toasts、Menus、 Context Menus和其它的Android SDK 控件。

缺点:

  • 无法处理Flash或Web组件。
  • 在旧设备上会比较慢。
  • 不支持iOS设备的自动化。
  • 对于记录和回放没有免费内置支持。(可使用记录工具TestDroid、Robotium Recorder等,但需要付费)
4) Frank (可用于iOS开发)

图片描述

Frank是一个iOS应用程序自动化框架,它提供了在Cucumber中使用英语句子编写测试场景的功能。

Frank需要被编译进测试环境下的应用程序中,这就意味着你的源代码会发生强制性改变。它结合了发送到运行着本地应用程序的服务器端的Cucumber和JSON命令,并通过UISpec运行这些命令。

优点:

  • 测试场景可以在Cucumber 框架的帮助下通过易于理解的英语句子来书写。
  • 包括检测工具在内的所有东西是一个整体。
  • 使用过Selenium、Cucumber等web自动框架的团队使用该框架会非常有效率。
  • 活跃的社区支持。
  • 不断扩充的库。

缺点:

  • 对于触摸式的支持有限。
  • 在设备上的测试比较困难。
  • 修改的配置文件需要运行在实际的设备上。
  • 记录功能不可用。
5) UIAutomator (可用于Android开发)

图片描述
UIAutomator是由谷歌开发的用于对本地的Android应用和游戏提供先进UI测试的测试框架。这是一个包含创建功能性UI测试所需API和运行测试所需执行引擎的Java库。这个库附带Android SDK以及供初学者学习的入门教程。它有一个很大的优势是在运行访问不同进程时它能够给予JUnit 测试用例特殊许可。虽然它非常不错,使本地的应用程序自动化变得更加简单了,但是它对于WebView自动化的支持却相当有限。另外它只支持API级别在16及其以上的设备,当然这不是一个大的问题,因为现在大多数的应用程序都运行在API级别在19及其以上的设备上。

优点:

  • 简单,易学,有丰富的教程。
  • 库的支持和维护由谷歌社区来完成。
  • 第三方支付集成了基于云端的测试管理。

缺点:

  • 只支持android 4.1及以上版本。
  • 不支持脚本记录。
  • 支持主要集中在Java方面。
  • 无法获得当前活动。
  • 目前在混合应用中不支持WebView。
  • 库的支持仅限于Java,所以对那些使用 ruby语言的Cucumber用户很不友好

作者:回忆与感动
原文地址:http://www.evget.com/u/61181

打开App,阅读手记
9人推荐
发表评论
随时随地看视频慕课网APP

热门评论

文章说的,我一个都没有接触过,看来我还是很初级啊

~~~~

查看全部评论