Do it yourself “Mobile Test Lab”

I was inspired by Device Anywhere, Perfecto, HP’s mobile lab and many other remote mobile test lab vendors.

 In this blog, I am going to be talking about our experience in building (Do it yourself remote mobile test lab retaining some key IP related info)

 When we were building the mobile development and testing CoE, we came across many challenges and need for having a mobile test lab that has ability to remotely access device, integrate with Orchestration / CI tools like Jenkins to provide both manual and automated test execution capabilities.

 As a mobile dev and test shop, we also had multiple mobile devices that we procured for debugging, testing and automation. Management of those devices was a big task. Added to it, overall inventory management, security, provisioning as well as sharing and using across multiple teams.

 We decided to buy more versions of same devices and decided to have decentralized device inventory. The overall management of the inventory just got more complicated.

 We decided to build a device inventory management system that is simple, elegant, integrated with our internal corporate domain, tracks usage of device, tracks who has got the device last, helps scheduling, etc, etc.

 The requirements went to add a device protection, remote wipeout as well as integration with internal build, deployment and provisioning to be able to install or delete apps or delete the entire device to protect loss of mobile device and prevent access to client mobile apps.

 Inspired by remote mobile cloud vendors, we started evaluation of approach to be able to interface with real device over web as well as simulate real device actions and display it. Like RDP or VnC Viewer or TeamViewer. We had to build a custom solution and not use any of the available open source tools. We had multiple challenges including data transfer of streaming video, / device display, enumerating actual user actions as keystrokes into the device, etc. 

 Interacting with multiple devices connected in a 4 or 8 port USB port was additional challenge. We wrote custom / patent pending components to provide the speed, accuracy as well as experience to take it “cloud device” equivalent.

 Given the nature of licensing model with Android, we were able to use Android’s core NDK, PDK and SDK to make the whole concept of remote device display work for us. We gave up any similar attempts to emulate iOS device display initially and then decided to partner with Apple to build such a feature.

 For now, we have this concept of mobile test lab that supports multiple devices, easily accommodate multi-tenancy (multi customers) without any overlap or data security issues in isolated environment for all mobile devices except simulation of iOS and Windows phones device display.

 What started as Device Inventory management is extended to be the equivalent of remote device cloud.

 Guess, what’s next, running automation tests inside the lab setup.

Now one can take Appium or similar mobile automation tool customized as a framework, setup hub/nodes with into our mobile test lab, connect the mobile devices using USB interface, interact with the device through USB ports, add all our performance optimization approaches, integrate with CI and run tests across iOS, Android and Windows Phone devices (yet display only Android device video until successfully working with Apple).

Credits to my team members: Ranjith Raghavan, Gopalakrishnan Ramanujam, Sudarshan Srinivasan and many of my current / past team members who are brains behind this invention.

 Quick summary, Do it yourself “Mobile Test Lab”

What you need: Mobile devices, passionate mobile engineers (not just developers), a vision (inspired by commercial mobile cloud test labs), few custom algorithms, an environment that supports innovation and a CTO who supports geeky initiatives.

To view or add a comment, sign in

More articles by Ram Sathia

Others also viewed

Explore content categories