In the mobile world, many additional challenges exist that are uncommon or uncritical in desktop or server software. Testers must be aware of these challenges and how they might impact the success of the application.
Typical challenges in the mobile world include:
Multiple platforms and device fragmentation: Multiple OS types and versions, screen sizes, and quality of the display.
Hardware differences in various devices: Various types of sensors and difficulty in simulating test conditions for constrained CPU and RAM resources.
The difference in user interface designs and user experience (UX) expectations from the platforms.
High feedback visibility resulting from bugs that have a high impact on users which may easily result in them publishing feedback on online marketplaces.
Marketplace publishing which requires additional approval cycles for publishing by market place owners such as Google Play or Apple App Store.
Unavailability of newly launched devices requiring the use of mobile emulators/simulators
The impact of these challenges includes:
Large numbers of combinations to be tested.
Large numbers of devices required for testing, which drives up the cost.
New features being released in every version of the underlying operating system.
Guidelines to be considered for various platforms.
Resource-starved CPUs as well as a limited amount of memory and storage space.
Varying bandwidth and jitter of various networks.
Changes in the available upload and download speeds based on data plans.
The need for backward compatibility to run the application on older versions of the platform.
The following two examples illustrate typical challenges and their potential impact:
Different devices have different types of sensors and tests need to account for these. Every new sensor added to the hardware may require additional backward compatibility testing.
Some of the network challenges can be dealt with appropriately, even under varying network conditions, by using appropriate caching and prefetching strategies. However, this comes at a cost; a large number of open connections can impact the server-side performance as most apps keep the user logged-in on the server.