{}{}{}{}{}{}{}{}{}{}{}{}{}{} 
{}{}{}{}{}{}{}{}{}{}{}{}{}{} 
{}{}{}{}{}{}{}{}{}{}{}{}{}{} 
Enterprise Ready Test Execution Platform 
{}{}{}{}{}{}{}{}{}{}{}{}{}{} 
Vijayan Srinivasan, Rahul Kumar 
{}{}{}{} 
Akshatha Udupa 
Intuit Proprietary & Confidential
Why Apps Fail? 
Intuit Proprietary & Confidential 
2
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!
Comparison of Test Automation Frameworks 
Intuit Proprietary & Confidential 
4
Intuit UI Test Frameworks 
Intuit Proprietary & Confidential 
Mobile UI Test 
Frameworks 
Web UI Test Frameworks 
50.0% 91.67%
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
“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
Parallel Test Execution 
Intuit Proprietary & Confidential 
8 
TestNG test case 
Appium Java 
Client 
REST API REST API 
REST API
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
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
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
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()
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);
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);
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
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

Enterprise Ready Test Execution Platform for Mobile Apps

  • 1.
    {}{}{}{}{}{}{}{}{}{}{}{}{}{} {}{}{}{}{}{}{}{}{}{}{}{}{}{} {}{}{}{}{}{}{}{}{}{}{}{}{}{} Enterprise Ready Test Execution Platform {}{}{}{}{}{}{}{}{}{}{}{}{}{} Vijayan Srinivasan, Rahul Kumar {}{}{}{} Akshatha Udupa Intuit Proprietary & Confidential
  • 2.
    Why Apps Fail? Intuit Proprietary & Confidential 2
  • 3.
    Emulators are notthe 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 TestAutomation Frameworks Intuit Proprietary & Confidential 4
  • 5.
    Intuit UI TestFrameworks Intuit Proprietary & Confidential Mobile UI Test Frameworks Web UI Test Frameworks 50.0% 91.67%
  • 6.
    Thanks to QualityCommunity!! • 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” IntuitProprietary & 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 SeleniumGrid • 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 ExecutionPlatform (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 SeleniumGrid ? 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 WebDriver ? 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 WebDriver ? 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 WebDriver ? 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