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 that will arise for mobile app developers is to test apps to ensure their 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 software testing process.
Appium is the latest open-source framework that can be used to automate the 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 the 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 the 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 the 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:
iOS – Apple Developer Tools
Android – Android UI Automator
Appium Architecture:
Appium is an 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 into 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 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 the 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.
Appium Advantages:
- 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.
- Cross-platform
- Backend is Selenium; so you will get all of Selenium’s functionalities
- Does not require an APK for use.
Appium Disadvantages:
- Limited support for Android versions less than 4.1
- Appium documentation is not exhaustive
- Limited availability of tutorials.
Read Other Appium related blogs
How to Automate Testing for Android Native Apps Using Appium
Don’t miss my next blog on – Running Appium Automation Script on Android Emulators
Using Appium automation script to Check SQLite DB Content of a Device!
Automated Device Certification Testing On Cloud AWS Device Farm with Appium
Learn more about our app testing services / web app testing services