Mobile application testing is a process by which
application software developed for
handheld mobile devices is tested for its functionality, usability and consistency.[1] Mobile application testing can be an automated or manual type of
testing.[2]Mobile applications either come pre-installed or can be installed from
mobile software distribution platforms. Global mobile app revenues totaled 69.7 billion
USD in 2015, and are predicted to account for US$188.9 billion by 2020.[3]
Bluetooth,
GPS, sensors, and
Wi-Fi are some of the core technologies at play in
wearables.[4] Mobile application testing accordingly focuses on field testing, user focus, and looking at areas where
hardware and
software need to be tested in unison.
[5]
Key challenges for mobile application testing
Must be downloadable: The
application must be obtainable for the particular
platform, generally from an
app store.
Device availability: Access to the right set of devices when there is an ever-growing list of devices and operating system versions is a constant
mobile application testing challenge. Access to devices can become even more challenging if testers are spread across different locations.
Scripting: The variety of devices makes executing a
test script (scripting) a key challenge. As devices differ in
keystrokes,
input methods, menu structure and display properties, a single script does not function on every device.
Test method: There are two main ways of testing
mobile applications: testing on real devices or testing on
emulators.[7] Emulators often miss issues that can only be caught by testing on real devices, but because of the multitude of different devices in the market, real devices can be expensive to purchase and time-consuming to use for testing.[8][9]
Compatibility: It is necessary to test the
compatibility; ensuring that the application works consistently even with different device properties, such as different screen sizes and
resolutions.
Should be able to pick up the phone: While executing the app application should be able to pick up a call.
Variety of mobile devices: Mobile devices differ in screen input methods (
QWERTY, touch, normal) with different
hardware capabilities.
Lack of capacity for users' scenarios creation While conducting performance testing of mobile application, the engineers lack usually lack of sufficient amount of hardware to performed proper load testing.
Laboratory testing, usually carried out by
network carriers, is done by simulating the complete
wireless network. This test is performed to find out any glitches when a
mobile application uses voice and/or data connection to perform some functions.
Performance testing is undertaken to check the performance and behavior of the
application under certain conditions such as low battery, bad network coverage, low available memory, simultaneous access to the
application's server by several users and other conditions. Performance of an
application can be affected from two sides: the
application's server side and client's side.
Performance testing is carried out to check both.
Memory leakage testing:
Memory leakage happens when a computer program or
application is unable to manage the memory it is allocated resulting in poor performance of the
application and the overall slowdown of the system. As mobile devices have significant constraints of available memory, memory leakage testing is crucial for the proper functioning of an
application
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:
An
application should be able to handle these
interruptions by going into a suspended state and resuming afterwards.
Usability testing is carried out to verify if the
application is achieving its goals and getting a favorable response from users. This is important as the usability of an
application is its key to commercial success (it is nothing but
user friendliness).[10] Another important part of usability testing is to make sure that the
user experience is uniform across all devices.[11] This section of testing hopes to address the key challenges of the variety of mobile devices and the diversity in mobile platforms/OS, which is also called device fragmentation. One key portion of this type of usability testing is to be sure that there are no major errors in the functionality, placement, or sizing of the
user interface on different devices.[12]
Installation testing: Certain
mobile applications come
pre-installed on the device whereas others have to be installed by the store. Installation testing verifies that the installation process goes smoothly without the user having to face any difficulty. This testing process covers installation, updating and uninstalling of an
application
Certification testing: To get a certificate of compliance, each mobile device needs to be tested against the guidelines set by different
mobile platforms.
Security testing: Checks vulnerabilities to
hacking, authentication and authorization policies, data security, session management and other security standards.[13]
Location testing: Connectivity changes with network and location, but you can't mimic those fluctuating conditions in a lab. Only in Country[clarification needed] non-automated testers can perform comprehensive usability and functionality testing.
Outdated software testing: Not everyone regularly updates their operating system. Some
Android users might not even have access to the newest version. Professional testers can test outdated software.
Load testing: When many users all attempt to download, load, and use an app or game simultaneously, slow load times or crashes can occur causing many customers to abandon your app, game, or website. In-country human testing done manually is the most effective way to test load.[14]
Black-box testing: Where the
application is tested without looking at the
applicationscode and
logic. The tester has specific
test data to input and the corresponding output that the
application should produce, and inputs the
test data looking for the program to output data consistent with what the tester was expecting. This method of test can be applied virtually to every level of software testing:
unit,
integration,
system and
acceptance.
Crowdsourced testing: In recent years, crowdsourced testing has become popular as companies can test
mobile applications faster and cheaper using a global community of testers. Due to growing diversity of devices and operating systems as well as localization needs, it is difficult to comprehensively test
mobile applications with small in-house testing teams. A global community of testers provides easy access to different devices and platforms. A globally distributed team can also test it in multiple locations and under different network conditions. Finally, localization issues can be tested by hiring testers in required geographies. Since real users using real devices test the
application, this is more likely to find issues faced by users under real world conditions.[15][16]