如今,测试自动化在产品测试中扮演着非常重要的角色。实施测试自动化有多个积极因素。这包括最大限度地减少测试执行时间,确保在关键发布阶段以更短的时间实现更大的覆盖范围,以及在产品开发阶段可靠且重复地运行以确保不会引入回归问题。并且它可以最大限度地减少在进行重复性回归测试周期时出现人为错误或疏忽的风险。
市场上有很多可用的工具,既有开源的,也有付费的。尽管同时使用付费工具和开源工具各有利弊,但后一类工具在自动化测试社区中得到广泛使用。根据您的项目要求选择合适的自动化工具非常棘手。
以下是 5 个顶级开源 iOS 和 Android 自动化工具。
1) 葫芦 (适用于 Android 和 iOS)
它是什么 ——Calabash 是一个用于 Android 和 iOS 自动化的开源验收测试框架。 Calabash 为 Android 和 iOS 自动化提供了一个单独的库。它是一个跨平台框架,支持 Cucumber,使您能够以自然的英语语言表达应用程序的行为,实现 BDD(行为驱动开发)。
Calabash 提供了一个桥梁,允许 Cucumber 测试在 iOS 和 Android 上运行和验证。 Cucumber 测试被编写为构成测试场景数量的语句列表。 Cucumber 中的所有语句都是使用 Ruby 定义的。
在 Calabash 中,Cucumber 语句必须只定义一次,但可以针对 Cucumber 脚本的不同场景重复定义。
实际测试是用 Gherkin 编写的,以 Ruby 代码为后盾,并在 Cucumber Framework 的上下文中运行。
优点
- 大型社区支持。
- 简单而富有表现力的类英语测试语句
- 支持屏幕上的所有操作,例如滑动、捏合、旋转、点击。
- 庞大而热情的社区。
- 跨平台开发支持(相同的代码适用于 Android 和 iOS 设备)
缺点
- 测试步骤失败后,将跳过所有后续步骤。这可能会导致更严重的产品问题被遗漏。
- 运行测试需要时间,因为默认情况下它总是先安装应用程序。然而,这个设置可以被我们可以在代码中配置的钩子覆盖。
- 要求在 iOS 的 ipa 文件中检测 Calabash 框架。
- 如果是 iOS,我们必须有应用程序代码。
- 对 Ruby 以外的语言不友好。
2) Appium (安卓和iOS)
它是什么——Appium 是 Sauce Labs 的一个开源测试自动化框架,用于原生、 混合 和移动网络应用程序。框架内的 Appium 库函数调用在后台运行的 Appium 服务器,该服务器操作连接的设备。它在内部使用 JSONWireProtocol 与使用 Selenium 的 WebDriver 的 iOS 和 Android 应用程序进行交互。
与主要支持 Ruby 开发的 Calabash 不同,Appium 可以在框架中使用,您可以从 Java、Python、Ruby 和 Selenium WebDriver 支持的所有其他语言中选择语言。
Appium 服务器托管在 Node 服务器上。可以通过触发一组 Node 命令来启动 Appium 服务器。如果使用 Appium Standalone Application 作为您的服务器(从 Appium 网站下载),Inspector 工具提供了对您应用程序的所有定位器进行定位/识别/操作的能力。
优点
- 支持多种语言。
- 不需要源代码访问。
- 跨平台脚本开发。
- 庞大的社区支持。
- 支持在 Mac 上录制脚本
- 可以使用 Appium Server 应用程序的“检查器”工具提取标识符。
- Appium Server 桌面应用程序内置了对“Selendroid”的支持。
- 它还使用供应商提供的框架:iOS 的 UIAutomation、Android 4.2+ 和 2.3+ 的 UIAutomator 和 Selendroid。
- 支持物理设备和模拟器。
- 支持本机、混合和移动 Web 应用程序自动化。
缺点
- Appium Server 桌面应用程序频繁发布不稳定版本。
- 脚本录制不适用于 Windows 操作系统的应用程序服务器桌面应用程序。
3) 机器人 (安卓)
它是什么 – Robotium 是一个开源测试框架,用于开发功能、系统和验收测试场景。它与 Selenium 非常相似,但仅适用于 Android。它列在 Apache License 2.0 下。
由于它的简单性和创建强大而健壮的自动化场景的能力,它在测试自动化社区中越来越受欢迎。
它使用运行时绑定到 GUI 组件。它将测试用例套件作为应用程序安装在 Android 设备或模拟器上,并提供用于执行测试的真实环境。
优点
- 易于在最短时间内编写测试脚本。
- 预装应用程序的自动化是可能的。
- 自动跟随当前活动。
- 由于与 GUI 组件的运行时绑定,与 Appium 相比,测试执行更快、更健壮。
- 可以在不访问代码或不知道应用程序实现的情况下工作。
- 支持活动、对话框、吐司、菜单、上下文菜单和其他 Android SDK 控件。
缺点
- 无法处理 Flash 或 Web 组件。
- 支持Java开发。
- 在旧设备上可能会很慢。
- 不支持 iOS 设备的自动化,这可能会破坏交易,因为测试策略涉及 android 和 iOS 设备自动化的自动化。
- 没有内置的记录和回放支持。 TestDroid 和 Robotium Recorder 等可用于录制的付费工具。
4) 弗兰克 (iOS)
它是什么——Frank 是一个 iOS 应用程序自动化框架,它提供了使用 Cucumber 在结构化英语句子中编写测试场景的能力。
Frank 要求它在被测应用程序内部编译,这意味着必须对您的源代码进行更改。它是一种结合使用 Cucumber 和 JSON 命令的工具,这些命令被发送到在您的本机应用程序中运行的服务器,并利用 UISpec 来运行这些命令。
优点
- 测试场景在黄瓜框架的帮助下用易于理解的英语句子编写。
- Symbiote – 包含实时检测工具。
- 当团队具有 selenium、cucumber 的 Web 自动化框架经验时证明是有效的。
- 积极的社区支持。
- 不断扩大图书馆。
缺点
- 对手势的支持有限。
- 在设备上运行测试有点困难。
- 需要修改配置文件才能在真实设备上运行。
- 录音功能不可用。
5) UIAutomator (安卓)
它是什么 ——UIAutomator 是 Google 的测试框架,它提供原生 Android 应用程序和游戏的高级 UI 测试。它是一个 Java 库,包含用于创建功能性 UI 测试的 API 以及用于运行测试的执行引擎。该库随 Android SDK 一起提供。许多教程可供初学者入门。优点是它在运行时为 JUnit 测试用例提供特殊权限以访问不同的进程。尽管它对于本机应用程序自动化来说既好又简单,但它对 Web 视图自动化的支持非常有限或几乎不支持。它仅支持 API 级别 16 及更高级别的设备,但这应该不是一个重要因素或破坏交易的因素,因为如今大多数应用程序都支持 API 级别 19 及更高级别。
优点
- 提供简单易学的教程。
- 由谷歌社区支持和维护的图书馆。
- 第三方付费集成与基于云的测试管理可用。
缺点
- 仅支持android 4.1及以上版本。
- 不支持脚本录制。
- 支持集中在 Java 上。
- 您无法获取当前活动或检测。
- 当前不支持“WebView”,因此不支持混合应用程序。
- 库支持仅在 Java 中,因此如果有人想将它与红宝石中的黄瓜混合是非常困难的。然而,Java 有自己的 BDD 框架可以使用,但在实践中并不多。