Android Testing – Part III

Also be sure to check an app’s effect on battery life. Many users expect a phone’s battery to last an entire day, at minimum. And with phones performing more and more tasks, battery life is stretched ever thinner. If an app sucks more than its fair share of power it will be ditched by users. To be sure an app isn’t a power hog, would recommend both a normal use test and an idle use test.

Normal use test: Start on a full battery and use the application for 6-12 hours and measure the battery level at the end of each ½ or 1 hour. You may use an automated testing tool to do this so as to keep the test running for the required time interval. This test will tell you how quickly your application drains the battery when in ‘normal’ use, with all the foreground and background features of the application running normally.

Idle run test: Turn off the screen lock and power saver modes. Then start on a full battery and keep the application running on its main, home or dashboard screen as appropriate, and measure the battery level at ½ or 1 hour intervals. This test will measure the battery drain due to such things as intentional or unintentional automatic screen refreshes, and due to the background threads or services running in your application.

5. Common Issues

In addition to the regular testing considerations, a handful of issues pop up across the Android world more regularly than we’d like. Be sure to test for these common bugs across multiple devices pre-launch.

Special Characters: If the app includes a search field or data entry form, test its special characters compatibility. Depending on the programming language, special characters can cause the field to choke. This is especially important if the app is going to be used internationally or with a native language that includes special characters (such as Spanish).

Long Strings: Long strings of characters are more of a fringe use case. Nonetheless, it is important to make sure an app can handle at least moderate length strings of characters. Let the type of data field – and the assumed typical entry – dictate an acceptable length.

Tap and Hold: Even if an app isn’t designed to support the long-hold copy and paste function or the tap and hold move function, make sure it isn’t confused by those actions either. Even if users don’t perform these functions intentionally, it’s very possible that they’ll get distracted and accidentally hold the screen for too long. You don’t want the app to freeze or crash as a result of this real-world scenario.

Virtual Keyboard: The majority of Android devices are touchscreens with virtual keyboards. If a user accidently – or intentionally – raises the keyboard on their device the app screen can distort or, worse, the app itself can become unusable.

These are a handful of common bugs Android users encounter every day, so being sure your app isn’t tripped up by them before launch can give you a leg up on the competition. When testing, remember to think like an end user and test how the app responds to potential real-world situations. Even if an app isn’t designed to support a function doesn’t mean a user won’t try – and be angry if the app crashes.

6. Android Security

It’s no secret that Androids are susceptible to malware – largely because of the open nature of Google Play and the presence of unmonitored, third party app markets. Couple the consistent malware reports with users’ increasing interest in privacy, and an accidental security slip up can be disastrous to your app’s success. At the very least, be sure an app successfully accomplishes these six key security factors:

  • Confidentiality: Does your app keep your private data private?

Integrity: Can the data from your app be trusted and verified?

Authentication: Does your app verify you are who you say you are?

Authorization: Does your application properly limit user privileges?

Availability: Can an attacker take the app offline?

Non-Repudiation: Does your app keep records of events?

It is also helpful to have white hat security experts attempt to manipulate at least the most common security vulnerabilities, such as accessing data due to unsafe storage or transmission practices, cracking inadequate encryptions and unlocking hardcoded passwords. If an app is easily hacked it probably will be hacked.

Finally, test an app’s access to device APIs (such as contacts, photos, camera or GPS). According to the tenants of the Open Handset Alliance (which Android is a member of), “An application can call upon any of the phone’s core functionality such as making calls, sending text messages, or using the camera, allowing developers to create richer and more cohesive experiences for users.” However, when stories about Path “secretly” accessing users’ contacts sparked insight into this common practice, users started becoming more concerned with apps accessing unnecessary personal data. To avoid incurring user ire, test that an app clearly prompts users to grant access permission during download or launch. With so much competition in the app market, it is easy for users to find a replacement that they feel does not unnecessarily invade their privacy.

7. Useful Insights

Testing is an art, so everyone does it a little differently. Still, the best testers aren’t afraid to learn new things and pick up new pointers. Here are a few tips to help you test and to keep you in the mind frame of the end user.

When capturing videos of an app under test, it’s useful to hold each action and leave each screen displayed a little longer than you would in normal use. This makes the video easier for test managers and developers to follow and possibly pinpoint which action went wrong.

Digging through Google Play reviews reveals which issues users hate the most. Here’s what a recent look tells us:

  • 40% complain about installation
  • 16% complain about performance
  • 11% write about app crashes
  •  3.5% report hangs or freezes
  •  2% complain about the UI
  •  1% had security or privacy issues

Bad reviews can kill an app before it even gets off the ground. Thorough testing of these six known problem areas can help you avoid poor reviews.

Emulators are helpful for early stage functional testing, but it is extremely important to test apps on real devices. A keyboard and mouse cannot adequately simulate touch screen usability. And some features, such as accelerometer response or location mapping, simply cannot be tested on a stationary emulator.

Though testing on Android presents a bigger challenge than most operating systems, it is not going away or simplifying any time soon. By knowing the challenges of Android testing, you can adequately address known issues, launch better apps and keep all your users – no matter what device or platform version they’re on – happy and satisfied.