As a QA engineer and then as a QA Technical Lead, I’ve been facing a lot of routine and repeatable tasks when testing native mobile apps. I also encountered a great number of unapparent things that are worth paying attention to. Market guidelines, a variety of different devices and OS versions, and even the custom settings on a user’s phone – all these can affect not only the UX but also the overall performance of your mobile app. Considering the real-life project issues, I’d like to share my own experience and give you some hints on how to deal with them.
P.S. This article is also based on the suggestions of the ISTQB syllabus, so don’t hesitate to spend a few minutes on it.
1. Pay attention to accessibility
Mobile accessibility is about making sure that everyone can easily use apps and websites. European Parliament has stated that approximately 80 million people in the European Union currently live with a disability. To satisfy their needs, each operating system has different assistive features for the following disability groups: Vision, Hearing, Cognitive, and Learning, as well as Physical and Motor skills disabilities. Our mission as QA specialists is to make sure that every user will be comfortable with the app and create a fair environment to encourage people to use it.
Sounds easy? Well, I would not say so. On one of my previous projects, we were creating a custom UI library with complicated screens and components, and we ended up in a situation where they didn’t fit a default screen resolution with an enlarged text setting turned on. The text overlapped the component borders, some icons were pushed out of the screen, and modal dialogs didn’t allow access to any application button – that’s not the scenario you want to see in Production.
Fortunately, there are various tools that can help you to check the app’s accessibility properly. Here are some of them:
- Built-in iOS and Android Accessibility settings can be used for text enlargement, magnification, color contrast, and zoom conformance. They will help you to see whether your application readily responds to these OS preferences and, in case it does, how the interface changes.
- The Google Accessibility Scanner is perfect for checking missing item labels, duplicate item descriptions, touch target size, unsupported item types, text and image contrast, and more.
- Siri, Switch Control, and the new Voice Control feature in iOS, as well as Google Assistant, Switch Access, and Voice Access on Android, can be utilized to test accessibility for users who prefer alternate input methods or speech commands.
If you follow the best practices and overcome all the challenges on the way to increase your Digital Accessibility, you will find out that the pros of this concept are significant.
2. Think about fragmentation
Mobile application testing can be extremely confusing with the variety of available devices, each with different screen sizes, hardware specifications, and resolutions. It is almost impossible to test an app across all device configurations, resulting in potential compatibility issues. So, you can not avoid them completely, but you can minimize the probability with Fragmentation testing.
NOTE: For those who don’t know (including myself several years ago) – iPhones and iPads, for example, come with different operating systems, making the whole thing even trickier. The same Videoplayer component can have an autoplay feature that works perfectly on iPads but not at all on iPhones.
Fragmentation itself can be divided into three parts:
- Device Fragmentation;
- Version Fragmentation;
- OS Fragmentation.
To make sure that your coverage will definitely work in the scope of your project and will be as user-friendly as possible, try to focus on such key points:
- Concentrate testing efforts on widely used devices for optimal coverage.
- Perform comprehensive UI testing to align elements on screens with different sizes and resolutions.
- Test on older hardware versions and keep an eye on the newly released ones.
In general, you should find a key to fragmentation testing based on the resources you have. If you can afford cloud-based tools with various devices and run automated tests in that environment – you are the lucky one. If you are limited in your resources, try to cover as much as possible: use different OSs, their versions, and screen resolutions from large to tiny, then distinguish the difference between them and note it for further control.
3. Check your permissions
The mobile application may require access to specific functionalities of the device to work properly. If a user wants to upload a profile picture or apply a cool mask to make a new photo, he should give permission to use the camera or access to a device gallery to get an existing photo. However, if such permissions are not granted, the app shouldn’t block users from other unrelated functionalities.
What is more, the app’s permissions are a security-related question. This means that testers can investigate the app’s ability to protect user’s private information by carefully examining its requests.
Here is the list of the “potentially dangerous” permissions that the app can request:
READ_CALENDAR
WRITE_CALENDAR
READ_CALL_LOG
WRITE_CALL_LOG
PROCESS_OUTGOING_CALLS
CAMERA
READ_CONTACTS
WRITE_CONTACTS
GET_ACCOUNTS
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
RECORD_AUDIO
READ_PHONE_STATE
READ_PHONE_NUMBERS
CALL_PHONE
ANSWER_PHONE_CALLS
ADD_ VOICEMAIL
BODY_SENSORS
SEND_SMS
RECEIVE_SMS
READ_SMS
RECEIVE_WAP_PUSH
RECEIVE_MMS
READ_EXTERNAL_STORAGE
WRITE_EXTERNAL_STORAGE
In a nutshell, all permissions are divided into two categories: install-time permissions and runtime permissions. You will understand the difference between them at first sight, but this knowledge will give you a huge boost when planning your future tests.
In my opinion, the key is to see this list from both the user’s and QA engineer’s perspectives. As a cautious person, I wouldn’t give any suspicious-looking permissions to an application. On the other hand, as a QA engineer, I should ensure that all information required by the app marketplace policy is provided and that the request pop-up clearly indicates the reason for using that functionality when requesting permissions.
4. Test different geolocations
It is not just GPS navigation apps that use geolocation anymore. Locations, route directions, and the estimated time of arrival are features being implemented in transportation, food delivery, E-commerce, games, social media, and so on. In fact, the list of application categories that do not use geolocation is shrinking every day. In 2023 alone, around 36% of all mobile applications used some form of location-based services.
The effect that geolocation has on user experience is immense. For instance, using a weather forecasting app that fails to detect your current city accurately could lead you to make ill-prepared plans. Thus, correct geolocational data ensures relevant information delivery, significantly enhancing overall UX.
Generally, the testing process of a location-based app can be divided into several categories:
- Localization testing. Checking location-specific features and parameters is an inevitable part of testing such an app. By the way, are all the numbers, date and time, currencies, and other important parameters displayed properly? It is better to pay attention to these features, too. Crowd testers can easily handle these functions in the most effective way and in any global location.
- Geolocation blocking. Some apps restrict their usage in certain areas. The blocks can have different reasons, for instance, services can be used in specific countries only or distribution channels are not available in some areas, etc. Make sure to follow the rules that are set in specific regions, and don’t forget to notify the customer of the reason why your app is not working under specific conditions.
- Networks and airplane mode. In geo-locations apps, it is extremely important to test how the app is performing against different networks (Wi-Fi, 3G, LTE, etc.) and in airplane mode. I also recommend creating specific test cases for real users in the designated geo-locations to test the performance with these settings.
There are various approaches to conducting geolocation testing, which include using a business VPN service to change location, gathering people around the world for real-time testing, automating tests with tools like Testsigma, or setting up simulated environments on iOS devices/emulators.
5. Follow the app market’s guidelines
According to Statista, the leading app marketplaces had at least 5 million apps published to end users for August 2024.
Each of these apps had to pass the app market’s guidelines to become accessible to anyone interested. Our goal as QA engineers is to make sure that our app will pass the verification stage and that end-users will have an opportunity to install it from the official marketplace.
In my experience, the most common request from the Apple App Store is how and why user data is processed. On one of my previous projects, the team worked on a custom hardware device that had to connect to the app by Bluetooth. We couldn’t pass the marketplace review until we got comprehensive documentation about our Bluetooth usage and device to prove the safety of each functionality for the end customer.
More reasons for the marketplace rejection are:
- Bugs or app crashes.
- Long loading time or unstable work.
- Not all functions are properly implemented, such as unresponsive buttons.
- Inaccurate app descriptions and metadata.
- Legal issues, including deceptive pricing tactics, copyright violations, etc.
And this list is not even half-full! To help you avoid review failure, I’ve pointed out a couple of key points:
- Perform thorough testing to identify the app’s bugs and crashes.
- Make sure that all app information and metadata are complete and accurate, reflecting your application’s true nature and purpose.
- Check the correctness of the translation of the product descriptions into all the languages.
- Ensure that all product options and subscriptions are on one screen.
- Verify that the product pricing information is correct and clear.
If you want to further explore this topic, I recommend you to use official documentation, such as the App Review Guidelines for the App Store and Google Play’s Developer Program Policies, guidelines, and terms.
I hope that this article helped you to analyze and think of some uncommon testing scenarios and approaches. Careful planning, thorough execution, and in-depth analysis will help you to ensure the reliability of your application to new heights. Using both mobile accessibility tools and manual testing techniques, the QA team can boost overall security, accessibility, and UX and create something truly remarkable!
If you need a professional QA team for your project, explore our Quality Assurance Services.