In 1999 it was difficult to go anywhere without seeing one of the most successful mobile handsets of all time in the hands of children and grownups alike in the UK. That device was the Nokia 3210. It is considered one of the most significant handsets Nokia ever made with sales in excess of 160 million units.
The biggest challenges for users back then was attempting to beat a high score in the hugely popular and addictive game Snake. Decide which swappable fascia was the best and last but not least, find a reliable website to get instructions on how to program ringtones in the phones Ringtone Composer.
Fast forward to 2020 and the number of different devices and operating systems available to consumers make the Nokia 3210 challenges seem trivial. Phones have got smarter. The technology is better. As a result of this, mobile applications are bigger than ever.
The notion of mobile application software testing probably did not exist in 1999. In 2020 it is here to stay and provides a plethora of challenges to software testers. Some of which are similar to the challenges of traditional web application testing and some which are unique to mobile.
So what are they…………
Device and Operating System Fragmentation:
The biggest and perhaps the most important challenge to any mobile application software tester is. What devices and operating systems do you need to test new applications and features on?
Device fragmentation refers to the number of devices and operating systems that are in use in the Android and the iOS market at any given time.
Android, for example, has numerous device models running different versions of the Android operating system. We also have to factor in that within a single device model, there can be multiple different versions of the Android operating system being used. This multiplies the complexity of fragmentation and the devices and operating system versions that need to be tested.
An app that performs well on Android 10 may not see the same level of performance on Android 7.
Mobile Application Types:
Mobile applications could be built Native, Hybrid or Web-based. Testing for each type of mobile application varies.
Native mobile applications are developed for certain operating systems such as Android and iOS. This means that they are native to the platform they have been developed for. An Android application cannot be used on an iOS device and vice versa. Native applications are fast and responsive and provide a good user experience.
Hybrid mobile applications are built part native and part web applications. Like Native apps, Hybrid apps can be downloaded from app stores. Hybrid apps can take advantage of a devices native features but also HTML rendered inside an embedded browser in the application. This type of app typically has lower development costs than a purely Native application.
Web apps are applications designed to look and feel like a native mobile application. However, these are not implemented as a native mobile application. Web apps are installed and run using a browser such as Chrome or Safari on a mobile device.
The constant evolution of devices and operating systems will impact how users use and interact with touch screen devices. Device screen sizes vary. The functionality of the application may work but is it useable. Do taps, swipes and scrolling perform as expected. Is the design useable or can it be improved?
Networks and Connection Types:
Mobile apps can be used on various connection types, for example, 3g, 4g, 5g and Wi-fi and in different situations such as flight mode. Testers need to see how the application under test performs in these situations.
Users tend to have many apps running on their devices at the same time. With many background processes happening without the user realising. When testing a mobile app it is important to test that battery consumption is kept minimal. A user is not likely to use an application that drains their battery life.
No amount of testing can cater to the behaviour of the intended user. More often than not a user of the application under test will find unique and unintended ways of using your application. It is important to try and consider edge cases when testing your applications. No matter how unlikely you think these are likely to occur in the real world.