Scaling QA …
At Goibibo, we just love travel !! With such a huge popular platform for travel bookings comes huge volume of transactions. Our aim has always just been simple & clear, to make each and every one of those transactions the smoothEST & fastEST, providing users “THE BEST” experience while booking with us. Though as simple as it sounds to the outside world, there is a lot of effort involved in the background starting right from architecture to design to development to QA, ending at deployment. Ending huh ? Nope. We continuously monitor our production servers to fulfill our aim. And all this effort is rewarded only if the desired feature is pushed to production servers enabling our customers to reap more benefits with this release in their booking for their upcoming travel. With that, continuous delivery is the most important factor for us.
How do we get this done!

With each release comes a daunting requirement of verifying every single feature/change across all our platforms, which includes Mobile too. Right now with usage of smartphones exceeding the usage of desktops, the focus has already shifted to mobile first making it as huge factor in getting a release pushed to production. In order to do that, it becomes essential for a QA engineer to test and provide the proper feedback as quickly as possible, which immediately puts manual testing out of the question and pushes for the need for automated testing.
Now, what do we automate!

We have to start somewhere, right?
Ok let’s start automating the application on desktop Chrome browser (most popularly used). Is this enough? Certainly not!
A release working fine on one browser does not mean it works equally good on other browsers too. Wait ! we haven’t talked about our mobile application till now. How do you think this release has impacted our mobile applications ? Hmm, not sure ! So finally we have concluded that we need
- Automated Tests which tests on our Mobile Native Apps
- Automated Tests which tests on our Mobile Browsers
- Automated Tests which test our application on almost all popular web browsers
- Automated Tests to validate the back-end [API and Integration testing]
Clash of clans!
Definitely, we needed a technology which can be leveraged to support all our test needs, and here selenium webdriver was the obvious choice for web automation. And then we quickly needed to automate our mobile applications, where we had a battle against multiple tools like Calabash, MonkeyTalk, Appium etc where we opt Appium as the primary tool for our mobile app testing. Yes of-course, there were lots of challenges with Appium, and we had brainstormed to find work-around for the same.
While WEBDRIVER gave us a stable Web UI automation support, APPIUM opened the doors for us to perform cross-platform mobile testing [ mweb, native and hybrid mobile applications]. And that’s how we built a stable Automation Framework which is scaled to support testing of all of our flows across the supporting platforms.
And by using the power of Continuous Integration tool - Jenkins, we’ve hosted test suites which runs automatically and can be triggered on demand.

Fighting fire with fire!
Having so many tests across so many platforms brings in a overhead of monitoring them individually before giving a +1 to take the release live. And that’s where the need comes for a one click solution (Release Status Analyzer dashboard) where each member in the team can have a look and figure out the status of the release on each environment (test or production servers). Making use of this dashboard, the devOps can revert a release in case of any emergency.
Tech Stack Used:
- Jenkins
- Selenium WebDriver
- Appium
- TestNg
- Maven
- Shell
Fork it, hack it - RSA