With all the focus majorly being shifted to Mobile platform a need, in fact, the necessity has arisen to test the mobile applications effectively and extensively. Glitches in testing the application effectively may result in failures leading to loss of audience, loss of revenue and would definitely earn some dishonor to the brand name. To prevent this effective testing process should be in place to eradicate all the vulnerabilities in the mobile application.
No testing would ever guarantee a Zero Defect release but Yes, testing should guarantee a product free from some obvious and critical errors. Mobile testing is no different from this. So what constitutes an effective testing process for mobile applications or what are the key things we should ponder over when testing mobile-based applications?
Let’s take a look at some of the deciding factors or the “things to keep in mind” while testing mobile applications:
Deciding Upon The Devices to Test – Breaking Into Fragmentation
Device and OS fragmentation is one of the biggest challenges when it comes to mobile testing. This problem pertains more to the Android ecosystem as compared to the iOS family because of the wide range of Android devices and manufacturers available in the market. It is hard to choose between various combinations of mobile devices and platforms, screen sizes, resolutions, hardware, etc.
It’s freaking crazy testing an application on the mobile platform, the reason being the overwhelming number of devices available in market and to complicate the things further there is a multitude of manufacturers who keep on releasing new devices over the period of time. As a test professional, it is important for you to come out with a list of devices that would suffice your testing needs and would eliminate any possibility of landing into big trouble when the app is launched in the market. Some of the pointers that can help you isolate the list of devices are:
- Ask for the mobile usage statistics for the Application Under Test (AUT). The statistics should reveal the share of different devices that are accessing the app. Pick the devices which are majorly used for accessing your app. Ignore the ones that have a very little share, provided you are well aware of consequences for not selecting these devices.
- Interview the client or the owner of the app and determine the target audience location reason being different locations have an inclination towards the different families of devices. Next step, identify the majorly used devices or the family of the devices in those locations and incorporate those devices in your list.
- Determine and shortlist upon supported device features such as OS, Screen size, resolution, Form Factor, memory size model etc.
- If your app is backward compatible meaning it is interoperable with the legacy OS or legacy devices, then remember to test these combinations as well. Some users might still be on old devices/OS and you do not want to lose them.
- Last but not least do a market survey or have someone to provide you that statistics. Based on the stats plan to include some of the heavily used devices.
Should I Completely Go for Emulators Instead of Real Devices?
The answer can vary depending on the situation or the phase of the application development. Many developers still prefer to develop and unit test their applications on emulators reason being the emulators are readily available and easy to configure. Furthermore, emulators do not require a separate inventory to maintain which is quite handy when the application is supported on multiple devices. Using emulators can significantly bring down the cost but with one trade-off that the machines on which emulators are to be used should have a good supporting underlying hardware.
Testing on the actual physical device, however, is always Spot ON and none of the emulators can replace the worth and accuracy of testing on the actual device. Testing on an actual device is similar to testing in the production environment i.e. the actual environment end users would be using the app on. It gives access to real hardware, real network and practically a real-world to the application. Sometimes the issues found on devices are rare or difficult to find in emulators.
Emulators are good to find straightforward or common bugs whereas the actual device can actually uncover common plus not so common bugs. To summarize make sure you have the right mix of emulators and physical devices in place to deliver the best results in prescribed budget and time.
Performance of The Application
In this fast-paced environment, no one wants to wait whether it’s a shopping mall queue or accessing an app, imagine how would you feel waiting for a page to load when you know you have the top-notch bandwidth available, disgusting isn’t it? Studies have shown that applications with performance bottlenecks have the least number of recurring users. So It is always recommended to performance test your application for better yield and fewer performance issues.
With several paid and cheap cloud solutions and other storage mediums in place users are showing the tendency to maintain their data online and carry it over to the apps they use. Also depending upon the type of app it may support communication of large amount of data over the network. To prevent the app being bogged down because of the performance issue make sure to test it properly with anticipated traffic levels.
Remember only the best ones will survive, the bad ones would be swept away with the time.
Let’s Automate It, NO, Let It Be Manual !!! I am Confused…
With ever growing automation these days can we completely rule out manual testing? The answer can vary but majority of people would still say NO to this. There are plenty of factors when deciding between automation and/or manual. Whatever be the approach be the end result should be an application that is production ready with planned test coverage duly completed.
Automation can be done when:
- We have to execute the same test suite on multiple devices. This invariably saves a lot of time and effort and gives an extra cushion to support other testing activities in time crunch situation.
- We have frequent releases.
- The regression suite is way big with hundreds and thousands of test cases.
- The app is built in an incremental way like in Agile. Automation can ensure that there is no impact to the previous unaltered functionalities.
- We have to daily test the application. E.g. of this is to do a health check on the live application daily to ensure there is no breakdown and it is accessible to all the users.
Manual testing on the other hand can support by testing the features/functionalities not supported/automated by the automation tool in place. For e.g. interruption testing, low battery, handling alerts, notifications, varying network conditions etc which can be tested manually only.
Secure or Vulnerable?
What are the biggest concerns that comes to our mind before installing an application?
- Is it safe to use?
- Does it encrypt the data when transmitted over web?
- Can it access, manipulate and use my personal information like Credit card info, wallet info, bank details etc?
- Does it have proper secured login process?
- Does it secretly install additional softwares (maybe some Virus, Malware etc)?
End users are always sensitive to their data and an application with security leaks would only add to their trouble. Make sure to properly address all the security concerns to gain the trust of your audience.
Networks
Network is one of the important factor which affect the performance of the mobile application. The application should be smart enough to identify between the signals of varying strength. Majority of the audience engage themselves with the app on the GO meaning they are totally reliant on Mobile network so it is utmost necessary to test the performance of the app on various types of networks such as 2G,3G,4G and No Network.
Offline mode, if supported should provide a seamless (though limited) experience to the end users. In Offline mode make sure that the offline cache is refreshed or purged after a regular interval so as to keep the performance of the app upto the mark.
Types of Testing
In addition to the basic functional testing the testing professionals can add some more testing flavours to their bucket:
- Orientation Testing (Portrait/Landscape mode)
- Installation Testing
- Upgrade Testing
- Call/Traffic monitoring
- Interruption Testing
- Accessibility Testing
- Localization Testing
- Performance Testing
- Security Testing
Conclusion
Let’s admit that a hard core strategy is not available for mobile testing which might be true in some other platforms. So for impeccable planning and execution, be sure to take into account all the above listed factors and make mobile testing an “Easy to Accomplish” journey.