It’s the alarm in my smartphone that helps me wake up every morning. Then it’s time to read my work e-mails and send responses. A newspaper is the other thing that one tends to read at this time of the day, but who needs a physical newspaper when you can install a news app on your smartphone and be up to date with everything that’s happening around the globe. After getting dressed up, it’s time for breakfast and to discuss the day's activity with an onshore client over an Instant Messaging application.
It’s not wrong to say that our smartphone has become no different than a family member, since we spend as much time with the device as we would with family, sometimes even more with the device.
I was chatting with my client recently, and due to multiple apps running simultaneously on my phone, the app was acting up and crashing at times. I was shocked to see the performance of my cool app. But replacing an app has never been easier. There is a variety of them fulfilling same kind of needs, available in an app store. Sometimes it becomes tough to recall the apps that you may have deleted, especially due to the competitive environment in an app store/Play Store, where you can find hundreds of similar applications.
Every second, more and more users are moving to smartphones for their day-to-day activities.
As per various predictions related to mobility, mobile devices and apps will continue to grow in 2016. So, the future is in favor of mobile app development especially for Enterprise Apps. It’s high time especially since expectations related to performance are increasing, and the applications we are accessing are becoming increasingly critical to business. There is no option but to ensure the superior performance of mobile applications. The right strategy for performance testing ensures that users are getting an enhanced experience even when the application is being used simultaneously, along with other applications and by a huge number of users.
Performance challenges for Testing Mobile Applications
1. Multitasking: Smartphones are associated with multitasking. The expectation of an end user is to perform multiple activities at the same time. Most of the time, many apps are used simultaneously fetching the overall memory and processing power of a device. At times, the memory and CPU usage touch peaks resulting in a collapse due to high stress/load, and the overall experience of a device gets affected.
2. Limited Memory: It is not important but mandatory to know how much memory an application is using. There is no doubt that mobile devices are hitting the market with more cool and high-end specs but memory is a precious resource in a mobile device and it should be utilized in a very efficient way.
How designers can help in checking memory consumption of an app: They need to understand that our phones are compact mobile devices and cannot be compared with laptops or desktops. So it becomes a necessity to consider memory usage while designing smartphone applications. The memory of a device is limited and there is no need to load the complete data on screen even when the user does not need it. Designers can take smart decisions about contents of a particular screen and can help in reducing memory consumption.
3. Limited CPU: The more CPU an application will consume, the higher will be the performance degrade of your app and device. It is essential to understand the impact of higher CPU consumption in case of mobile devices that have limited processing power. With more CPU available, one can still achieve adequate results even after writing in efficient code. Optimization of code and selection of algorithms can help build applications that consume minimum CPU.
4. High Latency of Mobile Networks: Mobile networks do not perform up to the mark in comparison to high speed LAN for desktops. The bandwidth is usually lower and latency is always higher.
This has a significant impact on the response time for the client.
One thing is for sure, developers work to make an application that should look super cool and meet functional and business requirements. But what about performance? This is one area which has no defined expectations. Here comes the role of the Quality Assurance (QA) team. As QA, we should focus on all the above aspects.
Few points that a Quality Assurance Engineer should always take care while testing the performance of an application:
1. Multitasking: To make sure that our application stands out well when the user is using multiple applications at the same time and that too with limited device resources. Stress and load testing can help to validate if there are any adverse effects on the application when it faces more stress and load than usual.
2. Limited Memory: QA needs to test how much memory an application is consuming.
There should be an interface to see per second RAM consumption for every process, every application and even for complete mobile device. There should be a close eye on if “memory” is getting released or if there is any memory leakage.
3. Limited CPU: CPU usage is one aspect that can either enhance or diminish overall user experience of a mobile device. It impacts battery drainage and lag of a mobile device too.
As for RAM usage, a similar framework should be there to see per second CPU consumption for every process, every application and even for the complete mobile device.
QA teams should make sure to test the behavior of your application on target devices to ensure that all of your users observe a good experience.
If the experience is not satisfactory then you will need to focus on further strategies:
- Optimization of algorithms/code
- Remove complex functionality of application, without losing overall feel.
- Some nice-to-have features can be removed. Users with high-end phones may not mind it, but users with low specs devices will still have a good overall experience.
4. High Latency of Mobile Networks: Nothing can be done to improve network speed, but what the QA team can do is ensure that:
Our application runs gracefully even on low-speed networks.
It does not crash and shows any inappropriate error prompts to the user.
Loading bar to be placed when data is being loaded.