Mobile.de is the biggest marketplace for buying and selling vehicles in Germany. With nearly 14 million unique users, mobile.de proposes listings from both private sellers and 40,000 registered vehicle dealers. The company, which was established in 1996, employs 210 people in Berlin and is a subsidiary of eBay.

With 4+ stars on the Play Store, Mobile.de’s Android app is continuously improved with the help of Genymotion and its Gradle Plugin.

Between two automated tests, we have been lucky enough to interview Harald Kahlfeld – QA Engineer and Thomas Rebouillon – Senior Android Developer.

Which tools do you use in your testing environment?

 
“We have a dedicated Jenkins host machine based on Fedora. On this machine all our essential tools are installed including Java 8, the Android SDK and Genymotion with VirtualBox. We also use ADB, JaCoCo for code coverage, Gradle, and Espresso for UI testing.”

Pretty complete! At which stage does Genymotion intervene?

 
“We use Genymotion Android Emulator via Android Studio to test each new feature under development. Genymotion helps us checking edge cases like stable error handling. We perform unit tests, integrations tests, and UI tests. Later, we also write related regression tests if required.

In addition, we have established an emulator matrix on our Jenkins machine to run all our Espresso tests on Genymotion for our supported API versions as nightly build jobs. Genymotion Gradle Plugin comes in handy as it allows us to start and stop Genymotion virtual devices within all these jobs.”

Great then. Which features do you use the most?

 
“In general we use Genymotion Android Emulator to emulate devices that we don’t physically possess. It allows us to emulate many sensors and features – especially the Network and GPS widgets – during both development and debugging sessions. From time to time we also use the screenshot and video widgets to create images and footages for presentations.

Regarding continuous integration, we use GMTool in conjunction with the Gradle Plugin either locally or on Jenkins. For our Jenkins builds, we launch manually created devices thanks to a dynamic template mechanism injected with Gradle parameters – we occasionally need specific settings for testing such as device language, locales, time zones and animation timings.

We use almost all of the available commands, especially to take screenshots on the running virtual devices.”

In the end, how did Genymotion improve your app testing process?

 
Genymotion Android Emulator helped us stabilize our tests! When we implemented our continuous integration build chain, Google’s default Android emulator didn’t scale enough to meet our requirements. With Genymotion we could develop our app faster without connecting physical devices.

Not to mention that since Genymotion is integrated with so many tools, our end to end development and testing process is entirely streamlined. For instance, thanks to Genymotion Gradle plugin, we no longer need the custom build script we used beforehand.”

Any feature you’d like to see implemented within Genymotion?

 
“For our requirements, it would be useful to be able to run tests on specific devices instead of on every device defined in the template, preferably without using additional product flavors. Perhaps as a Gradle parameter containing the devices names?”*

Thanks again to Harald and Thomas for sharing their experience! Check out Mobile.de’s Android app on the Play Store. More about Genymotion Gradle plugin, Genymotion Widgets and all our premium features in our features page.

SEE IT IN ACTION

*Editor note: Actually this is already possible. To do so, you need to set the ANDROID_SERIAL environment variable with the adb serial of the devices you want the tests to be run on. The serials must be coma-separated. A dedicated option will be added shortly to our Gradle plugin to make it smooth and easy to configure (it’s in the roadmap ?).