5个最佳安卓测试框架(带示例)

Google的Android生态系统在持续快速扩大。新的移动设备厂商正在世界各个角落涌现,由此出现了各种不同的屏幕大小、不同的ROM/固件、不同的芯片等等。这对于安卓开发者而言,成为了难以对付的生态碎片。

幸运的是,Android(包括iOS)的开发者们已可以不受限制地获得一些先进的基于云的解决方案,比如Testdroid Cloud,用以在大规模真实的设备上运行自动化测试来保证质量。不同Android测试框架的出现在很大程度上减轻了Android开发者的负担。

今天我们将了解5个最佳Android测试框架,讲解每一个的基本原理和代码实例。

Robotium

毫无疑问,早期Android世界里用得最为广泛的测试框架就是Robotium。它与Selenium的Android版本有类似之处,可以让测试API更简单。

Robotium是一个开源的库,基于JUnit扩展了大量关于Android UI的有效测试方法。它为 Android 应用程序(原生和混合)和web 测试提供了功能强大且可靠的自动化黑盒测试用例。只要源码可用,利用Robotium,你就可以编写功能测试、系统测试和验收测试场景,并执行测试。

Robotium代码示例:

Testdroid Recorder 是一个很棒的记录工具,它基于Robotium来创建测试脚本为你带来方便。通过在真正设备上执行实际操作,它可以记录每个步骤或者你执行的动作,然后转换为Javascript供你进一步修改。

此外,你也可以完全下载和使用我们的扩展库——ExtSolo。它包括了一些尚未合并到Robotium的有用方法,比如:

  • 支持任意分辨率的x、y点击自动缩放
  • 多路径拖拽
  • 测试失败时自动截屏
  • 模拟位置
  • 修改设备语言
  • 控制WiFi连接

uiautomator

Robotium这个框架不错但稍显简单。uiautomator可以让你在测试Android app和游戏时实现更多操作。Google的测试框架(译者注:uiautomator是Google在SDK4.0以后推出的自动化解决方案)支持在一个或多个设备上测试本地Android app用户界面(UI)。uiautomator的另一个优点是它运行JUnit测试用例时有特权,意味着测试用例可以跨进程。它还提供了五个不同的类给开发者使用,包括:

由于它出现的时间点关系,它只适用于与API级别为16(译者注:相当于SDK4.1)或更高版本的Android设备。Uiautomator的另一个缺点是它不支持webview,没有办法到直接获取到Android的UI对象。

uiautomator的代码示例:

Espresso

Espresso是一个最新的Android自动化测试框架,由Google开源,它可以帮助开发和测试推敲UI的设计。Espresso有一个很小、可预测的且容易上手的API,它构建在Android instrumentation 框架的顶层。你可以利用它快速写出简洁可靠的Android UI测试用例。它支持API级别为8(Froyo)、10 (Gingerbread)和 15 (Ice Cream Sandwich)及之后的设备。

它相当可靠,与UI线程同步并且速度快,因为没有必要做任何休眠等待的操作(当app空闲时测试运行在同一个毫秒级别)。不过它同样不支持webview。

Espresso的代码示例:

Calabash

Calabash是一个跨平台的自动化测试框架,支持Android、iOS原生和混合的应用测试。Calabash的语法通俗易懂,甚至技术零基础的人也能为运行在各种移动平台上的应用编写和执行自动化验收测试用例。Calabash的测试用例编写是基于Cucumber(译者注:Calabash的底层实现是Cucumber,它是一种BDD测试框架),然后在运行时将脚本转换为Robotium或者Frank。它支持大约80种自然语言命令(控制器),并且可以用Ruby或Java实现新的控制器。

Calabash的代码示例:

Appium

Appium是一个移动自动化测试框架(工具),可支持iOS和Android的原生、混合的移动web应用测试。它内部采用Selenium WebDriverJSON Wire Protocol来与iOS和Android app交互。它通过驱动uiautomator(API级别高于等于16)和Seledroid(API级别低于16)支持Android,驱动UIAutomation来支持iOS,利用Selenium driver来支持 Android和iOS都有的移动web。

Appium最大的一个优点就是几乎可以使用任何一种语言(比如Java、Objective-C、JavaScript、PHP、Ruby、Python、C#等)来编写Appium脚本,不受工具选择的限制,兼容两个最重要的平台(Android和iOS),安装和配置设备来测试等也自由许多。而且如果你对Selenium很熟悉,那么对你而言使用Appium测试移动app轻而易举。他们使用的是相同的WebDriver,且DesiredCapabilities(译者注:DesiredCapabilities是由客户端发送给Appium服务器端用来告诉服务器去启动哪种会话的一套键值对集合)的使用方式相同。因此在Appium上配置运行一个应用与在Selenium上有非常多相似之处。

Appium的代码示例:

总结

在这里我们列出了5种最佳测试框架,它们支持Android的构建、创立和修改。当然,每一种都有其优势和劣势。Appium适合于同时测试应用的Android和iOS版。但是如果你是一个忠诚的Android开发者,只编写Android版本的应用,那么使用Robotium就不错。借助于Testdroid Recorder来生成测试脚本绝对会让你节省大量的时间和钱(它是免费的!)。因此,慎重考虑你的测试需求-功能测试,兼容性测试,UI测试等等,然后选择一个最适合和最优的Android测试框架。

打赏支持我翻译更多好文章,谢谢!

打赏译者

打赏支持我翻译更多好文章,谢谢!

任选一种支付方式

2 收藏 评论

关于作者:谭霓

熟悉 java、liunx、php、mysql、hadoop、storm、hbase、redis、spring 等技术,在自动化测试、持续集成等领域有丰富经验。新浪微博:<a href="http://weibo.com/tanni">@无名侠女谭</a> 个人主页 · 我的文章 · 19

可能感兴趣的话题



直接登录
跳到底部
返回顶部