What is Appium and How does it work? An Overview and Its Use Cases

History & Origin of Appium

Appium was originally developed in 2011 by Dan Kueller under the name “iOSAuto”, written in the C# programming language. In August 2012 the program was open-sourced using the Apache 2 license. In January 2013, Sauce Labs agreed to fund the development of Appium and move its code to Node.

What is Appium?

Appium is an open-source, cross-platform automation testing tool. It is used to automate test cases for native, hybrid, and web applications. The main focus of this tool is on both Android and iOS apps and it was limited to the mobile application testing domain only. Recently, a few updates back, Appium also announced that they would support testing desktop applications for Windows.

Appium is developed and maintained by Sauce Labs. Currently, Appium version 1.12 is being distributed. Appium first started out as a command-line-based testing service that can be installed using Node.js. In their latest release named ‘Appium Desktop’, they have released a robust and sophisticated tool with an intuitive graphical user interface. Appium Desktop comes with an Application Elements Inspector which you can see in my Appium tutorial.

How does Appium work aka Appium architecture?

Appium is an HTTP server written using a node. The JS client communicates with the server using a session, where key elements of the communication process are sent with the help of JSON objects. Communication is handled by the mobile JSON wire protocol.

Use case of Appium?

Appium Server is written in Node.js and uses a client-server architecture, in which client machines communicate with the server through a protocol.

To initiate an automation test session, the client machine sends a request to the Appium server via the JSON wire protocol. Test code can be written in many programming languages ​​such as Java, Ruby, Python, PHP, C#, and JavaScript. The Appium server then creates a new test automation session and invokes the appropriate iOS/Android driver. When the Appium server connects to the respective native testing framework, it will also begin to interact with the Bootstrap (bootstrap.jar/bootstrap.js) service, which is running on mobile devices, to perform user-like operations.

Feature and Advantages of using Appium?

Advantages of Appium

  • Appium is an open-source tool, which means it is freely available. It is easy to install.
  • It allows the automated testing of hybrid, native, and web applications.
  • Unlike other testing tools, you do not need to include any additional agents in your app to make Appium compatible with automation. It tests the same app, which is going to upload to App Store.
  • An additional feature was added to Appium. Now it would support desktop application testing for windows as well along with mobile application testing.
  • Appium is a cross-platform, freely available mobile testing tool, which allows us cross-platform mobile testing. This means you can test on multiple platforms (single API for both Android and IOS platforms).

Disadvantages of Appium

  • Lack of detailed reports.
  • Since the tests depend on the remote web driver, so it is a bit slow.
  • It is not a limitation, but an overhead that Appium uses UIAutomator for Android that only supports Android SDK, API 16, or higher. However, Appium supports older APIs, but not directly. It uses another open-source library Selendroid to support older APIs.
  • In iOS, only one instance (iOS Script) can run on one Mac OS device, which means one test can be executed at a time per Mac. If you want to run your tests on multiple iOS devices at the same time, you need to arrange the same number of Mac machines. But it would be expensive to arrange various Mac machines.

Best Alternative of Appium?

  • Cypress
  • Google Firebase Test Lab
  • G2 Deals
  • Cucumber
  • Postman
  • TestRail
  • TestComplete
  • UserTesting

Free Video Tutorials of Appium

Interview Questions and Answers for Appium

1) What Language Does Appium Support?
Appium supports any language that supports HTTP requests like Java, JavaScript with Node.js, Python, Ruby, PHP, Perl, etc.

2) List Out The Limitations Of Using Appium?
Appium does not support testing of Android Version lower than 4.2

Limited support for hybrid app testing. E.g., not possible to test the switching action of application from the web app to native and vice-versa

No support to run Appium Inspector on Microsoft Windows and you need to use UIAutomatorViewer supported by Android SDK

3) What Platforms Are Supported?
Appium currently supports Android and iOS, no support for Windows, unfortunately.

4) List Out The Pre-requisite To Use Appium?
Pre-requisite to using appium is:

  • JDK
  • TestNG
  • Eclipse
  • Selenium Server JAR
  • Webdriver Language Binding Library
  • APPIUM EXE for Windows
  • APK App Info

4) List Out The Appium Abilities?
Appium abilities are:

  • Test Web
  • Provides cross-platform for Native and Hybrid mobile automation
  • Support JSON wire protocol
  • It does not require recompilation of the App
  • Support automation test on a physical device as well as similar or emulator both
  • It has no dependency on mobile devices.

5) What are the disadvantages of Appium?
The disadvantages of Appium are listed below:

  • The testing of that android that is lower than 4.2 is not allowed.
  • Appium has limited support for hybrid app testing. You will not be able to test the action that allows switching of applications from native to web app and from web app to native.
  • There is no support that will allow you to run an Appium Inspector on Microsoft Windows.

6) Write the advantages of using Appium?
The advantages of Appium are listed below:-

  • Using the same API, Appium will allow you to write tests that are against mobile platforms.
  • By using any kind of test framework or language you can write and run the tests.
  • Appium is an open-source platform so you can contribute to it easily.
  • For the hybrid mobile applications and Native, Appium provides cross-platform.
  • Appium supports the JSON wire protocol.
  • Appium does not require recompilation of the App.
  • Appium also supports automation tests on the physical devices and also for simulators or emulators both.
  • Appium does not have any dependency on mobile devices.

7) What are the prerequisites to use Appium?
The pre-requisites that are used in Appium. They are listed below.

  • Eclipse IDE
  • Android SDK
  • TestNG
  • Web driver language binding library
  • JS
  • JDK
  • APK App Info on Google play
  • Selenium server jar
  • Appium for Windows

8) What are Mobile Web Apps?
There are mobile web pages that are those web apps that are accessed with mobile browsers. In the case of the IOS platform, Appium supports Safari and for the Android platform, Chrome or any other built-in browser is used.

9) What are native Apps?
An open-source tool that is required for mobile web, automating Native and hybrid applications on Android and IOS platforms is known as Appium which was in 2012. Appium is considered to be a cross-platform that will low you to write tests that are on multiple platforms like Android and IOS. They do this using the same API. This facility will enable you to reuse codes between Android and IOS test sites.

10) What are the main types of mobile app testing?
Following is the list of some types of mobile app testing:

  • Usability testing
  • Compatibility testing
  • Performance testing
  • Interface testing
  • Services testing
  • Low-level resource testing
  • Operational testing
  • Installation testing
  • Security testing etc

11) Describe desired capabilities in Appium
Desired capabilities are keys and values inside JSON objects sent by the Appium client to the server to perform all the actions required to test the functionality.

12) List the essentials you need to write the Appium test?
The essential things required are:

  • Driver – Set of APIs help write tests and commands are sent to HTTP Server for processing,
  • Session – Session instances should be created during the execution of automation testing and closed after execution,
  • Capabilities – Set up of Chrome Driver path to execute tests in Chrome browser and define params like PlatformName, PlatformVersion, and DeviceName,
  • Commands – Appium requires commands that are action words that perform test steps.

13) List difference between Selenium WebDriver and Appium WebDriver
Selenium and Appium both use

  • JSON wire protocol
  • Methods like
  • sendKeys(),
  • findByClassName(),
  • findByElementId(),
  • findByXPath()

14) List locators used in Appium
The list of locators’ support is as below:

  • ID
  • Class Name
  • XPath
  • Accessibility ID
  • Android UI Automator
  • iOS UI Automation
  • Android View Tag using Appium Espresso

15) List limitations of using Appium
Following are some limitations:

  • The time needed, and configuration for Appium set up are complex
  • It can run a single iOS device at a time.
  • There is no support for automation for Android 4.1 or lower.
  • There is no support for Windows for Appium inspector.
  • Limited support for testing hybrid applications.
  • You cannot test the switching action of native to the web or vice versa.

16) Describe the JSON wire protocol used in Appium.
JSON wire protocol uses RESTful API to communicate between Appium client and server, controls behaviors of mobile phone in addition to setting communication stream.

17) Which Language Should I Use To Write My Tests?
This is probably the best thing about Appium: you can write your tests in any language. Since Appium is nothing more than an HTTP server, a test that needs to be interfaced with Appium can simply use HTTP libraries to create HTTP sessions. You just need to know the Selenium protocol in order to compose the right commands and that’s it!

However, as you can imagine, there are already some libraries doing this for the most common languages and development frameworks out there: C#, [dotnet], [java], Ruby, [python], and Javascript are just a few examples; and they all are open source projects.

18) Name the Appium inspector?
Just like a selenium IDE playback and record tool, Appium consists of an inspector that is used to record and playback. With the help of this, you can record and play native application behavior which is achieved by inspecting DOM. It helps in generating the test scripts in any language that is preferred. But Appium Inspector does not have good support for Windows and they use UIAutomator viewer in the option.

19) Can a tester run the tests in a multithreaded environment while using Appium?
Yes, testers can run the tests in a multithreaded environment while using Appium. The only thing that they have to care about is to ensure that no more than one test runs at the same time against the same Appium server.

20) How can you inspect elements of the Native Android App?
It is easy to inspect the elements of the Native Android App using the UI Automator tool in Android SDK. You can also get access to the object locators of the Android Native Apps.

Rajesh Kumar
Follow me
Notify of
Inline Feedbacks
View all comments
Would love your thoughts, please comment.x