Top 5 Open Source Automation Tools for iOS and Android

8 min read

Nowadays, test automation is an important aspect of software product testing. As a result, more companies are focusing on providing test automation services.  There are multiple positives to go for test automation. This includes minimizing test execution time, ensuring larger coverage in less time in critical release phases, and reliable and repetitive runs during the product development phase to ensure no regression issues are introduced. Also, it minimizes the risk of human error or negligence while doing repetitive regression testing cycles.

There are numerous open-source and paid tools available on the market. Though there are advantages and disadvantages to using paid and open-source technologies, the latter are generally employed by the automated testing community. Choosing the correct automation tool based on project requirements is the most difficult element, as it might propel your test strategy beyond the winners to the finish line, or it could be a nightmare, decoupling testing and development planning in agile processes.

Below are 5 top open-source iOS and android automation tools that are most widely used and have wide community support.

1) Calabash (For Android and iOS)

What it is: Calabash is an open-source acceptance testing framework for Android and iOS automation. Calabash includes separate libraries for Android and iOS automation. It’s a cross-platform framework and supports cucumber which enables an expression of the behavior of the app in the natural English language implementing BDD (Behavior Driven Development). 

Cucumber tests are written as a list of statements that comprise a variety of test scenarios, all of which are described in the Ruby language. Calabash provides a bridge that allows cucumber tests to execute and validate on iOS and Android.

In Calabash, a cucumber statement must be defined only once but can be repeated for different scenarios of a cucumber script.

The actual tests are written in Gherkin, backed with Ruby code, and run in the context of the Cucumber Framework.

Pros

  • Large Community Support.
  • Simple and expressive English like test statements
  • Supports all actions on the screen such as swipe, pinch, rotate, and tap.
  • Large and enthusiastic community.
  • Cross platform development support(same code works for Android as well as iOS devices)

Cons

  • After the failure of the test steps, all subsequent steps will be skipped. This can cause more severe product issues to be missed out.
  • Takes time to run tests as it always installs the App first by default. However, this setting can be overridden by a hook that we can configure in the code.
  • Requires Calabash framework to be instrumented inside IPA file for iOS.
  • We must have the code of the App in the case of iOS.
  • Not friendly to languages other than Ruby.

2) Appium (Android and iOS)

What it is – Sauce Labs developed Appium, an open-source test automation framework for native, hybrid, and mobile web apps. Appium library functions inside the framework and makes calls to the Appium server running in the background which operates the connected device. It uses JSONWireProtocol internally to interact with iOS and Android apps using Selenium’s WebDriver. 

Unlike Calabash, which focuses on Ruby development, Appium may be used in a framework with any language supported by the selenium-web driver, including Java, Python, and Ruby.

The Appium server is hosted on a Node server. You may launch the Appium server by running a series of Node commands. When utilizing the Appium Standalone Application as a server (which can be downloaded from the Appium website), the 'Inspector' tool allows you to locate/identify/operate on all locators defined for the Application. 

Pros 

  • Supports multiple languages.
  • Does not require Source code access.
  • Cross-platform script development.
  • Large community support.
  • Supports script recording on Mac
  • Can extract identifiers using Appium Server application’s ‘Inspector’ tool.
  • In-built support for ‘Selendroid’ by Appium Server desktop application.
  • It also uses the vendor provided framework: UIAutomation for iOS, UIAutomator and Selendroid for Android 4.2+ and 2.3+ respectively.
  • Supports physical devices as well as Emulators.
  • Supports native, hybrid and mobile web application automation.

Cons

  • Frequent unstable releases for Appium Server desktop applications.
  • Script recording is not available for Application server desktop applications for Windows OS.

3) Robotium (Android)

What it is – Robotium is an open-source test framework for creating functional, system, and acceptability tests. It is pretty similar to Selenium, but exclusively for Android. It's licensed under Apache 2.0. 

It is becoming increasingly popular in the test automation community due to its simplicity and ability to develop powerful and robust automation scenarios. 

As a result, it applies run-time binding to GUI components. It installs a test case suite as an application on an Android device or emulator, creating a realistic environment for testing.

Pros 

  • Easy to write test scripts in minimal time.
  • Automation of pre-installed apps is possible.
  • Automatically follows the current activity.
  • Faster and more robust test execution as compared to Appium due to run time binding with GUI components.
  • Can work without access to code or knowing the implementation of the app.
  • Support for Activities, Dialogs, Toasts, Menus, Context Menus, and other Android SDK controls.

Cons

  • Can’t handle flash or web components.
  • Supports development in Java.
  • Can be slow on older devices.
  • Does not support automation of iOS devices which can be a deal-breaker where the test strategy involves automation of both android and iOS devices automation.
  • No inbuilt support for record and playback. Paid tools are available for recording such as TestDroid and Robotium Recorder

4) Frank (iOS)

What it is: Frank is an iOS app automated software testing service that allows you to construct test scenarios in structured English sentences using Cucumber. 

Frank requires it to be compiled within the application under test, thus you must make changes to your source code. It's a tool created primarily by fellow Thought employees that uses a combination of Cucumber and JSON commands given to a server running within your native application and uses UISpec to execute the commands.

Pros 

  • Test scenarios are written in understandable English sentences with the help of the cucumber framework.
  • Symbiote – Live inspection tool is included.
  • Proves efficiency when the team is having experience with web automation framework with selenium, and cucumber.
  • Active community support.
  • Continuously expanding library.

Cons

  • Limited support for gestures.
  • A bit difficult to run tests on the device.
  • Modification to the configuration file is required to run on real devices.
  • The recording feature is not available.

5) UIAutomator (Android)

What it is – UI Automator is a Google test framework that enables extensive UI testing of native Android apps and games. It is a Java package that includes an API for creating functional UI tests as well as an execution engine for running those tests. This library is included with Android SDK. There are several tutorials available to help newcomers get started. The advantage is that it grants Junit test cases extra privileges while running, allowing them to access different processes. Although it is effective and straightforward for native app automation, it has extremely limited or no support for web view automation. It only supports devices with API level 16 and above, although it should not be a huge concern or deal-breaker because most apps nowadays offer.

Pros

  • Simple and easy to learn tutorials are available.
  • Library supported and maintained by Google community.
  • The third party paid integration with cloud based test management is available.

Cons 

  • Supports only Android 4.1 and above.
  • Script recording is not supported.
  • Support is focused on Java.
  • You can’t get current activity or Instrumentation.
  • ‘WebView’ is not currently supported and hence hybrid apps.
  • Library support is in Java only so it’s tough if someone wants to blend it with cucumber which is in ruby. However, Java has its own BDD frameworks which can be used, but not much in practice though.
In case you have found a mistake in the text, please send a message to the author by selecting the mistake and pressing Ctrl-Enter.
Afourtech 2
Joined: 1 year ago
Comments (0)

    No comments yet

You must be logged in to comment.

Sign In