最棒的 5 款开源 Android/iOS 自动化工具
现今自动化测试在产品测试中占有很重要地位。实现测试的自动化有很多积极的意义,比如尽量缩短测试执行时间,关键发布阶段在更短时间保证更大的测试覆盖, 产品开发阶段可靠和重复运行确保不引入回归问题;并且它也能最大可能地减少在重复性回归周期由于人的错误或疏忽带来的风险。
市场上有大量的工具可以用来做测试自动化,其中有开源的也有付费的。尽管使用付费的或者开源的工具各有优劣,后一类的工具还是在各自动化测试社区被广泛使用。根据你的项目需求选择恰当的自动化工具是非常棘手的。
下面是排名前 5 的开源 iOS 和 Andriod 自动化工具。
1) Calabash (适用于安卓和 iOS)
(图片翻译:Calabash 让你能够编写和执行手机应用的接受测试,它是跨平台的,支持安卓和 iOS 的原生程序,它是开源和免费,由 Xamarin 开发并维护。)
这是什么?-Calabash 是支持安卓和 iOS 开源的接受自动化测试框架。它为安卓和 iOS 的自动化提供了一个独立的库。它支持 cucumber ,从而可以让你采用 BDD (行为驱动开发)英语母语的方式表达你的应用。
Calabash 提供了一座桥让 cucumber 测试和验证能在安卓和 iOS 上执行。Cucumber 测试是编写为一组语句列表,语句有若干数目的测试场景组成。Cucumber 中的语句是用 Ruby 定义的。
在 Calabash 中,一条 cucumber 语句只能定义一次,但是可以在 cucumber 脚本的不同场景中运行多次。
实际的测试是用 Gherkin 编写,支持 Ruby 代码,并且运行在 cucumber 框架中。
优点
-
大型的社区支持。
-
简单的,富有感染力的类似于英语的测试语句。
-
支持屏幕所有的动作,比如滑动,缩放,旋转和敲击。
-
大型而热情的社区。
-
跨平台开发的支持(相同的代码在安卓和 iOS 都适用)
缺点
-
当测试步骤失败的时候,后续步骤会被忽略。这个会导致漏掉更严重的产品问题。
-
跑测试需要花费时间应为默认是总是在最开始安装应用,但是这个设定可以在代码添加钩子给覆盖掉。
-
需要 Calabash 框架在安装在 iOS 的 ipa 文件中。
-
在 iOS 上我们必须要应用的代码。
-
对 Ruby 之外的语言不友好。
2) Appium (支持安卓和 iOS)
这是什么 –Appium 是 Sauce实验室提供给原生,混合,和网页手机应用的开源自动化测试框架。Appium在框架中的库函数调用后台的Appium服务器从而操作连接的设备。它使用Selenium的 WebDriver来和iOS和安卓应用交互,它内部使用 JSONWireProtocol。
不像Calabash它不是仅仅支持用Ruby开发, 借助Selenium WebDriver的支持,Appium能够按你选择的语言来开发,从Java,Python到Ruby,只要该语言被Selenium WebDriver支持。
一 个 Appium 服务器是部署在Node服务器上的。 可以通过一组Node明年来启动一个Appium 服务器。如果使用Appium独立服务器作为你的应用服务器 (可以从Appium网站下载), 检查员工具提供了 定位/甄别/操作 你的应用中的所有定位器的能力。
优点
-
支持多语言。
-
无需访问源码。
-
跨平台脚本编程能力。
-
大社区的支持。
-
支持在Mac平台录制。
-
能够使用Appium服务器程序的‘定位’工具提取标识符。
-
由Appium服务器桌面程序内建支持‘Selendroid’。
-
还能使用供应商的框架: UIAutomation用于iOS, UIAutomator和Selendroid分别支持android 4.2+ 和 2.3+。
-
支持物理设备和模拟器。
-
支持原生,混合和手机网络程序的自动化。
缺点
-
Appium服务器桌面程序常常有不稳定版本。
-
Window操作系统上对服务器桌面应用不支持脚本录制。
3) Robotium (Android)
Robotium 是什么 – Robotium 是一个开源的测试框架,它可以用于功能测试,系统测试,验收测试等场景。Robotium 和 Selenium 非常相似,不同的是它仅能用于 Android。它遵循 Apache License 2.0 开源协议。
由于它简单易用,并且能够创建出强大、健壮性良好的自动化测试场景,Robotium 正在受到越来越多的自动化测试社区用户的欢迎。
Robotium 使用运行时绑定 GUI 组建的方式。使用时将测试用例库,以一个应用程序的形式安装到 Android 的设备或者模拟器上,以此提供一个真实的环境用以执行测试。
亮点
-
让编写测试脚本工作变得轻而易举.
-
能够对预装应用进行自动化测试.
-
自动追踪当前的 activity.
-
由于采用了运行时绑定 GUI 组件的方式,与 Appium 相比,它能够更加快速稳定的执行测试.
-
可以在没有源代码,也不知道应用具体实现的条件下进行测试.
-
支持 Activities, Dialogs(对话框) ,Toasts, Menus(菜单), Context Menus(上下文菜单)和其他 Android SDK 的控件.
不足
-
无法处理 flash 和 web 组件.
-
仅能够支持 Java 开发环境.
-
在较早期的设备上运行不够流畅.
-
由于不支持 iOS 设备,当自动化测试同时覆盖 android 与 iOS 的情况时,测试会被中断.
-
没有内置的记录和回放功能. 使用记录功能需要 TestDroid 和 Robotium Recorder 这样收费工具。
Frank是什么 - Frank 是一个 iOS 应用程序的自动化测试框架,它提供了一种使用 Cucumber 自然语句书写测试用例的能力。
Frank 需要被编译进被测试的应用程序,这意味着你的源代码必须被修改。它是一个工具,使用的是Cucumber 和 JSON 的组合命令,并将这些命令发送到你本地应用程序中的一个服务器。然后,利用 UISpec 来执行这些命令。
优点
- 借助于 Cucumber 框架,可以使用容易理解的自然语句书写测试用例。
- 自带审查工具。
- 显示出了高效性,对于拥有 Selenium 和 Cucumber 自动化测试框架使用经验的团队。
- 活跃的社区支持。
- 持续扩展的功能库。
不足
- 有限的手势支持功能。
- 设备上跑测试有点困难。
- 需要修改配置文件才能在真实设备上运行。
- 缺少记录功能。
5)UIAutomator (Android)
UIAutomator 是什么 - UIAutomator 是来自 Google 的测试框架,提供 Android 原生 app 和游戏的高级 UI 测试。它是一个 java lib,既有创建功能的 UI 测试的 API,又有运行测试的执行引擎。 Android SDK 中就带有。有很多教程帮助新手入门。它的优势在于,在运行访问不同进程时,给 JUnit 测试用例特权。尽管对于原生 app 的自动测试,它是又好又简单,但是对于自动测试 web view 的支持则是那么的有限近乎不支持。它只支持 API level16 及以上的设备,但这并没有多大问题,毕竟现在大部分都已在 API level19 及以上了。
优点
1. 简单易用,教程丰富;
2. Library 支持且由 Google 社区维护;
3. 第三方付费集成云端的测试管理。
缺点
1. 只支持 Android4.1 和更高;
2. 不支持脚本录制;
3. 支持只专注于 Java;
4. 无法获得当前的 Activity 或 Instrumentation;
5. 当前不支持 WebView 或混合 app;
6. Library 只支持 Java,因此想集成到 ruby 的 cucumber(译注:Cucumber 是 BDD(行为驱动开发)中成熟的一个框架,官方网址: http://cukes.info/)框架中则比较困难,尽管 Java 已有 BDD框架可用,可实际上却用的很少。