Hope you have heard the famous advertising title – “There’s an app for that”. Quite literally, there are Mobile Apps available for everything. But before being available to end-users, Mobile Testing is an important phase of a mobile app’s development stage. Android and iOS Mobile App Testing is often quite different. The purpose of this post is exactly that: to focus on differences between iOS and Android that a tester must know.
Android and iOS Mobile App Testing
As the war between Google and Apple rages on, there is a battle in the testing world that mirrors the epic giants. Developers, DevOps and IT Managers are perplexed as how to create the perfect testing strategy to fit into their enterprise mobile strategy. A Tester must be able to test on both OSes and in order to do that it must, first of all, know only the differences which have an impact to his/her testing process.
Note: Though Mobile apps are available for android, iOS, Windows and Blackberry OS, since android and iOS dominate the market with more than 96% share, I have restricted this post to Android and iOS Mobile App Testing.
Google’s Android is based mainly on Linux OS which forms the kernel of Android and “above” that kernel, a whole framework exists. The kernel and the core libraries are written in C/C++ and the API, through which one can develop his/her applications, uses mainly Java. Android’s source code is released by Google under open source licenses, even if most Android devices ultimately ship with a combination of open source and proprietary software.
Android’s open nature has encouraged a large community of developers and enthusiasts to use the open-source code as a foundation for community-driven projects. Google Play is the main store to upload or download/install a new app. Each developer, given that he/she has followed some basic development rules, can upload his/her app in Google Play and the quality of the app is judged by its users.
Apple’s iOS is distributed exclusively for Apple hardware. It is the operating system that powers many of the company’s iDevices. It’s a closed-source operating system. The iOS kernel is XNU and is mainly written in C/C++ and Objective-C. The applications must be written and compiled specifically for iOS and the 64-bit ARM architecture or previous 32-bit one. Xcode is the primary development environment for the iOS. iOS applications, like many of the higher-level frameworks and applications that are part of iOS and OS X, are written in Objective-C or the newly introduced SWIFT language.
App Store is the main store where a developer can upload his/her app and where a user can find an app. The services at App Store allow users to browse and download applications that were developed with Apple’s iOS SDK. The apps can be downloaded directly to an iOS device, or into a personal computer via iTunes. Applications are subject to approval by Apple, as outlined in the SDK agreement, for basic reliability testing and other analysis.
One can directly install the Android App using .apk file format without the need to use Google Play. Sometimes, the app under testing is already in Google Play. In that case, following the simple steps described at Google support is all what is needed for the installation of the app.
The installation process of a new iOS app under testing is not so easy, compared to that of Android. For an app which is already in the App Store, things are easy: Just open App Store, search for the app and install it from there. For a testing app which is not in the App Store (a beta version, for example), a tester must usually follow special instructions in order to achieve installation and that process is sometimes error-prone.
There are so many different devices running on Android. Android phones are available in different layout and sizes which results in resolution to vary from device to device. This means android app needs to be optimized for each device. 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. iOS functionality can be tested and deployed all at once since all devices work similarly. The main areas of potential issues on iOS stem from OS and browser compatibility.
Hardware specifications also need to be taken into consideration. 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 Android and iOS Mobile App Testing these points’ needs to be remembered.
Since there is no strict application design and implementation guidelines for android, issues can happen more frequently. The fact that each manufacturer can customize the look and feel of the Android firmware produces a large segmentation in the area of GUI design. That means the Usability and the User Experience issues probably occur more often than compared to iOS.
Since Apple has strict design guidelines, all the developers follow the same design rules and, as a consequence, less User Experience issues are expected as compared to Android.
Android version updates have a naturally long deployment cycle, especially in comparison to Apple’s strategy of developing devices and updating OSs at the same time. As the Market adoption of each OS is often divided, there are multiple Android OS main versions that enterprises should be testing on.
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. The availability of multiple versions of the android and the resulting OS fragmentation causes testing apps on various versions of android to be challenging. The tester need to test the Android API’s with the older versions, ensuring that the applications run as desired.
Android apps can be made with nearly any type of application design, which adds additional complexity to the testing scope of the app for UI and UX. This means that there may be differentiation between how the software acts on different Android devices – something Apple users don’t experience.
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 as well.
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. 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.
Device Selection for Testing
Testing on the actual devices is required for both iOS and Android devices. With Android devices, however, manufacturers are permitted to create customized versions of the Android platforms. This means that each device is a little different, which makes on-device testing even more important to ensure functionality across all types of Androids.
iOS is designed to run only on proprietary Apple hardware. Android support different types of phones whereas Apple has a limited set of devices.
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 App Store. Hence comprehensive testing needs to be done in case of Apple iOS apps to ensure that the app meets the required guidelines.
Overall App Stability
The fact that the Kernel of the Android is open source has an impact to testers: a manufacturer can write his own core library in order to provide a customized service to his clients. That means the Functional and Security issues are easier to happen.
For an App to be accepted in the Apple’s App Store, a validation process is necessary. During that process a basic reliability testing and other analysis happens. For testers, that means less Functional and Security issues to be expected.
App Testing Tools
Because of the great expansion of Android, a tester has many tools in his/her hands in order to test an Android app. There are application testing frameworks, testing tools and testing commands already included in the Android SDK. A tester can use Eclipse with ADT plugin or the new Android Studio, which are complete IDEs, not only for developing but also for testing.
Like Android, iOS offers a range of testing tools, frameworks and commands. The main IDE that a developer of iOS apps uses is the XCode which has included in it debug and testing tools. It is worth mentioning that generating crash logs is a system functionality of iOS that works fine and it’s very easy to use. You can also access console log messages of the iOS device (console log contains information outputted by applications, error messages, warnings, debug info, and other notices) but in that case you need the iPhone Configuration Utility. This utility can be downloaded from Apple’s support pages.
Testers prepping for Android & iOS Mobile App Testing
Despite the latest studies that show Android leading with more than 80 percent market share globally and 60 percent in the US, the data shows that Apple is leading the way in the Enterprise – enterprises in North America and Europe actually spend close to 50 percent of their time testing on iOS devices. Consumers may be leading the pack with their Android devices outside of work but enterprises often take longer to adapt to market trends.
The war will rage on and both Apple and Google will continue to produce new devices, new versions of OS and new technology such as wearable devices. For a tester ‘Apple’s iOS vs. Google’s Android’ conversation is out of scope. Certainly there are many differences between Android and iOS operating systems but a tester must be prepared for Android and iOS Mobile App Testing without problems. Becoming “future ready” requires testing on trending devices and being aware of the constant battle between the two giants.