Interview questions - Automation Tester for Mobile
How does Appium work on Android?
1. Appium client (C# or Java) connects with Appium Server and communicate via JSON Wire Protocol 2. Appium Server then creates a automation session for the client and also checks the desired capabilities of client and connects with respective vendor-provided frameworks like Selendroid/UIAutomator (based on android versions) 3. Vendor-provided frameworks will then communicate with bootstrap.jar which is running in Emulator/Real device for performing client operations 4. Bootstrap.jar act as a TCP server to perform action on our AUT (Application Under Test)
How does Appium work on iOS?
1. Appium client (Java or Python) connects with Appium Server and communicate via JSON Wire Protocol 2. Appium Server then creates a automation session for the client and also checks the desired capabilities of client and connects with respective vendor-provided framework UIAutomation 3. UIAutomation will then communicate with bootstrap.js which is running in Simulator/Real device for performing client operations 4. Bootstrap.js will perform action on our AUT (Application Under Test)
What is Appium?
1. Open source test automation tool for mobile applications. 2. Support all the three types of mobile applications: native, hybrid and mobile web. 3. Support actual devices, emulators and simulators. 4. Support both iOS and Android using Selenium WebDriver. The same WebDriver bindings can be used across web and mobile. Native, Hybrid, Mobile Web. Any language. Any framework. 5. NO need code change to application under test 6. No source code access required
Limitations of an automation framework
Android devices' compability
Appium's design concept
Appium is an "HTTP Server" written using Node.js platform and drives iOS and Android session using Webdriver JSON wire protocol. Hence, before initializing the Appium Server, Node.js must be pre-installed on the system. 1. When Appium is downloaded and installed, then a server is setup on our machine that exposes a REST API. 2. It receives connection and command request from the client and execute that command on mobile devices (Android / iOS). 3. It responds back with HTTP responses. 4. Again, to execute this request, it uses the mobile test automation frameworks to drive the user interface of the apps. Framework like:- Apple Instruments for iOS (Instruments are available only in Xcode 3.0 or later with OS X v10.5 and later) Google UIAutomator for Android API level 16 or higher Selendroid for Android API level 15 or less.
Emulator
It is a software to test mobile application without a live handset
Simulator
It is an electronic network simulation equipment or a base station equipment for CDMA/CMA mobile phones. It helps in latching home networks without roaming services and can make Voice; Data calls, SMS,
Web Testing
It is related mainly to the testing of web applications such as websites and portals
WAP Testing
It is the testing the WAP (Wireless Application Protocol) used in network applications
Object based mobile testing tools
Jama solution Ranorex
Appium Framework's limitations
No Unity3D (mobile games) No Image comparison No Android < 4.2 Limited suport for hybrid app testing No support to run Appium Inspector on Windows
Image based mobile testing tools
RoutinBot Egg Plant Sikuli
How to design parallel execution
TestNG Maven 1GB/device
Types of mobile app testing
Usability testing Compatibility testing Interface testing Services testing Low-level resource testing Performance testing Operational testing Installation tests Security testing
How to find an element if there is no resource-id or text of an object?
Use Index
How to find Xpath/Id/Class/... of a button or any object in an app?
Use UIAutomatorViewer tool in Android-sdk/tools folder, or Appium's Inspector
Benefits of using open source automation
community support
How to verify/automate elements that user needs to scroll down to see them
native ScrollDown/PageDown/SwipeDown actions supported by Selenium/Appium