A simple definition of mobile application testing would go like this “Mobile application testing is a process by which an application software developed for handheld mobile devices is tested for its functionality, usability, and consistency. Mobile application testing can be automated or manual type of testing.”
Note − For better understanding, we shall assume that we are testing a mobile application for online flight ticket booking system.
Functional Testing
Functional testing is the most basic test for any application to ensure that it is working as per the defined requirements. Similar to other user-interface based applications, mobile applications require a number of human interactions in user scenarios.
Example test scenarios −
- Verify that flight availability is displayed for a chosen source destination on a selected date only.
- Verify that past dates are not included in the search results.
Compatibility Testing
Compatibility testing has got the highest stack when it comes to mobile application testing. The purpose of a mobile app compatibility test, in general, is to ensure an app’s key functions behave as expected on a specific device. The compatibility itself should only take a few minutes, and can be planned well in advance.
It is not going to be an easy task, deciding on which mobile devices compatibility tests should be performed (as testing with all available devices is merely impossible). So prepare a test matrix with every possible combination and get it prioritized by the client.
Example test scenarios −
- Verify that flight search is performed successfully with Android device.
- Verify that flight search is performed successfully for Apple iPad.
Localization Testing
Nowadays, most of the apps are designed for global use and it is very important to care about regional trails like languages, time zones, etc. It’s important to validate the app’s functionality when someone changes the time zone. It has to be taken into consideration that sometimes western designs may not work with the audience from eastern countries or vice-versa.
Example test scenarios −
- Verify that there is no UI or data truncation issue when we use the mobile app with different languages (or say, non-English language).
- Verify that time zone changes are handled gracefully for your mobile application.
Laboratory Testing
Laboratory testing, usually carried out by network carriers, is done by simulating the complete wireless network. This test is performed to find out any glitches when a mobile application uses voice and/or data connection to perform some functions.
Example test scenarios −
- Verify that there is no glitch while a customer is having voice chat with the support staff.
Performance Testing
Mobile performance test covers client application performance, server performance, and network performance. It is important to make sure that the performance test scenarios cover all those areas. With the help of performance testing tools, it is not difficult to identify the existing networks, servers, and server-side application bottlenecks, given the predefined loads and transaction mix.
Example test scenarios −
- Verify that flight available check takes only a reasonable amount of time.
- Verify that while flight availability is being checked, the mobile operates normally and does not hang.
Stress Testing
Stress testing is a must to find exceptions, hangs, and deadlocks that may go unnoticed during functional and user interface testing. Here is a list of some of the criteria for stress testing −
- Load your application with as much data as possible to try to reach its breaking point.
- Perform the same operations over and over again.
- Perform the repeated operations at varying speeds – very quickly or very slowly.
- Leave your application running for a long period of time, both interacting with the device and just letting it sit idle, or performing some automatic task that takes a long time, for example, a slideshow.
- Randomly send screen taps and keystrokes to your application.
- Have multiple applications running on your device so that you can switch between your application and other device applications often.
Example test scenarios −
- Check 1000 users are accessing the mobile app to search for domestic flights.
- Check 1000 users are accessing the mobile app to search for international flights.
Security Testing
Vulnerabilities to hacking, authentication, and authorization policies, data security, session management and other security standards should be verified as a part of mobile app security testing. Applications should encrypt user name and passwords when authenticating the user over a network.
One way to test security related scenarios is to route your mobile’s data through a proxy server like OWASP Zed Attack Proxy and look for vulnerabilities.
Example test scenarios −
- Verify that the application does not get operated with same user credentials on two different mobile devices.
- Verify that a session automatically gets expired if it remains inactive for more than 15 minutes.
Memory Leakage Testing
Mobile devices have very limited memory as compared to other computers, and mobile operating systems have a default behavior to terminate applications that are using excessive memory and causing a poor user experience.
Memory testing is exceptionally important for mobile applications to ensure that each application maintains optimized memory usage throughout the user journey. It is recommended that we conduct memory testing on the actual target device, since the system architecture is different from an emulator to an actual device.
Example test scenarios −
- Do flight availability checks ten times and note down increasing memory usage for each check.
- Keep the application running for ten minutes and observe if memory usage remains stable.
Power Consumption Testing
There are several types of batteries used in different mobile devices (i.e. nickel cadmium/ lithium ion/ Nickel metal hybrid). While we focus on power consumption testing, we are required to measure the state of the battery at each activity level. It will give us a better understanding of power consumption by an individual application.
Power Consumption test can be done manually; also there are some free tools available in the market such as Trepn Profiler, Power Tutor, and Nokia Energy Profiler. These are applications which can display the real-time power consumption on a smartphone or tablet.
Example test scenarios −
- Use the mobile app to search for flight availability, and check the power consumption remains minimal.
- Keep the mobile app in ideal condition; verify that there is no power consumption when there is no activity happening for the app.
Interrupt Testing
An application, while functioning, may face several interruptions like incoming calls or network coverage outage and recovery. This can again be distinguished for −
- Incoming and Outgoing SMS and MMS
- Incoming and Outgoing calls
- Incoming Notifications
- Battery Removal
- Cable Insertion and Removal for data transfer
Example test scenarios −
- Verify that flight availability check gets paused and resumed back after receiving an incoming call.
- Verify that the user can reject a call while using the App and again resume the same App thereafter.
Usability Testing
Usability testing evaluates the application based on the following three criteria for the target audience −
- Efficiency − The accuracy and completeness with which specified users can achieve specified goals in a particular environment.
- Effectiveness − The resources expended in relation to the accuracy and completeness of goals achieved.
- Satisfaction − The comfort and acceptability of the work system to its users and other people affected by its use.
It is very important to get usability testing in place from the early stage of the application design, and it should not be done only when the application is completed. Usability testing requires heavy involvement of users, and the output might affect the application design, which is very difficult to change in the later stages of the project.
Example test scenarios −
- Flight availability check should be on the home page.
- Sponsored advertisement should not be displayed in the middle of the content.
Installation Testing
Installation testing verifies that the installation process goes smoothly without the user having to face any difficulty.
Example test scenarios −
- Verify that the installation process is smooth and does not take long.
- Verify that the installation is successful through enterprise app store.
Uninstallation Testing
The basics of uninstallation testing can be summarized in one line as “Uninstallation should sweep out data related to the App in just one go”.
Example test scenarios −
- Verify that all the application related files are removed successfully after uninstallation.
- If it is an App which stores media files (like Whatsapp or Facebook), retain the files even after the uninstallation of the App.
Updates Testing
We need to be very much cautious about mobile app updates. People frequently complain about applications not working satisfactorily after an update. So it is very important that under the update testing, we qualify that the App will work as it was working previously. In a nutshell, it should not break anything. Mobile application updates can take place in two ways − Automatic update and Manual update.
Example test scenarios −
- Verify that the application works successfully after automatic update.
- Verify that the update progress is displayed properly.
Certification Testing
To get a certificate of compliance, each mobile device needs to be tested against the guidelines set by different mobile platforms.
Example test scenarios −
- Verify that the application adheres to the policy of iOS phones when installed on iPhone.
- Verify that the application adheres to the policy of Android phones when installed on Android.