With an increase in the usage of smartphones, Mobile applications are flooding the markets offering a host of benefits. Correspondingly this has also increased challenges in development and testing of these applications. Businesses need to be sure that their applications work flawlessly in the current competitive market. Only Manual testing of these applications is no longer sufficient. You need to automate tests to ensure better results in less time. Appium is one of the most used mobile automation tools which serves this purpose!
Appium is an open-source, cross-platform mobile test automation tool used for automation of native, hybrid, and mobile web applications. Appium supports Android, iOS on real devices as well as simulators and emulators. It is also compatible with Selenium WebDriver. Appium acts as a wrapper which translates selenium commands to iOS and Android commands.
Free of cost: It is free and open-source and can be easily downloaded. No additional installation on a device is needed to support Appium. It is developed and supported by Sauce Labs and has great community support.
Flexible: Appium supports most of the programming languages like Java, Python, PHP, C#, etc. This makes it easy for the user to select the programming language of their choice. There is no need to modify or recompile the app we are testing to support Appium.
Easy to understand: As it is compatible with Selenium WebDriver, all the selenium features are available in Appium. If you are well versed with selenium concepts, Appium is easy to use and understand.
Cross-Platform Support: An Appium test written can run in iOS as well as Android without any code change. We can run multiple tests on multiple platforms at a time. The same test is compatible to run on any device or OS version.
Record and Playback: Like other automation tools available, Appium also provides a record and playback tool. Inspectors can be used to accelerate testing efforts through record and playback functionality in Appium. It records the behavior of the native app by inspecting the DOM (Document Object Model).
Integration with CI tools: Appium can be integrated with most of the CI tools (Eg. Jenkins, Bamboo, etc) to enable automated triggering of tests during release cycles.
Advantages of Appium:
- It is free and open source.
- It supports both Android and iOS.
- Automation tests for iOS and Android can be written using same API.
- Appium tests can be written using any language.
- No need to install any extra software on mobile device to support Appium.
Limitations of Appium:
- Configuration and time needed to setup Appium for iOS and Android is complex.
- Only one iOS device at a time can be run in Appium.
- Automation support for Android 4.1 or lower is not present.
- Appium inspector cannot be run on Windows.
You are downloading the Appium server when you download Appium. The server is written in Node.js and it implements Selenium WebDriver. It is a client-server architecture.
WebDriver Script sends a connection request through the JSON Wire protocol to Appium Server. Appium server creates an automation session and as per the desired capabilities set, it sends a request to UIAutomator if it is for Android or to UIAutomation if it is for iOS.
UIAutomator then communicates with bootstrap.jar which runs on an Android mobile device or emulator and performs the operations. On the other hand, UIAutomation communicates with bootstrap.js which runs on iOS mobile devices or emulator and performs the operations. After execution, it sends back a message to the Appium server and Appium server logs the results of execution.
There are multiple options available today when it comes to mobile automation. All the tools available would have their own advantages and disadvantages too. There are lots of benefits offered by Appium for mobile automation. A single Appium test can run on multiple devices and OS versions. Creating Appium tests is also easy. But looking at the vast benefits that Appium offers, it is currently the best choice for mobile automation.
About the Author
Vikram Raskar, Senior Software Engineer - QA
Vikram is a Senior Software Engineer - QA at Jade Global. He has 10+ years of experience in software testing with expertise in Functional testing, Mobile testing, API testing and ServiceNow with Agile methodology.