Friday, April 8, 2016

Things to test in Mobile App

End user scenarios

It is really important to think like an end user while testing your application. Try switching between applications, locking your phone, unlocking your phone, putting it in airplane mode, turning on/off bluetooth and so on. Think like a user and put yourself into their shoes. Think about scenarios which the real user  would face when using your mobile application. You may also want to create different user “personas” such as a non-technical user (someone who has little smartphone experience); a power user (who switches  between apps consistently and quickly) and impaired users (those who may have bad or no eyesight, or those who have sharp hand movements).

Logs

It bothers me that there are still testers out there who do not realize the value of log files. These files usually have bugs in them, hidden gems that are waiting to be discovered. While testing our mobile application, note that there are 2 types of logs:

    • Crash Logs
    • Console Logs

Crash logs are a great way to find out what may be causing your application to shut down unexpectedly, whether user input, device issue, connection issues, memory leaks, or code related issues. For example, there are logs which are part of your IDE's (Integrated Development Environment) like Xcode and Android Studio where you can find information about the different kinds of crashes that happen while using your mobile app. Console logs, while often including information that was in the crash log, also contains kernel-specific information related to the specific device and OS and how they work with your application. For example, in the Mac, Applications->Utilities->Console is where we can find different information about the mobile app when the phone is being used while connected to a computer.

Application Lifecycle

It is essential to understand the different states the mobile application goes through while using the app – The Application Lifecycle

The different states of a mobile application :
   
    • Foreground
    • Background
    • Suspended
    • Idle
   
Consistency

Companies often have their mobile applications running across different devices and OS's. It is important that the application is consistent across devices and OS's, as the user should get a seamless and consistent experience while using your app. The app options/logos should not be different in different devices unless there is valid reason for doing so. Users should not need to learn an entirely different app every time they switch devices.

Keypads

This is the most overlooked area of testing; one that often breaks applications, and testers don't even know to check it. You subconsciously know there are different keypads; you see them when entering email address, creating emoticons, and dialing phone numbers. But do you actively test all of them? Apart from the above keypads, you have keypads supporting different languages as shown below. Consider these variables when testing, as not everyone may have the standard English keyboard.

User Reviews

User reviews can make companies go bankrupt. The review score your app has is a critical aspect of your company's mobile application, such as those reviews on the App Store or Google Play. This is often a factor when users have to choose between similar apps. Pay attention to what users are telling you about your app; looking through the user feedback, you can find lot of issues/ improvements to be made on your app.

Installation

Have you ever tried to:

    • Delete the app and install a new version of your app
    • Delete the app, uninstall the app, and install the app again
    • Install the app over an existing version of your app
    • Install the app over Wi-Fi/4G/Bluetooth/USB

By doing the mentioned actions, you can find many vulnerabilities in your mobile application. These actions are what the end user is going to do when they get their hands on your app.

Performance

People try to load a number of features into their mobile apps to help the user, but they fail to realize that it can come at a cost – performance. Possible factors which could affect performance are

    • Use of dynamic Images
    • Use of maps
    • Web service calls
    • Client side validations

There are free tools for mobile app performance testing, including “Instruments” (part of the Xcode IDE) and “adb tool” (part of Android Studio and IntelliJ.)

Battery Life

No one likes a battery-sucking vampire app. Pay attention to different daemon processes that may run because of your app. Other aspects which could consume battery life include not clearing idle sessions and the use of dynamic visual components.

Storage

Years ago, when 8GB phones first came out, users had  to make tough decisions regarding the number of photos on a phone vs. which apps to download, due to the limited memory. Although many devices have larger storage now, users may still be hesitant to download an app due to the size of it.

Compare the size of your app to those of your competitors'. This is an easy way to see whether your app is a bloatware or not.