Wednesday, July 1, 2015

Mobile Application Testing

Frequently asked questions on Mobile Application Testing

What are mobile applications?

As per [A Practical Guide to Testing Wireless Smartphone Applications by Julian Harty] mobile applications can be classified as:

Client applications: These are split into two groups: native and portable:
- Native: Client applications are installed on a mobile device and run on that device.
- Portable applications are generally able to run with few changes across a wide range of phone models and manufacturers.

Messaging applications: Current messaging applications use SMS messages as the communications medium.

Browser applications: Also split into two groups: markup and AJAX applications. Browser applications are server based applications that can be accessed through a web browser via a URL from a mobile device.

What are the different types of mobile application testing?

a. Mobile functional / functionality testing
Functionality testing of a mobile application is a type of black box testing to ensure that the application functions according to business specifications.

b. Mobile usability testing
Mobile usability testing refers to the usability testing performed on mobile products running on mobile platforms. Usability testing involves testing products according to what end users experience.[Mobile Usability Testing]

Examples of tasks (both open ended and directed) for usability testing:
- Check the local weather forecast for tonight (Open ended task).
- Use the app "Flipboard" for the iphone to check the latest news. Set up the app to show the news topics that interest you (directed task).
[Mobile Usability By Jakob Nielsen, Raluca Budiu]

More on mobile usability testing:
Eight Lessons in Mobile Usability Testing
Usability Testing: Key for developing high quality mobile applications
Practical tips for Web and mobile usability tests
Mobile usability testing

c. Mobile performance testing
To determine if the program (mobile site / mobile application etc.) meets its performance requirements.

More on mobile performance testing:
Testing Performance of Mobile Apps - Part 1: How Fast Can Angry Birds Run?
How to conduct performance testing on mobile applications
5 keys for effective mobile performance testing
Recording and Performance testing Android applications with HP Loadrunner VuGen
Mobile Performance Testing
The Art of Application Performance Testing: From Strategy to Tools by Ian Molyneaux

d. Mobile security testing
There are three main targets for threats – information, identity, and availability. Keeping that information secure is vital. The consequences of a malicious third party gaining access to personal financial information, for example, could be disastrous and irreparable. With mobile devices gathering personal, often photographic, information about where the owner lives, works and spends his or her leisure time, the consequences of a mobile device getting into the wrong hands could be truly catastrophic. And with devices being used for work and leisure, the possibility of sensitive business information getting into the wrong hands could have much, much wider – and potentially massive – implications.

More on mobile security testing:
Taking Mobile Security to the Next Level
Android Application Security Testing Guide Part-1
Security Testing Guidelines for mobile Apps
Mobile Security Testing
White Paper - Mobile Payment Security

e. Mobile localization testing
Localization testing is about more than just translating words. Characters, formatting, colors, calls to action and more needs to be adjusted to fit the local culture, context and understanding. [Mobile Localization Testing]

More on mobile localization testing:
What to consider for mobile application localization
Mobile application software localization
Localization Testing in Mobile World

f. Mobile compatibility testing
This entails validating the application for different mobile devices, OS versions, screen sizes, and resolutions as per the requirements, checking if integration server changes, checking for the app isolation with other apps on the device. [Mobile Application Testing]

More on mobile compatibility testing:
Mobile App Compatibility Testing on Real Handsets

g. Mobile interrupt testing
Interrupt Testing- An application while functioning may face several interruptions like incoming calls or network coverage outage and recovery. The different types of interruptions are:

--Incoming and Outgoing SMS and MMS
--Incoming and Outgoing calls
--Incoming Notifications [Wikipedia ]

h. Mobile interoperability testing
Mobile Interoperability Testing (MIOT) verifies interoperability within a test bed that includes base stations and subscriber devices from multiple vendors. [Next Generation Mobile Communications Ecosystem: Technology Management for Mobile by Saad Z. Asif]

What are the best practices in mobile application testing?

Each company follows its own set of best practices for testing mobile applications. Some of the best practices are common while the others may differ. Best practices evolve over a period of time through experience.

Following are the examples of some of the best practices:

Functional testing
Functional testing is an important aspect when it comes to mobile app testing. Test the app as a "black box" and try to break it. Open every screen of the mobile app and change the position from portrait to landscape mode and back again as most errors are discovered this way. Choose a test automation tool that fits into the company strategy and infrastructure etc.

Non functional testing
Another important area of mobile testing is the non-functional requirements testing of a mobile app. As an example the key non-functional requirements to be tested in a mobile app are:

Usability tests, validating the battery drain, testing the apps memory usage, compare the performance levels between the released and the new version of the app, compatibility and localization testing for mobile apps etc.

Designing a good Mobile Application Defect-Tracking System
A good mobile defect-tracking system includes the following information about a typical device defect:
- Application build version information, language, and so on.
- Device configuration and state information, including device type, Android platform version, and important specs.
- Screen orientation, network state, sensor information. etc.

Managing Device Configurations
Device fragmentation is one of the biggest challenges the mobile tester faces. Android devices come in various form factors with different screens, platform versions, and underlying hardware. They come with a variety of input methods such as hardware buttons, keyboards, and touchscreens. QA personnel must have a detailed understanding of the functionality of each target device. Whenever possible, testers should test each device as it is used in the field, which might not be the device’s default configuration or language. One hundred percent testing coverage is impossible, so QA must develop priorities thoughtfully. Using AVD configurations, the emulator is also an effective tool for extending coverage to simulate devices and situations that would not be covered otherwise.

Above points are taken from Calsoft labs and Introduction to AndroidTM Application Development, Fourth Edition by Joseph Annuzzi, Jr., Lauren Darcey, Shane Conder.

Apart from the above best practices, you can have a look at the below links to have more information on best practices in mobile application testing.

Mobile App Testing – Challenges, Solutions and Best Practices
Best Practices in Mobile App Testing
Best Practices in Mobile Application Testing
10 Best Practices for Mobile App Testing
Top Best Practices for Successful Mobile Test Automation
Mobile Application Testing – Challenges & Best Practices
Mobile Test Automation – Best Practices

How can we maximize the testing coverage while testing mobile applications?

Validating builds and designing smoke tests
It can be helpful to institute a build acceptance test policy (also sometimes called build validation, smoke testing etc). These smoke tests are short and target the key functionality to determine if the build is good enough for more thorough testing to be completed. This is also an opportunity to quickly verify bug fixes expected to be in the build before a complete retesting cycle occurs.
This reduces the number of bad builds delivered to QA.

Testing on the emulator versus the device
Devices and the service contracts that generally come with them can be expensive. Your test team cannot be expected to set up test environments on every carrier or every country where your users use the application.
Some of the benefits of the emulator:
-- ability to simulate devices when they are not available or in short supply.
-- ability to be automated like any other desktop software.

Testing before devices are available using the emulator
When preproduction phones cannot be acquired, testers can do some functional testing using emulator configurations that attempt to closely match the target platform, lessening the risks for a compact testing cycle when these devices go live, allowing developers to release applications faster.
[The Android Developer's Collection (Collection) by James Steele, James Steele, Nelson To, Shane Conder, and Lauren Darcey, Nelson To, Shane Conder]

What are the challenges in mobile application testing?

a. Mobile devices are updated very frequently.
b. An app has to work on different environments and configurations.
c. Some platforms like android support large number of devices in terms of screen resolution, memory etc.

For more on challenges see below:
6 key challenges of mobile app testing
5 mobile testing challenges and solutions
Agile Testing - Mobile application testing challenges
Mobile Application Testing and Challenges
The Challenge of Testing Applications

What is the mobile application testing strategy?

A test strategy is an outline that describes the testing approach of the software development cycle. [Pragmatic Software Testing : Becoming an Effective and Efficient Test Professional 1st Edition]

The main components of a mobile application testing strategy include usability; performance; security; and functional and nonfunctional testing across multiple platforms, devices and browsers. A complete mobile testing strategy must also account for testing across differing network connection speeds and geographical locations, as well as address the use of Wi-Fi, 3G or 4G connections. Testing must confront such issues as screen resolution and brightness, CPU, memory and OS optimization. The mobile testing strategy must be geared to the architecture of the applications under test whether they are Web, mobile Web, native applications or hybrids. Finally, an organization must consider the test approach, primarily the use of emulators versus actual devices, or even real user monitoring. [SearchSoftwareQuality]

Further have a look at below links to know more about mobile application testing strategy
Mobile Application Testing
Managing your mobile test strategy
Mobile Application Testing
5 testing strategies for building successful mobile apps
Selecting the Right Mobile Test Automation Strategy Challenges and Principle

Who are the main providers of cloud services for mobile testing?

The majority of cloud services for mobile testing serves as a "cloud of devices" and provides remote access to smartphones in the cloud in order to accomplish testing, in other words, provides device hosting. Such services usually aid mobile developers in using remote smartphones as real devices for manual testing (interactive testing through a web interface), recording of scripts, and automatic running of tests on a range of models. For instance, Perfecto Mobile service provides all of this functionality representing different modern hardware and software mobile platforms (Android, iOS, Windows Phone, and Symbian) and can be integrated with HP UFT (QTP) or MS Team Foundation Server. Devices available in the system have different parameters, for example, testing different types of Internet connections is possible. The service works with two kinds of test scripts: QTP and the Perfecto Mobile Application. Perfecto Mobile is only a public service, but UFT Mobile can also be deployed as a private cloud. UFT Mobile provides automated functional testing and special solutions for realistic mobile performance testing (e.g., LoadRunner and Performance Center).

Keynote DeviceAnywhere is a similar service that provides online manual and automated testing of a mobile app on a variety of devices. It can be integrated with existing ALM through HP QTP, IBM RQM or special Java APIs.

The SOASTA service provides two advanced solutions: TouchTest test automation for multi-touch, gesture-based applications and CloudTest for scalable mobile application testing (performance or load-testing with millions of geographically distributed emulated users). TouchTest scripts can be recorded and performed against user’s own device. Users can control test devices via IP addresses.

The Cigniti device cloud provides remote access to a variety of mobile devices via own proprietary mobile test automation framework, with test accelerators for test automation and performance testing. Cigniti is suitable for network carrier testing.

SeeTest by Experitest provides device cloud that can be deployed as a private platform within an organization. Test automation facilities include test script recording/performing on real devices or emulators and integration with HP UFT (QTP), TestComplete, C#, RFT, Java, Perl, Python. SeeTest also provides manual testing tools.

The CloudMonkey service runs MonkeyTalk scripts across many Android emulators and iOS simulators. Screenshot reports are positioned as the base testing results. CloudMonkey test jobs can be integrated with continuous integration (CI) servers like Jenkins.

The Appium on Sauce service covers two functionalities: iOS device hosting and easy CI. The latter means that it can be used as a build server and testers do not need to set up developer environment on local machines. Test automation is implemented with Selenium, and interactive testing is only possible for web mobile applications. Appium can be deployed privately.

The TestDroid Cloud is a device cloud service oriented towards Android apps testing that uses the TestDroid AppCrawler engine to verify application devices’ compatibility. TestDroid Recorder can be used to generate reusable Android JUnit test cases. Test results consist of screenshots and device logs. A tester can compare screenshots to check for GUI bugs. TestDroid can also be integrated with Jenkins or leveraged through REST APIs.

The Scirocco Cloud has all of the functionality of a device cloud, except of script recording. It supports only the Android platform and provides manual access to remote devices through its HTML5 web interface. Test automation is done by using one of three drivers: AndroidDriver, Monkeyrunner, or NativeDriver. Results are provided as a set of screenshots to compare.

The LessPainfull device cloud is oriented for Android and iOS apps testing. As a test automation engine, it uses Calabash for Cucumber and accepts Cucumber-based test scripts. LessPainfull provides two options: private cloud tailored for single customer and shared cloud with devices common for several customers.

TestQuest is a distributed framework for deployment within an organization. It is oriented towards Android application testing and can be integrated with MS Visual Studio.

The ZPX service provides device hosting and mobile test automation in the cloud and is compatible with HP ALM products.

Jamo provides a set of tools to perform remote and scheduled testing on a device. For instance, Wanconnector in combination with Remote Device Screen provides access to a device within different geographical locations. The M-eux Test tool supports web application testing.

Apkudo’s device analytics provide some elements of multidirectional testing by testing devices (e.g., new smartphone models) against the top 200 apps from the market. Similar services are available for smartphone hardware testing, but these have no relation to mobile apps like Datum that provides verification of calls, data quality, and video quality. Apkudo also offers free public and fully automated stress testing of the Android applications on the big range of models using the Monkey tool.


Name some standalone tools for mobile application testing.

Android Debug Bridge
UI/Application Exerciser Monkey

[Source: Dependability Problems of Complex Information Systems edited by Wojciech Zamojski, Jaroslaw Sugier]

Give some examples of mobile application testing tools.

AppiumiOS, AndroidOpen source
CalabashiOS, AndroidOpen source
testdroidiOS, AndroidPricing info
perfectomobileThey use real devices for iOS, Android and Blackberry. Here's a list of supported devices. Pricing info
soastaDevice CloudsPricing info
Testin: The Leading Game Crash SolutionSign up here for free demo
ubertestersAndroid(version 2.2 and above), iOS(version 5.1 and above)Pricing info
RanorexiOS, AndroidPricing info
applauseiOS, Android, Windows 8Pricing info

Some more mobile application testing tools.

Give the checklist for mobile application testing?

Soasta provides a good checklist as you can see below:

Mobile Specific Checklist:

Test Conditions
-Device Integration

Interrupt Conditions
-Incoming/Outgoing Calls
-Popup Alerts (Calendar, Alarm, SMS, etc.)
-Power Cycle
-Extended Background

Installation Conditions

Network Conditions
-Network Type (Mobile variations and WiFi)
-Network Quality
-Network Loss
-Network Transition

Performance Conditions
-Speed / Responsiveness
-CPU and Memory Usage
-Battery Drain
-On-Device/ Memory Card Storage

For complete and different types of checklists please visit the below sites:
Checklist Mobile App Testing
The Mobile App Testing Checklist
Testing Checklist for Mobile Applications
Mobile App Testing Checklist
Mobile App Usability Checklist
Android iOS Application Security Testing Checklist
Are You Selecting the Best Tools for Mobile Software Testing? (Checklist)
iOS Application Security Testing Cheat Sheet
Mobile Testing Checklist
Mobile Testing Checklist
App Usability Testing Checklist
Mobile Application Development and Testing Checklist