Mobile applications have been in the market for over a decade. They started small but now have become an integral part of our daily lives. With about 2.57 and 1.84 million apps on the Google Play Store and Apple App Store respectively (Source – Statista), it is important to know how to make your app marketable and the best it can be. This is done through testing.
With more apps being published daily, the app market has become tougher than ever. Hence, users are not willing to spend time and money on an application that has issues and continues to crash. That is why testing is extremely important!
Testing is fun and challenging at the same time. Mobile applications can be tested using either manual approaches or automated tools. While both of these methods have their own pros and cons, it is up to you to choose which is the best approach to testing your application.
- Manual Testing can be done when you have a solid understanding of the application and time on your hands. For applications with frequent changes, it is highly recommended to proceed with manual testing.
For manual testing, your team can collaborate on test cases with the help of TestRail, Zephyr, TestCollab.
- Automation helps you to reduce repetitive tasks and enables you to focus on other things. However, an automation script will only execute what it is designed for. App understanding and specific app knowledge cannot influence automated scripts. There are various tools in the market like Appium, Selendroid, Robotium, MonkeyTalk to help you with such testing.
Now let’s try to understand, what is a QA’s role?
QAs (Quality Assurance) are expected to look into both functional and non-functional aspects of the application.
- Functional testing includes testing of all the application’s functionalities and ensures that they work as expected. This includes smoke testing, sanity testing, regression testing, ad-hoc testing and exploratory testing.
- Non-functional testing is performed to check how accessible the application with the non-functional aspects, such as the maximum users using the app (performance testing), how secure the application is (security testing) and how easy it is to use the app (usability testing).
Top 10 Tips
There are various things that you should check before releasing an application to the public while it is still in development. Below is a checklist of 10 points:
- Diversity of mobile devices – Mobile devices these days come with a variety of form factors. Ensure that testing is performed on low and high end devices. Since getting real devices can be expensive, users can also choose an emulator or cloud testing service, but that should be avoided as they might not help much.
2. Navigation buttons – Navigating through the application can bring out new issues. Ensure that the navigation buttons work as expected and moving from one page to another is seamless.
3. Interrupts – Check the behaviour of the application when an interrupt is triggered and if the application returns to its previous state. Interrupts in mobile devices can be from various sources, such as: an incoming call or a full screen video call, notifications from other apps, alarms, low battery, device shut down, network lost and then restored, etc.
4. Network connection – Users have varying levels of network connections. For apps that require a network connection, ensure that your application works smoothly on all different kinds of networks, like 2g, 3g, LTE, Wi-Fi.
5. SDK Integrations – It is common that your app needs 3rd party integrations for services like crash reporting, ad monetisation, analytics reporting, payments, user verification. This makes the application complex and requires thorough testing throughout these integrations.
6. App in background – Ensure that the application resumes to its previous state when it’s put in the background, either for some time or for long hours. Also, it is better to check the behaviour when the device memory is almost full.
7. Localisation Testing or “L10N” testing – For applications that are targeting audiences from different geographic locations and cultures, it is best to suit their needs by providing the app in their own local languages, date formats, currencies and units of measurements. Localisation testing ensures that the application adheres to the target audience and is in compliance with the particular locale.
8. Security testing – User data and privacy is a big thing to worry about these days. An app developer needs to ensure that user data cannot be leaked and is safe at all times. Ensure that the user data is encrypted always. Also ensure that the user is authenticated every time in a proper way, without any loopholes present in the system.
9. Compliance with latest OS updates – With frequent OS updates getting into the market, developers need to be wary of the changes that are being brought to the OS. Ensure that the app meets the standards set by the OEM’s or the OS providers. Also, since each OEM has their own UI and customisations (Only for Android), ensure that applications are tested on the most widely available OEM’s in the market.
10. Ad Hoc approach – This should be the last approach after you are done with testing of the application. This approach should be done in order to break the application in any way humanly possible! You can send multiple requests to the server, overload the server and create memory overload on the device to check the application’s behaviour and response. Ad hoc testing requires knowledge and experience of the application and out of the box thinking capability.
While it is important to have an in-depth knowledge of the application you are testing, it is even more important to test the application from different perspectives. A QA needs to be open minded to all positive and negative scenarios that might arise while using the application and ensure that a quality product is being shipped to the users.