World is moving towards mobility. Mobile development is seeing an ever rising trend. With so many mobile apps being launched everyday and eyes prying for mobile apps, Mobile App Testing becomes extremely important.
There are many interesting challenges when it comes to mobile testing. With so many available screen sizes and different platform versions, no matter how hard testers try, giving best test coverage in short span of time or just before release is a bit difficult. In such situations it very important to follow the crux, that can ensure a healthy release.
So here we list down top five tests to perform prior to release.
“Bad Performance” of an app decides how soon user is going to uninstall the app. Most of us are victim to our mobile’s battery performance. Imagine what you are tempted to do if you find out that the app is consuming all the battery.
Key analysis which can help in improving mobile apps performance are:
It’s very important to analyse battery consumption when the app is running in foreground as well as in background. Sometime there are some unnecessary connections in an app which results in more battery consumption. Even though the app is in background some processes are running which are consuming more battery.
Specific set of memory is allocated to an app in any device. App runs a background processes called garbage collection (GC) which clears the heap memory to make sure that allocated memory space is free and there is no out of memory crash. With memory analysis a tester can figure out whether there is any memory leak or not as well as whether there is any chance of app going out of memory.
Numerous numbers of requests from user on the app can cause serious data consumptions. With network analysis a tester can find out all the duplicate contents, insufficient use of data connection as well as data consumption when app is in background. All these factors can consume 50% more data if not noticed and reported on time.
Security is always a major concern whether it’s mobile or web. There are several tests a tester can do to make sure that app is secured from vulnerabilities . To start with, a tester must do as a basic vulnerability test for the app.
It’s very necessary to store sensitive information / data in encoded form. With the help of tools it’s easy to determine if stored data is in encoded form or not.
Brute force attack
Brute force attack is an automated process of trial and error used to guess a person’s username, password or credit card number. If there is no limit to number of login attempt then that app is exposed to brute force attack.
With reverse engineering it can be determined whether an app is asking for unnecessary permissions or not. There are possibilities that some other app can use these unused permissions to exploit the app.
Is your application using certificates? If there is no certificate then there is a default certificate being used for authentication which can be easily hacked and hacker can see the entire source code of the app ( this code can be further used to extract sensitive information from the app).
It’s always a good practice not to print sensitive information in logs. After connecting app with log analyzer anyone can see the information getting printed in log. Mostly username and password can be extracted by reading logs.
Functionality of an application is its backbone. The functionality should be tested properly against the business requirement given to the tester. Divide and conquer strategy is the best approach to test each module followed by integration testing. Along with that there are few more tests needs to be done like:
Designed and undesigned task
During functional tests testers only validate whether the application is performing designed task or not but it’s also important to validate that application shouldn’t do any tasks which are not as per the design.
The running applications must handle the interruptions like phone call, notifications, text message or an alarm properly. If any of the interruption is not handled then it can lead to crashing of application.
Installation / Uninstallation / Reinstallation
Install the application to validate its compatibility with hardware. Uninstall it and verify that everything related to application is uninstalled like local database, directory etc. Then reinstall the app and validate the same again.
USABILITY AND ACCESSIBILITY TESTING
Wearing a user’s hat can help us predict user behaviour. Usability of the app will differ based on different end user, an app build for a housewife will have different UI / colour / design compared to a tech savvy. Sometime it’s about how easy the application is in use and sometime it’s about UI of the application.
Sign In & Sign Up using social media
Any user who is connected to internet is definitely having a social media account. Providing sign up / sign in using social media helps user to connect to the app in much easy and faster way.
Text Size and colour
Mobile comes in different screen size and sometime the app’s text size is so small that user can hardly read it. Different colours also attract user’s attention, for example something in red indicated that it’s error or warning. So anything in an app which business wants user to notice should be in different colour.
Gesture & Orientation
Almost all the application have a similar gestures. In case there are some complex gesture which user can’t figure out by his own then those gesture should be displayed once by the app. The application supporting both landscape as well portrait mode should behave (functionality) similarly in both the modes.
Crash or ANR
Crashes or App Not Responding always disappoints the user. Application should be tested for all the edge cases scenarios which can crash the app.
PLATFORM AND DEVICE SPECIFIC TESTING
With so much of variation in screen size, hardware configuration and operating system the application is intended to change it’s behaviour. As a result it is very important to test the application on different devices.
Even with the change in operating system’s version the behaviour of the app can change. This happens because app is designed in such a way that it should interact with the mobile OS and do the work. But change in mobile OS can cause some issue to the app’s functionality. As a result an app should be tested against multiple OS.
There are certain iOS and android guidelines which app developers must follow. Especially for iOS, not following the guidelines will lead to App Store rejections and hence it’s very important that the app be properly tested against the guidelines before its submission to App Store.
Rooted / Jailbroken devices
Rooting is the Android equivalent of jailbreaking, a means of unlocking the operating system so you can install unapproved (by Google) apps, update the OS, replace the firmware and so on. App is designed to interact with OS and do its task, customizing OS can create some issues.
Hope this helps, Happy Mobile App Testing!