Time equals money in nearly every business – and this is especially true for software and mobile app development. Products are released in increasingly shorter cycles, which requires the software dev lifecycle to be perfectly optimized for CI/CD. Continuous testing plays a crucial role in every release cycle, that’s why it’s strongly recommended to have a sound testing strategy in place. We’ve listed 5 aspects of apps that need to be considered when creating a comprehensive mobile testing strategy.
The 5 aspects we will be looking at are operations, functionality, structure, platform, and data security. Each and every one of them is a different angle from which apps can be tested. The idea behind this structure is to start with the general aspects that concern most of the devices, then dive into the aspects related to the core functionalities of the app.
Operations
The first aspect we will look at is “operations”, which concerns everything that interacts with the phone from the outside and how your app reacts in response. There are two main groups:
Connectivity
Interruptions
This is everything that has to do with the mobile/wifi network or a lack of wifi/mobile network connectivity:
What happens if the mobile device doesn’t have any signal? Or the signal is intermittent?
What happens if the mobile device is in “airplane” mode?
What happens when the signal switches from LTE to 3G or to WiFi?
Interruptions are mostly notifications that interrupt the user’s activity on the app. Those usually include:
Other app notifications
Battery status notification (battery fully charged, low battery notification, etc)
Incoming phone calls
Text messages
Forced system updates
How will the app be affected when one of these events happen?
Functionality
This aspect applies to what the app does, what core functionality it requires to work properly, and how it is implemented.
Does your app require WiFi or GPS to be switched on? Does it ask the device to switch on sensors? If not, what might be the cause?
What happens if a user performs an action that the app wasn’t designed to handle? Will the action make it crash? Can it be prevented?
Is your app UI friendly? Did you apply industry standards and best practices for your UI design to ensure end-user satisfaction?
Does your app redirect to the web? Does it allow file downloads from a web source so you’ll be redirected to a web page – how does it interact with the browser app?
Does your web page redirect to your app?
Structure
Here we are referring to the device environment, i.e. can users successfully download the app onto their phones? Sometimes you can see apps in the app store that cannot be downloaded due to country restriction and device compatibility.
Is your app compatible with the device platform you are targeting? Is it compatible with specific OS versions that could be running on a user’s device at any given time?
Both questions are very important.
For example: if you enable the download of your app for Android starting from 4.1.1 you will need to make sure the functionality works with all the Android OS versions from KitKat onwards. Same goes for browsers – if it interacts with browsers, you will need to test on all the frequently used browsers in your target market.
Another issue for developers are “updates” coming from the app and from the device.
What happens if the app is updated? Are there cached files that might conflict with the new version?
What happens if the device OS gets updated? Does your app already support the new version? Will it work on the manufacturer’s’ specific OS version?
Device storage space is limited, so with Android devices, apps, and their data are often stored on SD cards. This is also a scenario that needs some consideration:
What happens if the app is stored on the SD card and the latter gets removed?
What happens if the SD card is full?
Mobile devices
Mobile devices have two main components: hardware and software, both of them slightly different in every device. So what is important to evaluate here is what the mobile devices offer and what hardware and software elements the app depends on.
Does the app use specific software features/functionality? Also, what if the slightly different manufacturer’s version has a variation of that one feature your app depends on?
Does your app depend on either mobile network or WiFi?
Does it interface with the UI correctly? Here you will need to check if the keyboard opens when there is an input field; Is the audio being pushed through the headphones if they are connected?
Most of the applications use device hardware and can tap into device settings. To be able to access your contact list, start the camera or switch on the GPS, you will need to give the app permission. When you first download an app there is usually a list of permissions it asks for to be able to use it correctly.
What does the app interact with?
What permission does it need to work properly?
The app store is the first interaction a user has with any app. There needs to be a good description available, as well as a transparent overview of the permissions that the app requires. What user data will it need to work and how will this data be used?
There should also be a user guide available and a FAQ section. The users need to be able to see that their comments are being valued and taken into consideration.
This is not strictly connected to the app quality but it has great importance for the product’s lifecycle and growth strategy.
Data security
Data security remains a hot topic in the mobile industry. Security and privacy are the main topics of every IT discussion. So what data does your app save, collect, process, and send? What data does it need to work reliably?
Time:
In your email/post/social media time stamp, what time will be written there? Is it your phones’ or the servers’?
Purchases:
Does it ask the user to log into their bank account?
Does it push the user to a web page with extra security to finalize the purchase?
Reward points:
Can the user use the app to collect points?
Does it work offline?
Are the user’s store information and user position saved?
Contacts:
Does the app need access to the user contact list?
What does it need the access for?
Does the app connect to Facebook and ask for your friend’s list?
When files are saved to the device, does the app have access to the device storage? Can it read user’s files?
Is the user sent to a web page in the browser to download their files? Is the data then exposed/endangered?
How big is the file?
Can the user open the file with just the device’s resources?
Testing is ensuring the quality of an app. Proper testing strategies will need to be created around it, taking into consideration the features of the app itself and the hardware of the devices used. The questions above will help you look at your product from a more holistic perspective and create the best possible testing strategy, concentrating on core functionalities.