There are literally thousands of different Android devices on the market today. Obtaining a devices matching every possible permutation of processor, RAM, screen size, screen resolution and Android version for all devices in the market today is a herculean (if not impossible) task. There are bugs that can get only be triggered on a given hardware or software configuration. For indie and small development teams, the ability to test a newly developed application on a wide variety of devices before app release as cheaply as possible is a major headache. To help you prioritize which device configurations to test on, check out this data set. It presents a snapshot of all devices that visited the Google Play Store over the previous seven day period. Read on for some of the methods available to economically test your apps (free and/or very cheap), along with a few pricier alternatives.
1. Android Virtual Device (AVD) Manager
The AVD manager is available to install as an Android Development Tools (ADT) plugin on Eclipse, or with a fresh install of Android Studio. While developing with Android Studio, you can view a graphical representation of your layout design across a wide range of devices. You can be certain that the final layout on a real device will be almost identical to that shown via the graphical view.
Also, using the AVD Manager, you can download and create virtual devices that mimic a wide range of possible device types and configurations, including RAM, screen size, screen resolution, Android version and more. You can then run your app on these emulated devices. These devices completely emulate the Android runtime, however, they will likely run slower than a physical android device. Having said that, the Android Emulator has improved in leaps and bounds, and now supports hardware acceleration on supported devices. With hardware acceleration, emulated devices run much faster, since they are using the actual computer hardware, rather than the previous all software method. For more information on configuring and managing your virtual devices with AVD Manager, visit the Android Developer site.
Genymotion bills itself as a fast and easy-to-use Android emulator, that is based on AOSP and comes with 20 pre-configured devices. Genymotion runs on Linux, OS X and Windows systems. Some features include:
- Resizable windows
- Copy paste between virtual device and host OS
- App installation using drag and drop
- Integration with both Android Studio and Eclipse
- 20 pre-configured devices
- Ability to create custom device configurations
- Supports Android versions: 2.3, 4.1, 4.2, 4.3, 4.4, 5.0, 5.1
- Provides sensor emulation: GPS, microphone, camera, battery, multi-touch, accelerometer
- Network quality and performance emulation
While there is a free version of Genymotion for private/personal use, most of the features listed above require a purchased/licensed version. At the time of writing, the cost is €24.99 per month per user, with a minimum duration of 12 months. Not cheap by any means. However, there is a special discount for indie developers (defined as private individuals or small companies with no more than two employees), with a cost of €8.25 monthly, also with a minimum duration of 12 months.
3. Crowd sourced testing
Rather than purchasing a large number of different devices, crowd sourced testing enables developers leverage potential users own devices for testing. This also has the advantage of exposing your app to users before being generally available to the public, as well as getting users to perform QA. Free crowd sourced testing options include the Google Play Store and Lean Testing.
Using the Google Play store, you can release an app as a beta or alpha test release, which means that only members of your test community can see and download your app. With this manner of release, you can leverage your existing social network’s available devices as tests for your app. Members of your test community can download and test your app on all of their devices. This is advantageous in many ways, not least of which is that you are testing your app from the same dashboard that will be used for final deployment. Also, you do not need to include any new APIs. With alpha and beta test versions, you can include every feature intended for the final app, and be reasonably confident the performance will be identical to the production version. The major disadvantage of this is that members of your test group must also be members of your Google+ test community. Not really a disadvantage since users already have a Google+ account if they use the Play Store.
Lean Testing is a community, where you can create an account for your organization. Within this account, you can create multiple projects, invite other users to either the organization as a whole, or to specific projects, and also assign specific roles and permissions to the invited users. Your users can then report, update and delete bugs encountered while using your app. Lean Testing can be used for other types of testing, including iOS, website, etc. For now, Lean Testing is free to use, but according to the FAQ, it won’t be free forever. You might want to check it out before it becomes a paid service.
4. Buy used devices
Somehow, this is an often overlooked method of getting access to a wide range of devices. You, and your team, should always be on the lookout for devices being sold cheaply. Two year old flagships can be bought for less than a third of the initial retail price, and mid-range and low-end devices can be purchased at rock bottom prices. Considering that the object is to test on as wide a range of devices as possible, a steady purchase of used devices would ensure that in a few years, your device list would include multiple OS versions, screen sizes and different levels of software update. In other words, it would closely resemble real world user devices.
5. Paid Options
Of course, the term “economically viable” means different things to different people. For some teams, completely free options are the only economically viable choice, while others can have thousands of dollars available for testing equipment. Compare and contrast the paid options below. You might find one that matches your expected feature list and budget constraints:
Android device configurations is like the Wild West of the mobile world. From screen sizes to form factors to OS versions. Fragmentation has been a major issue with Android right from the beginning, but it is also one of its major strengths and selling points. For app developers, however, this presents quite a challenge.
Emulation testing can be used to catch many possible layout issues, however, there must be some hands-on, physical device testing with as many devices and device types as possible.
How do you economically test your app? Did we leave your favorite free/cheap testing method out? Help your fellow developers out, spread the word and share in the comments below.