Latest posts by Hussain Fakhruddin (see all)
The total number of app downloads has been projected to touch 275 billion by the end of 2017. Competition among app developers to grab the attention of a significant chunk of smartphone-users with their applications is fierce – and there is hardly any room for errors. A mobile app with bugs is destined to fail (if it is at all approved at the App Store, that is), and researches show that 6 out of every 10 people give an average of three minutes to see whether an app loads correctly or not. In such a scenario, the importance of thorough mobile app testing is paramount, and in today’s discussion we shall highlight some key methods of testing applications:
- Mobile testing and app testing – Unlike what many newbies think, there’s a significant difference between ‘mobile testing’ and ‘mobile app testing’. The former refers to testing the features of the actual devices (e.g., screen resolution, wi-fi, Bluetooth connectivity, battery performance, etc.) The latter, on the other hand, is the checking of custom installable third-party applications created by developers. That is what we are dealing with over here.
- Functional and non-functional testing – Before getting down to what aspects of an app should be tested, developers need to understand the difference between these two well. Functional testing is extremely essential for native applications – and it covers a whole array of things, right from compatibility with different devices (thanks to the extreme fragmentation of the Android platform, it’s a big challenge here) to the browser compatibility of web apps. The speed, security, mobile data consumption, and related stuff come under the purview of non-functional testing. For risk-based testing of mobile apps, depending only on simulators is not a good option – and that’s precisely why most mobile app companies prefer checking out their software on actual devices. With the growth of wearable technology and apps for these gadgets (e.g, apps for Apple Watch), a whole new layer of testing challenge is getting added.
- Backward compatibility of apps – Not everyone uses iPhone 6 Plus or Android 6.0 Marshmallow devices. Mobile app development experts have to take a call on the degree of backward compatibility (i.e., support for older versions of the mobile platforms) that they should add to their applications. Most iPhone applications reach back to iOS 7 in terms of compatibility, while some are even supported on older, iOS 4 handsets (there is no definite pattern for this on Android, although the oldest supported version for most apps is Android 2.2 Froyo). Creating an app only for iOS 9 or Android 6.0 is not advisable – since that inevitably limits its overall reach.
- Installation and login – Let’s put it this way – why would anyone bother wasting time on an app that cannot be downloaded at one go from the app store? After the download, users should also be able to easily sign in/sign up on the applications. Testers have to install/uninstall and create accounts of applications on devices (emulated devices/simulators won’t do the trick here), and make sure that there are no glitches on this count.
- Checking app performance under different network speeds – There is simply no way to correctly guesstimate what the network connection speed of the users’ devices would be. There will be people using apps on Wifi-activated devices, some will be using 3G mobile data – while there will be a fair number of 2G (and there is the EDGE/GPRS/CDMA fragmentation here) users as well. The performance of an app should not be affected by the network speed of the devices it is installed in. What’s more, most apps and games should be usable in offline mode as well. It’s all about maintaining high app-engagement levels.
- Interruptions – Developers should never make the mistake of thinking that using their apps would always be an interruption-free experience for users. While working on an application (or playing a game, for that matter), a call can come in, a text message can be received and other notifications can be generated on the device. It is important to note how the app that is being tested behaves when such ‘INTERRUPTIONS’ happen. These interruptions can also happen when an app is being downloaded or upgraded. Ideally, the app should work parallely/get automatically paused during interruptions.
- Cloud Testing and Beta Testing – Both are vital for testing iOS/Android applications. App testers can use a web-based testing environment to deploy apps, and identify possible bugs and issues in them. This is the essence of cloud testing, and it is a great technique for saving time and shortening the overall development cycle (with every developer focusing on agile development, this matters BIG). Availability of real-time test results, support for complicated apps and high-end scalability feature among the other advantages of cloud testing. Beta testing, on the other hand, is all about an actual core group of testers and real devices. This method creates a real-world testing environment for new apps, which cannot be obtained on simulators/virtual devices.
- The privacy factor – Any Android or iPhone app development expert who knows his/her job would be aware of the growing importance of mobile app security. With platforms like Apple Pay and Android Pay growing in adoption rates, users are understandably sceptical of using any app for financial transactions that do not provide complete security and data confidentiality/protection assurance. Security is also a big factor for all the new-fangled social networking apps mobile apps for kids that are released every quarter. For apps that support m-payments, speed is also a critical issue.
- Effect on device battery – Neither Apple nor Google has yet been able to really crack the battery-performance puzzle of smartphones (although the latest versions of the mobile platforms do offer just that extra bit of battery juice). On top of that, if an app causes excessive battery drainage, its developers can pretty much kiss the chances of its being successful goodbye. It is the responsibility of mobile app testers to make sure that installing and using an app does not put any extra pressure on the battery of a device. An application needs to be tested in high, low and critical battery conditions, as well as when the handset is being charged (certain apps tend to eat up more battery during charging). Since most average users do not bother actually closing apps after usage, testers also need to check how device battery is affected when apps remain running in the background.
- App interface testing – The success (or otherwise) of an app hinges crucially on how easy (or otherwise) it is to use. There is a reason why app development companies have separate teams of graphic designers and animators and UI/UX designers to manage the visual appearance as well as the in-app navigation of mobile applications. Prior to release, it has to be tested whether all the menus, tabs, bookmarking options and other settings are working properly. An app may have powerful features – but unless users find it easy to use, popularity levels will remain low.
- Memory consumption and usage – We have already done a piece on how smartphone users can free up memory space on their handsets. Memory consumption/usage is a key aspect of mobile app testing as well. Apart from the size of an app (big apps should always be moved to SD cards), the general memory usage (RAM) patterns of applications have to be monitored closely. In most instances, there will be a difference in the memory usage when there are only a few apps installed, and when the phone memory is almost full. Just like battery performance testing, memory consumption when an app is active and when it is in the background also have to be tested.
- Form factor testing – Platform and device fragmentation aside, form factor is yet another important (and curiously, often-neglected) aspect of testing mobile applications. Many new app developers make the folly of releasing the same version of an app for smartphones and tablets – and unsurprisingly, the results are disastrous. When the same app is targeting different devices in the same platform (iOS or Android), developers have to create separate form factors of the app, to ensure error-free viewability on different devices. Once again, the growing popularity of wearables have added an extra dimension to form factor testing for apps. The more smart devices vary, the greater is the challenge!
Screen rotation (for apps that support it; mostly gaming apps) would also figure among the top points to consider during app testing. Testers generally prefer creating a ‘Debug Build’ (a build with logs) to test apps and document reports. iOS app developers have to follow the Apple guidelines carefully, while for Android apps, tools like TaskKiller, DDMS and Monkey Tool can be utilized. In case of a battery exhaustion or an accidental device shutdown, there should be a proper, full backup/restore option. It is impossible to overstate the importance of mobile app testing in today’s scenario – unless the testers know what they need to do and do their job well, all the hard work of coders and designers can go down the drain.