5个iOS和Android最佳的开源自动化工具
自动化测试时下在产品测试上有着非常重要的作用。实现测试自动化有多种积极的方式,包括最大限度地减少测试执行时间;在关键的发布阶段,用更少 的时间确保更大的覆盖范围;在产品开发阶段,可靠又重复性地运行以确保没有引进回归问题。最大限度地减少重复性回归测试循环时的人为错误和疏忽的风险。
在市场上有很多可用的工具,开源的或要付费的。虽然付费和开源工具各有利弊,但是后者在自动化测试社区得到了广泛的应用。根据项目需求来选择合适的自动化工具是非常棘手的。
下面介绍 5 个最佳的 iOS 和 Android 开源自动化工具。
1)Calabash(适用于 Android 和 iOS)
Calabash 是一个开源的验收测试框架,支持 Android 和 iOS 自动化。Calabash 为 Android 和 iOS 自动化测试提供了一个单独的库。这是一个跨平台的框架,支持 Cucumber,Cucumber 能让你用自然的英语语言表述 app 的行为,实现 BDD(Behavior Driven Development,行为驱动开发)。
Calabash 提供了一个桥梁,允许 Cucumber 测试对 iOS 和 Android 运行和验证。Cucumber 测试使用一列语句写入,这些语句会形成很多测试场景。Cucumber 中的所有语句使用 Ruby 定义。
在 Calabash,Cucumber 语句只能被定义一次,但可以在 Cucumber 脚本的不同场景中重复使用。
实际测试是用 Gherkin 写的,依靠 Ruby 代码的支持,并在 Cucumber 框架的上下文中运行。
优点
- 大型社区支持。
- 简单,类似英语表述的测试语句
- 支持在屏幕上的所有动作,如滑动,缩放,旋转,敲击等。
- 大型且热心的社区。
- 跨平台开发支持(同样的代码在 Android 和 iOS 设备中都适用)
缺点
- 测试步骤失败后,将跳过所有的后续步骤。这可能会导致错过更严重的产品问题。
- 需要时间来进行测试,因为它首先总是默认安装 app。但是,这种设置可以通过在代码中配置一个钩子(hook)覆盖掉。
- 需要 Calabash 框架安装在 ios 的 ipa 文件中。
- 我们必须要有 iOS 的 app 代码。
- 除了 Ruby,对其他语言不友好。
2)Appium(Android 和 iOS)
Appium 是 Sauce Labs 出品的一个开源的自动化测试框架,用于原生、混合和移动的 web app。框架内的 Appium 库函数调用 Appium 服务器是在操作连接设备的后台运行的。它在内部使用 JSONWireProtocol,来与使用 Selenium 的 WebDriver 的 iOS 和 Android app 进行互动。
不像 Calabash 只支持 Ruby 开发,在框架中使用 Appium 时,你可以从 Java、Python 和 Ruby,以及所有其他 Selenium WebDriver 支持的语言中选择。
Appium 服务器被托管在 Node 服务器上。你可以通过触发一组 Node 命令来启动 Appium 服务器。使用 Appium Standalone Application 作为服务器(从 Appium 网站下载),Inspector 工具可对 app 的所有定位器提供查找/识别/操作的能力。
优点
- 支持多种语言。
- 不需要访问源代码。
- 跨平台脚本开发。
- 大型社区支持。
- 支持 Mac 上的脚本记录。
- 使用 Appium Server 应用程序的 Inspector 工具提取标识符。
- 通过 Appium Server 的桌面应用程序对 Selendroid 内置支持。
- 它还使用供应商提供的框架:适用于 iOS 的 UIAutomation ,分别适用于 Android 4.2+ 和 2.3+ 的 UIAutomator 和 Selendroid。
- 支持物理设备与仿真器。
- 支持原生,混合和移动的 web 自动化应用程序。
缺点
- Appium Server 桌面应用程序的发布常常不稳定。
- 脚本记录不适用于 Application 服务器对于 Windows OS 的桌面应用程序。
3)Robotium(Android )
Robotium 是一个开源的测试框架,用于开发功能性,系统,和验收测试场景。它与 Selenium 非常相似,除了 Robotium 只适用于 Android。它注册在 Apache License 2.0 下。
因为它不但简单,而且又具有创建强大又可靠的自动化场景的能力,因而它在自动化测试社区广泛流行。
它采用运行时绑定到 GUI 组件。它安装了一个测试用例套件作为在 Android 设备或仿真器上的应用程序,并提供用于执行测试的真实环境。
优点
- 容易在最短的时间内编写测试脚本。
- 预装自动化 app 是可能的。
- 自动跟随当前 activity。
- 由于运行时绑定到 GUI 组件,所以相比 Appium,它的测试执行更快,更强大。
- 不访问代码或不知道 app 实现,也可以工作。
- 支持 Activities、Dialogs、Toasts、Menus、Context Menus 和其他 Android SDK 控件。
缺点
- 不能处理 flash 和 web 组件。
- 支持 Java 开发。
- 在旧设备上会变得很慢。
- 由于不支持 iOS 设备,当自动化测试同时覆盖 android 与 iOS 的情况时,测试会被中断。
- 没有内置的记录和回放功能. 使用记录功能需要 TestDroid 和 Robotium Recorder 这样收费工具。
4)Frank(iOS)
Frank 是一个 iOS app 的自动化框架,允许使用 Cucumber 编写结构化英语句子的测试场景。
Frank 要求测试时在应用程序内部编译,这意味着对源代码的改变是强制性的。这是一个使用 Cucumber 和 JSON 组合命令的工具,命令发送到在本地应用程序内部运行的服务器上,并利用 UISpec 运行命令。
优点
- 测试场景是在 Cucumber 的帮助下,用可理解的英语句子写的。
- Symbiote——包含实时检查工具。
- 如果团队有关于 web selenium 和 cucumber 自动化框架的经验,也有效。
- 活跃的社区支持。
- 不断扩大中的库。
缺点
- 对手势的支持有限。
- 在设备上运行测试有点难。
- 修改配置文件需要在实际设备上运行。
- 记录功能不可用。
5)UIAutomator(Android)
UIAutomator 是由谷歌提供的测试框架,它提供了原生 Android app 和游戏的高级 UI 测试。这是一个包含 API 的 Java 库,用来创建功能性 UI 测试,还有运行测试的执行引擎。该库自带 Android SDK。有很多教程可供初学者上手。优点是它在运行访问不同的进程时,会给 JUnit 测试案例特权。虽然这对本地自动化 app 既好又更简单,但是它对 web 自动化视图非常有限或几乎没有任何支持。它仅支持使用 API level 16 及以上的设备,不过这也不算什么很大的因素,因为现在大多数的 app 支持 API level 19 及以上。
优点
- 简单易学的教程。
- 库由谷歌社区支持和维护。
- 第三方支付集成了基于云计算的测试管理。
缺点
- 仅支持 android 4.1 及以上。
- 不支持脚本记录。
- 支持的重点是 Java。
- 你不能获得当前活动或仪表化。
- 目前不支持 web 视图,因此是混合 app。
- 库支持使用 Java,因此如果有人想和使用 Ruby 的 cucumber 混合,会很困难。不过 Java 有它自己的 BDD 框架,虽然在实践中用到的也不多。
译文链接:http://原网站已经失效/article/5-ios-android-test-tools.html
翻译作者:码农网 – 小峰