The number of mobile apps being released is increasing day by day as there has been a steep increase in the number of users using smart phones and depending on apps for anything and everything. For many businesses, having a mobile app is becoming as important as having a website for their success and establishing a market. There are also many start-up businesses getting established fully depending on mobile apps or as a mobile app itself. The quality of every app being released needs to be thoroughly checked and hence with increase in number of mobile apps, there is also a huge demand for mobile testing these days. With growing testing needs, automated testing of the apps and use of various tools becomes essential for meeting deadlines and for quality delivery.
There are many tools available in the market for mobile testing these days- automation tools or frameworks, cloud based tools providing virtual devices, etc. In this article we focus on automation tools for automating mobile apps testing. With so many choices available, finding the right tool may be a bit difficult task. In this article, we go through some major tools and its features so that it may help you in shortlisting some tools for your purpose. There are open source tools as well as commercial tools available. The open source tools available mostly require some expertise in programming and scripting, but the commercial tools often come with much easier record and play back options so that even non experts can automate scripts.

1. Appium

License Type: Open Source
Appium is one of the most widely used tool or framework for automation of mobile applications. It supports all three platforms- Android, iOS and Windows. It can be used for automating all three type of mobile applications available- native, hybrid as well as web. So this tool is a complete solution for automating mobile application across different platforms. Appium in essence is a WebServer written in Node.js platform and exposes as a REST API. Here are the key features of Appium:

  • Open source and free.
  • Can automate native, web and hybrid apps.
  • Supports multiple languages for writing scripts- Java, Python, C#, PHP, Perl, Ruby and JavaScript.
  • Uses the same API for testing across different platforms- Android, iOS or windows.
  • It can be integrated with Continuous integration tools like Jenkins and Bamboo.
  • It supports various mobile browsers- like Safari on iOS or chrome or the built in browser on android.
  • Appium allows you to run your tests in real devices as well as emulators.

2. Robotium

License Type: Open Source
Robotium is a test automation framework for automating Android applications. It supports automation of native and hybrid applications. Robotium helps users develop powerful and robust UI tests for android applications. It can be used to develop functional, system and user acceptance tests. Given below are some of the advantages of using Robotium.

  • The tool has a simple API with all methods available in solo class.
  • The framework can handle multiple android activities automatically.
  • Makes it easy to write code which is well readable with minimum time needed to create solid test cases.
  • More robust test cases can be created due to the run time binding to UI components.
  • Test execution is pretty fast using Robotium.
  • The tool offers many automatic features like automatic timing and delays, automatically finds views, automatically makes decisions like when to scroll, etc.
  • It can be integrated easily with CI tools like Maven, Gradle or Ant.

3. Selendroid

License Type: Open Source
Selendroid – Selenium for Android is yet another automation framework for Android apps. It can be used for automating native, hybrid and mobile web. The tests are written using the Selenium client API. So, the use of Selendroid requires knowledge of Selenium – that’s it! Here goes the key features of Selendroid framework.

  • It can be used on real devices as well as emulators.
  • It uses the JSON wire protocol.
  • Selendroid allows using different locator types for identifying the UI elements.
  • Selendroid uses same concepts for automating native and hybrid apps.
  • Selendroid has a buit in tool Selendroid Inspector, which is a web app embedded inside the Selendroid server and lets you inspect current state of your app’s UI and simplifies test case development.
  • It can be integrated with Selenium grid for scaling/ parallel testing.

4. Monkey Talk

License Type: Open Source
MonkeyTalk is an open source automation tool for automating Android and iOS and which is quite easy to use. It is a powerful functional testing tool and can be used for simple smoke tests or data driven test suites. It can be used to automate native, hybrid and mobile web apps. Here are some quick advantages of this tool:

  • It has a record and playback feature which makes capturing test cases easy and even non expert programmers can use the tool quite easily.
  • It uses object based recording and hence scripting is more flexible and unbreakable than in image based scripting.
  • Touch and gesture actions are promptly captured by the tool and hence actions like swipe, drag or move can be recorded efficiently.
  • It supports cross platform recording.
  • It give easy and readable test scripts which are easy to understand.

5. Calabash

License Type: Open Source
Calabash is an open source automation framework for acceptance testing for Android and iOS platforms developed and maintained by Xamarin. It enaboes you to write and execute automated test cases for native android and iOS apps and hybrid apps. Calabash consists of libraries which enables your code to interact programmatically with the apps. Calabash uses a Ruby API to interact with your application. Here are some features of Calabash:

  • Calabash uses the concept of Behavior driven development and supports the cucumber framework.
  • Calabash tests can be run on real devices or emulators.
  • Calabash helps increase productivity.

6. UIAutomator:

License Type: Open Source
UI Automator is a testing framework provided by Android Test to write UI test cases for Android apps. It is suitable for cross app functional UI testing across system and installed applications. The framework provides a set of APIs to create UI tests that can perform interactions on the applications- both system as well as installed apps. For example, it allows you to perform operations such as opening the settings menu or the app launcher in a device. UI Automator tests can look up a UI component by using descriptors such as text displayed in the component or content description, etc. The framework is best suited for black box automated tests where the test code does not depend on the internal code of the target app. Given below are the key features of UI Automator framework.

  • UI Automator scipts run can run on devices using Android 4.3 or higher.
  • It has a UI Automator viewer which is a GUI tool to scan and analyze the UI components of apps and provides a convenient visual interface to inspect the layout hierarchy.
  • It has an API that supports cross app UI testing.
  • It provides a UIDevice class to access and perform operations on the device on which application to be tested is running.
  • The UI Automator API allows you to write tests without having to know the implementation details of the application under test.

7. Frank

License Type: Open Source
So far, we have seen many frameworks for android apps. Now here comes Frank, and open source test automation framework used strictly for iOS testing applications. Given below are some features of Frank.

  • Frank allows you to create user acceptance tests and requirement using Cucumber and JSON commands which are sent to a server running inside the application under test and leverages UIspec to run the commands.
  • Frank requires to be compiled in the application to be tested making changes to the application’s source code.
  • Frank provides the ability to write test as structured English sentences using Cucumber.

8. KIF for iOS

License Type : Open Source
KIF- Keep It Functional, yet another testing framework for iOS UI testing.

  • KIF iOS tests are written in objective C.
  • It allows easy automation of apps and performs tests using a standard XCTest testing target.
  • KIF has an easy configuration as it integrates directly into your Xcode project. Hence, there is no need to run additional web server or install any packages.
  • KIF attempts to test like a user using tap events wherever possible.
  • It can be integrated with CI tools like Jenkins.

9. Ranorex

License Type: Commercial
This commercial tool is an easy to use tool which can be used to effortlessly automate your native, web and hybrid mobile apps on Android and iOS devices. Here are some reasons to go for this tool:

  • It supports code based as well as script free test automation.
  • It allows you to create script free tests using Ranorex spy to track UI elements.
  • Scripting can be done in C# or VB.NET.
  • There is no need for device modification for using Ranorex and it can bet set up very easily in your device for automated testing.
  • Ranorex enables simulation of real user interaction.
  • It allows you to test on real devices as well as emulators.
  • It can be easily integrated to various CI tools and source control tools.
  • It supports data driven testing.
  • It allows parallel testing across devices.

10. TestComplete Mobile

License Type: Commercial
TestComplete from Smartbear is another wonderful tool in the market for mobile testing with many features for easy automation.

  • It allows you to create robust UI tests for native, hybrid and web apps.
  • Tests can be run on real devices or emulators.
  • It has a script free record and replay feature for easy test creation.
  • It also allows you to create automated scripts in any of the languages- Python, VBScript, Jscript or JavaScript.
  • It can be integrated easily with continuous integration tools like JIRA, Jenkins or Git for rapid delivery.
  • There is no need to modify your device for using TestComplete.
  • You can re use the scripts in TestComplete for multiple devices having different screen sizes or resolutions.