When it comes to Mobile test execution, appium framework is the default choice of engineers for writing test cases. Running the appium testcases against multiple Android versions in parallel can be achieved via another open source tool called selenium grid.
Unfortunately selenium grid is not enterprise ready. Meaning the selenium grid cannot be used as a single test execution platform across enterprise level companies due to following issues
• Not available as a Web Application to run from Intuit Standard Containers (Tomcat, WHP)
• Device registry is maintained in-memory
• No support for High Availability / Disaster Recovery
• No support for External Device Cloud
• Not much debugging support (Screenshot, Exception or Log messages)
This talk will be covering the limitations of selenium grid and how Intuit modified the selenium grid to suit for enterprise needs.
3. Emulators are not the Solution !
• Emulators/simulators won’t help you to test…
– User Experience and Usability
– Hardware
– Software
– Infrastructure
Intuit Proprietary & Confidential
3
0%of your app users use emulator to run your app!
4. Comparison of Test Automation Frameworks
Intuit Proprietary & Confidential
4
5. Intuit UI Test Frameworks
Intuit Proprietary & Confidential
Mobile UI Test
Frameworks
Web UI Test Frameworks
50.0% 91.67%
6. Thanks to Quality Community!!
• Appium is built on the idea that testing
native apps shouldn't require including an
SDK or recompiling your app
• Able to use your preferred test practices,
frameworks, and tools
Intuit Proprietary & Confidential
6
7. “Hello World”
Intuit Proprietary & Confidential
7
TestNG test case
Appium Java
Client
Appium Node
USB
REST API
Session
• Driver driver = new AndroidDriver(
new URL ( "http://SSeettuupp
localhost:4723/wd/hub" ),
capabilities);
• driver.findElement(By. name( “
Sign_In_button" ));
• driver.click();
AAsssseerrtt
• driver.quit();
TTeeaarr DDoowwnn
8. Parallel Test Execution
Intuit Proprietary & Confidential
8
TestNG test case
Appium Java
Client
REST API REST API
REST API
9. Downside of Selenium Grid
• Not available as a Web Application to run from Intuit Standard
Containers (Tomcat, WHP)
• Device registry is maintained in-memory
• No support for High Availability / Disaster Recovery
• No support for External Device Cloud
• Not much debugging support (Screenshot, Exception or Log messages)
Intuit Proprietary & Confidential
9
10. Introducing Test Execution Platform (TEP)
• Develop the test and forget the rest
One stop shop for Web and Mobile automation testing
• No additional SDK or recompilation of native apps just for testing
• Leverage open source technologies
• Align with Intuit services fabric architecture
• Easy to maintain and horizontally scalable
• Support for third party integration
Intuit Proprietary & Confidential
10
11. High Level Architecture
TEP
(Intuit
Selenium
Grid)
Intuit Proprietary & Confidential
IDE/Jenkins
Test Cases
Intuit Selenium
Driver
Intuit Lab
External Lab
REST API
REST API
REST API
12. Why Intuit Selenium Grid ?
Intuit Proprietary & Confidential
12
LAB
TEP DATA CENTER INFRASTRUCTURE INFRASTRUCTURE
QYDC LTM
APP SERVER 1
APP SERVER N
REQUEST FROM API GATEWAY – WebDriver
Requests
driver.
findElement()
driver.
findElement().click()
13. Why Intuit Web Driver ?
Intuit Selenium
WebDriver
capability.setCapability("intuitAPIKey",“put the api key here");
driver = TEPRemoteWebDriver.getRemoteDriver(new URL(<URL>),
capability);
Intuit Proprietary & Confidential
13
IDE / Jenkins
Test Cases
Web Driver
TEP
Internal Lab
Devices
Emulators
External Lab
Devices
Emulators
2
1
3
capability.setCapability("intuitAPIKey",“put the api key here");
driver = TEPRemoteWebDriver.getRemoteDriver(new URL(<URL>),
capability);
14. Why Intuit Web Driver ?
Intuit Proprietary & Confidential
driver = new RemoteWebDriver(new URL(<URL>),
capability);
14
IDE / Jenkins
Test Cases
Web Driver
TEP
Internal Lab
Devices
Emulators
External Lab
Devices
Emulators
2
1
3
driver = new RemoteWebDriver(new URL(<URL>),
capability);
15. Why Intuit Web Driver ?
Poll and Retry mechanism
IDE / Jenkins
Test Cases
Intuit
Selenium WebDriver
Return with Temp
Return with
Return with
SessionID
Appium SessionID
capability.setCapability(“isWait",“true");
driver = TEPRemoteWebDriver.getRemoteDriver(new URL(<URL>),
capability);
capability.setCapability(“isWait",“true");
driver = TEPRemoteWebDriver.getRemoteDriver(new URL(<URL>),
capability);
Intuit Proprietary 15 & Confidential
TEP
AAnnddrrooidid 4 4.4.4
Return with Temp
SessionID
Appium SessionID
16. Benefits
From To
Intuit Proprietary & Confidential
6 days of White Glove
onboarding
3 Steps/ 5 mins of Self-Service
Onboarding
Many different Test Frameworks One Standard Framework
Individual solutions for Web and
Mobile automation testing
One stop shop for Web and
Mobile automation testing
Engineering support for
maintenance after onboarding
Zero maintenance on the
Platform side
High-Risk with no HA/DR Complete HA/DR across Data
Centers and Labs