Hello Friends,
In this article , i will describe about mobile automation tool
Appium :-
Before starting with the appium we should know about
Emulator,
Simulator &
Real Devices
Simulator
A simulator is used in another thinking context, e.g a plane simulator, a car simulator, etc.
The simulation will take care only of some aspect of the actual thing, usually those related to how a human being will perceive and control it.
The simulator will not perform the functions of the real stuff, and cannot be sustituted to it.
Emulator
An emulator is a device that mimics something close enough so that it can be substituted to the real thing.
E.g you want a circuit to work like a ROM (read only memory) circuit, but also wants to adjust the content until it is what you want.
Difference between Emulator & Simulator
1).An emulator can replace the original for real use.
A Virtual PC emulates a PC.
A simulator is a model for study and analysis.
2).
Simulation = For analysis and study
Emulation = For usage as a substitute
What is Emulator & Simulator in terms of mobile?
Emulator and simulator are virtual devices, A virtual devices is not the real phone but software
which gives same functionality as the real phone(Except few functionality like camera).
Android Virtual devices : Emulator
iOS Virtual device : Simulator.
Important Points
An Appium is an open source tool for automating mobile application which can be :-
Native
Hybrid
Web
Examples of hybrid apps
For many it is surprising to learn that some of the world’s most popular mobile apps turn out to be…hybrid!
This includes: Amazon (for iOS and Android), Evernote (for iOS and Android), Netflix (for iOS and Android).
Appium supports platforms such as :-
Andriod
iOS
Firefox OS
Appium was designed to meet mobile automation needs according to a philosophy outlined by the following four tenets :-
1). You should not have to recompile your app or modify it in any way in order to automate it.
2). You should not be locked into a specific language or framework to write and run your tests.
3). A mobile automation framework should not reinvent the wheel when it comes to automation APIs.
4). A mobile automation framework should be open source, in spirit and practice as wll as in name.
we don't have to recompile or modify anything in our application under test(AUT) to perform automated test with appium, sience appium
under the hood uses the vendor specific frameworks meaning :-
Android :- UIAutomator(developed by Android developers)
iOS :- UIAutomation(developed by Apple Inc)
Sience Appium has extended web driver client library, appium also support all the languages which webdriver suports like :-
Java
C#
Ruby
Python
Php etc.
How is Appium Built
1). Appium is basically an HTTP server written in Node.js that creates and handles webdriver sessions.
2). Node.js is a platform build on Chrome's javaScript runtime for easily building fast, scalable network applications.
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive
real-time applications that run across distributed devices.
Appium Architecture :-
As appium is an HTTP server, its performs pretty much same as Selenium Webdriver server by :-
1). Receiving request/commands from clent libraries.
2). Executes the command on the target devices/emulators .
3). Responds with an HTTP response.
Hence Appium Works as a client/server architecture.
Client Librares -
Appium Client libraries has different language bindngs like :-
Ruby
Python
Java
JavaScript
PHP
C#
RobotFramework
How Appium Works?
1).As we already know that
Appium suports Andriod, iOS and Firefox OS platforms, there should be a mechanism
for appium to handle them.
2).Hence
Appium handles these platforms using vender-provided frameworks.
The Vendor-provided frameworks for differnt platforms are :-
iOS Apple's UIAutomations
Android 4.2+ Google's UiAutomator
Andriod 2.3+Google's Instrumentation (Instrumentation support is provded by bundling a seprate projects,
Selendroid)
How Appium Works in Android
How Appium Works in iOS
What is appium desired capabilities
Desired capabilities are keys and values and they are encoded in a JSON Object.
Desired capabilities sent by the appium client to the server when a new automation session is requested.
They tell the Appium drivers all kinds of important things about how you want your test to work. Each Appium client builds capabilities in a way
specific to the client's language,
but at the end of the day, they are sent over to Appium as JSON objects.
appPackage, appActivity, appWaitPackage, appWaitActivity, LaunchTimeout & UDID all are
capabilities.
appPackage call desired
JAVA package in android that user want to run.
appActivity Application Activity that user wants to launch from the package.
appWaitPackage Package from which application needs to wait for
appWaitActivity Any Android activity that user need wait time
LaunchTimeout Total time(in ms) to wait for instrumentation.
UDID To identity unique device number for connected physical device.
What is the full form of ADB
Ans :-Android Debug Bridge