All about Android App Performance

Yukti Srivastava
MindOrks
Published in
4 min readSep 20, 2018

One of the important metrics for measuring the quality of an app is its Performance. An app’s performance and stability are directly proportional to its success and revenue.

Here is a snapshot of what performance testing can monitor:-

  • RAM usage by the app
  • How app is behaving in Network change condition, connectivity issues
  • Is app crashing with more number of simultaneous users
  • How app is working with other installed apps
  • Splash time of app
  • Packet loss, if any

A slow app leads to loss of user interest and ultimately its uninstall. Here are some metrics that need our attention:

App Start-Up time: How much time your app takes to start up after the user taps on app icon the first screen should be shown in 1–2 seconds.

Battery: Your app should not consume memory in background and it should not heat up the device. Use battery historian to track the battery usage.

Memory: Check memory usage of your app using android monitor. Find out the screen, module which is taking more memory. Use animations carefully.

Interference: When the app is running in parallel with other apps, there should be no interference. The best way to check it is by switching app under testing and other apps.

Background scenario: An app that is running in the background is retrieved, it should remain in the same state as it was before. If this scenario is not handled properly, then data get lost.

Data to and from server: In certain apps, data is sent in a specified format. So before displaying it in the app, it should be converted to a relevant format. In this process, apps sometimes become slower and response time becomes longer.

API Calls: The number of calls from App under test to the server generated from app should be less. In some cases, multiple API calls are made for the same functionality. For better performance, this should be handled with less number of calls.

Server Down Time: Whenever the server is down, we can show data stored in the native database. Another solution could be the failover database servers i.e. if one of the servers is down or in maintenance phase the backup server should be available to switch over. The failover/backup server should be in continuous replication and synchronization with the main server.

For Network performance, you will check following things.

Jitters: When there is a delay in receiving information on the network, then it is termed as jitters. It is a problem with the connectionless networks or packet switch networks.

Packet Loss: In the case of complete packet loss, the app should be able to resend the request for the information or should generate the alerts accordingly.

Network Speed: The app should be tested on 2.5G, 3G, and 4G networks. Both Wi-Fi and mobile networks are included in this.

Caching: Downloading of external resources can be time-consuming, so pay special attention to cache your images.

HTTP Requests: Prefer going for fewer HTTP requests, needed to acquire resources for each page, so as to reduce the complexity for your Android app.

Templates: In order to increase the speed of the Android app, load only limited templates just by reusing them.

Loading: Adding something during the loading process will give the users an illusion that it is loading rapidly.

Data: If your Android app is supported well only with the help of massive data, then that is when you should go ahead to load it. Don’t keep the user waiting for a longer time than that is needed by looking into the parts of the app. Dividing the assemblies will make the target easier to accomplish. There is also another option in which you can pre-load or prefetch the data so that the user is not kept waiting for long at the time of requirement of data.

Offline Mode: At the time of network problem, while the user is amidst the process of completing an action, it is best to prompt them as to why the action has failed in between.

Smooth Scrolling: If you want your Android apps to score on the lines of scrolling, prefer using UI thread for UI only. This will be great to handle 99% of your problems. Don’t load images, parse JSON, access databases and work on networking calls on UI thread. If you want quick solutions, go for libraries in case of images, JSON, and networking. In case of database access, use Loader that is very effective to do batch updates to databases and thus, shift your focus on the important stuff in the app.

Tools

  1. Monkop: There are various tools available in the market to conduct mobile performance tests, but an excellent tool amongst the lot is Monkop because of its simple function used in testing of Android apps. First, you have to upload your .apk and then if you want, test data and scripts.

2. Robotium

For iOS: Automator (Mac)

Thanks for reading :-) , if you enjoyed it, hit the applause button below, it would mean a lot to me and it would help others to see the story. Let me know what you think by reaching out on Linkedin

--

--