The number of mobile phone users has grown exponentially over the last 5 years. This has caused an explosive growth for mobile applications as well. Smartphones have become an inherent part of our life and so are mobile applications.
You might be familiar with the famous advertising tagline “there’s an app for that”
Quite literally, there are applications available for everything. This includes shopping apps, business apps, sports and fitness apps, gaming apps etc. Apps have become need of the hour. This can be validated from the fact that Apple paid out more than 10 Billion Dollars to App Developers in 2014.
Mobile Testing is an import aspect of a mobile app’s development stage. It differs significantly from traditional software testing. Mobile applications need to be tested on a variety of software platforms and hardware platforms and under different network connectivity conditions. It is important that testing is done thoroughly so that there are no bugs in the app.
Mobile apps are available for android, iOS, Windows and Blackberry OS. Since android and iOS dominate the market with more than 96% share, in this article we will see what are the challenges faced in iOS and Android mobile application testing. But before we go into that discussion we will see how android and iOS differ.
Android vs. iOS
Open Source Software
Android is open source software developed by Google while iOS is proprietary software owned by Apple. Being open source Android can be modified by developers. This implies that developers can have their own customized version of android. Every aspect of the operating system can be tweaked by the developers to suit their requirement. Apple iOS to the contrary can be modified and released only by Apple.
Android support different types of phones whereas Apple has a limited set of devices. iOS is designed to run only on proprietary Apple hardware.
App Store Ecosystem
Google ‘Play’ store is the official place to search and download apps, but Android apps can also be downloaded from websites and memory cards. In contrast, apple apps can be downloaded from Apple’s app store only thus providing a restricted access.
Testing challenges with Android OS
These three reasons form the basis of the challenges that testers can face during mobile application testing. The challenges can be grouped into Device Configuration, OS versions and Security.
The layout of each device could be different. Android phones are available in different layout and sizes. This poses a challenge for the testers to test the application on every possible device. On other hand, apple has limited device portfolio which can be tested easily.
Different layout and sizes, results in resolution to vary from device to device. Chances are there that android app may not function as intended on all the devices. This means android app needs to be optimized for each device. This increases the number of scenarios to be tested thus increasing the testing efforts.
- Hardware Specifications
Hardware specifications also need to be taken into consideration during. The processor speed and memory plays a significant role for certain apps to function smoothly. An application designed for high end phones might not work with low end phones. Hence while testing these points’ needs to be remembered.
With so many device variants available in market it should be ensured that code is written in such a way that the resource utilization is balanced
- Multiple Versions
Google does not encourage OEMs to use the latest version. This means that newly released phones might be using an older version of android. Unlike Apple devices which always come with the latest iOS, android devices could be running on older version such as ice-cream sandwich. The availability of multiple versions of the android and the resulting OS fragmentation causes testing apps on various versions of android to be challenging.
- Backward compatibility
In Android mobile application testing, the tester need to test the Android API’s with the older versions, ensuring that the applications run as desired.
- Specific UI
Since android is open source, Original Equipment Manufacturer (OEMs) are free to build their own UI. Hence UI such as TouchWiz by Samsung, Sense by HTC, Xperia by Sony, and ZenUI by Asus varies in look and feel. So application needs to be tested for specific UI.
It is essential that usability experience remains same over different devices and the versions. Thus multiple use cases needs to be developed as per the OS version.
- Information Security
With multiple devices and Operating Systems, it becomes a tedious task to ensure that application is not vulnerable to malicious attacks. A security issue present in the previous version of the android has to be addressed through security update in the app to avoid any information stealing.
2. Code Security Testing
During Application development, developers can install the necessary APK files on device using Google Play store. There are tools available in the market that allows users to have unauthorized access to source code of the android APK files. Therefore additional security testing needs to be done for android OS to ensure that the application code is secured.
Also android is a target for hackers due to its large user base. Hence comprehensive testing is required for an app.
- Strict Publishing Guidelines
Google does not check the app before they are made available in the Play Store. Google only scans the Play store for malicious content. Hence it is easy for malicious apps to remain in the store till somebody reports about it. So tester needs to ensure that there are no security loopholes in the application.
However, Apple has strict review guidelines for submission of the app in the Apple iStore. Hence comprehensive testing needs to be done in case of Apple iOS apps to ensure that the app meets the required guidelines.
Due to all these challenges, a comprehensive mobile testing strategy needs to be devised that includes selection of target devices, writing the use cases and testing the same with combination of manual and automated testing toolsto cover both functional and non-functional testing.