Monday, July 25, 2016

Devices... Devices everywhere!

One of the biggest challenges when developing mobile applications is to ensure that your creation will run on a wide variety of devices (ideally, all devices out there). While Apple produces fewer models than you have fingers on one hand, the Android ecosystem is a different world. If you look at a fragmentation report from OpenSignal (2015), you can see that it's really scattered:

Android fragmentation

Okay, we just state that "We support Android 4.4+ because what we're interested is the underlying Operating System". True. In some way. But Android "x" can behave differently when running on a Samsung versus a Xiaomi. So, although you state that you "support Android 4.4+", you'll want to:

   Test your app in a number of devices that provide a good sample of your target audience (not just one device with Android 4.4, another with Android 5.0 and so on);
   Assure that if a client calls and says that the app doesn't work on a Xiaomi "some crazy model" with Android "whatever version", you can troubleshoot the issue;

Back to where we started, does this mean you must have all the possible combinations of devices and operating systems? Surely not. Welcome to Amazon Device Farm! Amazon Device Farm allows you to "Test your app in parallel against a large collection of physical devices." It will also provide you "remote access to a real device in real time". It's basically a hardware abstraction layer but now for Mobile phones. It's great because this will keep you away from all the constant hardware changes and having to manage hundreds of devices.

How does it work?
To test your application, you must first program the tests you want using one of the supported frameworks. Then just upload the tests and the application you want to test and you'll have everything tested in real devices in minutes. And if you're thinking about "automation", they do have an API for it. Just check the documentation because it is really good! There's also a blog where they have step by step instructions.

Amazon WebServices Testing

(click to enlarge)

Now, for remote access, it's even simpler: just choose the device you want with the capabilities you'll need and you're ready to go!

Amazon WebServices Testing

(click to enlarge)

Is it all perfect? Well, no. First, it's a paid service, of course. But this is not the issue. The real issue is that it seems expensive compared to other services offered by Amazon. The second downside of it is that although there's a fairly amount of supported testing frameworks, it's still limiting. And the final downside is that if your application uses IoT (e.g.: beacons) it won't be a solution for you. Maybe in the future when we have tele transport or something like that and you could send your beacons to them.

Bottom line: even considering these small issues, it's AMAZING! I love it!
If you're in a Mobile Development Business, give it a try. It's worth it!

Take a look at the list of available devices here. Devices... Devices everywhere!