In my opinion, in the next 5 to 10 years, nearly 50 to 60% of existing websites will be converted to mobile apps seeing how the usage of mobile apps is growing day-by-day. A challenge which will arise for mobile app developers is to test their apps to ensure its performance. The offside of this is, manual testing, especially for each iteration, is an extremely cumbersome activity. Therefore, it is likely that most developers will opt for automating the testing process.
Appium is the latest open source framework that can be used to automate execution of test scripts with multiple test cases for both Android and iOS platforms. Though there are a few other mobile test automation frameworks in the market, Appium has gained increasing popularity because of its simplicity.
Appium framework can be used to automate Native, Hybrid or Mobile browser web applications.
It works on WebDriver Json wire protocol.
Appium Workflow Diagram:
How Appium interacts with iOS and Android Applications:
For automating iOS and Android mobile application testing, Appium uses Apple Instrumentation library or Google UI Automator to stabilize the connection between Mac OS and iOS or Windows/Linux and Android. Instruments and UI Automator libraries provide application performance, memory analysis, and testing tools for dynamically tracing and profiling iOS and Android codes respectively.
It is a flexible and powerful tool that lets you track one or more processes and examine the collected data. In this way instruments help you to understand the behavior of both user apps and operating systems.
Appium uses XCTest framework which is developed by apple in Swift or Objective-C Language.
More information about this instrument and UI Automator can be found at:
Appium is a HTTP server written in node.js which creates and handles multiple WebDriver sessions for different platforms like iOS and Android.
Appium starts a “test case” on the device that spawns a server and listens for proxied commands from the main Appium server. It is quite similar to the Selenium server which perceives HTTP requests from the Selenium client libraries and handles those requests in different ways depending upon the platforms. Each platform like iOS and Android follow different methods and mechanisms to run a test case on the device, and so Appium kind of hacks in to it and run a test case after listening to commands from the Appium server.
Configurations that are required to run Appium on Windows:
Before download and install Appium in windows, make sure about below given prerequisites are fulfilled.
- JDK Installed
- Android SDK Installed
- Set ANDROID_HOME and Path Environment Variables
- Eclipse ADT Plugin Installed
- Node JS
Configurations that are required to run Appium on Mac:
- Make sure to use Mac OSX version 10.7 and above
- Firstly, you need to download the Appium app for Mac.
- Move this app to your applications folder and then launch it using Mac Launchpad.
- As Appium uses node.js internally, you also need to install node.js on the mac machine. This can be downloaded from http://nodejs.org/. It will download node-v0.10.xx.pkg file which you need to install.
- XCode 4.5 or higher version along with iPhone simulator SDK and Command Line Tools should be installed on the Mac machine.
- Supports standard programming languages like Java, Ruby, C#, PHP etc.
- Can be used for both iOS and Android platforms
- Supports automation of hybrid, native and web mobile apps.
- Backend is Selenium; so you will get all of Selenium’s functionalities
- Does not require an APK for use.
- Limited support for Android versions less than 4.1
- Appium documentation is not exhaustive
- Limited availability of tutorials.