Sunday, November 15, 2015

Beginner's Guide to Test Automation Tools and Frameworks for Mobile Platforms

It would be great if all the test automation tools and frameworks for mobile platforms are listed under one umbrella. Instead of having to google a particular tool or framework, I have tried to briefly list some of the popular automation tools and test frameworks used for Android, BlackBerry and iOS platforms. Most of these are open-source tools and are listed in alphabetical order below:
  • Appium (iOS/Android) is an open-source tool for automating native, mobile web, and hybrid applications on iOS and Android platforms. Apps written using the iOS or Android SDKs. are called native apps, Web apps accessed using a mobile browser (Appium supports Safari on iOS and Chrome or the built-in 'Browser' app on Android) are called mobile web apps, and apps that use a "webview" native wrapper that enables interaction with web content are called hybrid apps.  Appium is "cross-platform": it allows you to write tests against multiple platforms (iOS, Android), using the same API. This enables code reuse between iOS and Android testsuites.
  • Calabash (iOS/Android) is an open-source automation UI acceptance testing framework, written in Cucumber, that facilitates running tests on Android and iOS platforms. Calabash consists of two libraries - calabash android and calabash iOS - that help in writing tests in domain specific languages. Calabash works by enabling automated UI interactions within an application such as pressing buttons, text entry, validation of responses. Hence, Calabash is a test framework that allows you to write automated tests for Android and iOS devices, and it's APIs mimic inputs to these devices and reads it's outputs. 
  • Frank (iOS) is used for automated acceptance testing for native iOS apps.  Frank allows you to write structured text test/acceptance tests/requirements (using Cucumber) and execute them against your iOS application. 
  • iOS Driver (iOS)  is capable of complete integration with the Selenium grid. Thus you will have the possibility of reusing the already existing wen automation infrastructure. This also includes the helper as well as the utility cases.
  • KIF (iOS)  stands for "Keep It Functional". It is an open-source  user interface functional testing framework primarily for iOS. KIF allows you to write tests that simulate user input like touches, swipes and text input. These tests give your app an automated real world user interface workout, thus saving you time on UI testing.  KIF can also be used for iOS acceptance testing that is gaining interest in the iOS community.
  • MonkeyTalk (iOS/Android)  A great tool to automate functional interactive tests for Android and iOS, from simple smoke tests to sophisticated data-driven functional test suites. MonkeyTalk can test apps running on actual devices, and test apps running in the iOS Simulator or the Android Emulator, for native or mobile or hybrid apps.
  • QTP (Quality Test Professionals)  is an automated functional testing tool that helps testers to execute automated tests in order to identify any errors, defects or gaps in contrary to the expected results of the application under test. QTP automates the regression and functional testing of an application. It was designed by Mercury Interactive and later on acquired by HP. The new QTP version has been named as Unified Functional Testing (UFT).
  • Robotium (Android) is an Android test automation framework for user scenario testing using automated black-box UI test cases. Test case developers can write functional, system and acceptance test scenarios, spanning multiple Android activities. Robotium also integrates smoothly with Maven, Gradle or Ant to run tests as part of the Continuous Integration (CI). 
  • Selenium (Android/iOS)  is a suite of tools for automating web browsers across many platforms. It's an useful tool for automating web applications for testing purposes, and consists of two sets of tools depending on your needs:  Selenium WebDriver/Selenium RC and Selenium IDE.
  • UI Automation (iOS)  is an Automation Instrument in Xcode that is used to automate user interface tests in your iOS app through test scripts that you can write. These scripts run outside your app and simulate user interaction by calling the UI Automation API, that specifies actions to be performed in your app as it runs in a simulator or on a mobile device. 
  • UI Automator (Android) The UI Automator testing framework, provided in the Android Testing Support Library, is suitable for cross-app functional UI testing across system and installed user applications. It provides a set of APIs to build UI tests that perform interactions on system and user apps.  This test framework is well-suited for writing black-box automated tests without needing to know the implementation details of the app itself. These APIs can be used to capture and manipulate UI components across multiple apps.