A mobile app is a software program developed to run on mobile devices such as smartphones and tablet computers.
Until recently mobile applications were holding a pretty tiny part of the IT market, positioning themselves rather as a tool for entertainment, than a full software. Today, when the Internet can be accessed much faster through a smartphone than by using a bulky computer or a laptop, mobile applications has become a very important segment. This means that they, like any other software, should definitely be tested.
Mobile users expect an application to be stable, responsive, safe, to have a simple UI, and of course, to be operable 24/7.
To understand the features of mobile application testing, one should also take into account the factors that form differences between the mobile applications and the desktop (which include the variety of operating systems for mobile platforms, various manufacturers and component configuration, the functionality of devices and so on).
There are several ways to build applications for mobile devices, each has its strengths and weaknesses. There are three basic types: native apps, mobile websites, and hybrid apps.
Native Mobile Apps
Native apps are written using the default language for the mobile platform (which is Objective C/Swift for iOS and Java for Android). Apps are using the platform API, so an app is connected with a platform to access device data (possibility to use GPS, Camera, etc.).
Possibility to use native APIs directly in an app, making the tightest connection to the platform; native apps rarely affect a device performance; writing apps with native APIs is helpful for developers, who are in this case familiar with the languages used, these are the advantages of a native application.
Disadvantages of native apps include strong requirements to language and knowledge how to use platform-specific APIs, apps can only be developed for one platform at a time, and typically, native apps require more efforts and expenses to be built.
Mobile Websites (Web Apps)
Mobile websites are applications which work with a mobile browser. Sometimes they are called Web Apps. Such an app doesn’t require installation on mobile devices and is easy to be updated and maintained without the need of going through installation on devices. Any mobile device has a browser, therefore allowing an application to be accessible. No native access to APIs, only APIs provided by browser; and the requirement of constant internet connection are among the disadvantages of web apps.
A hybrid app is a mobile app that contains a web view (essentially an isolated browser instance) that runs a web application inside of a native app. This is realized through using a native app wrapper which communicates with a native device platform and a web view. It means that web applications can run on a mobile device and have access to another device part, such as a camera or GPS features.
Cross-platformness is one of the biggest hybrid app pros. One can build his/her own app and deploy it to multiple platforms with a minimal effort. Development of this app does not require specific knowledge of a native language and allows to build mobile apps using the same skills previously engaged into development of websites and web applications. As a web view is wrapped into a native app, a hybrid app gets access to all of device features available to a native app. Along with many advantages hybrid apps have some weaknesses: lower perfomance in comparison to a native app, also to access native APIs one needs plugins and frameworks that may require additional development and support.
Here are few essential types of testing that are recommended for any mobile application:
Functional testing is the most basic activity for any application, it ensures that an app is working as per defined requirements. In general, functional testing depends on supposed usage area. For example, if a company develops a new social network app, its functional testing should cover main app flows. Special attention should be focused on: functional requirements, business needs, installation process, and localization of this app.
Mobile compatibility testing consists of checking or validating your application to behave as expected within a preselected combination of mobile devices and browsers that end customers are thought to be using for accessing an application. In this case attention will be focused on:
Network type (Wi-Fi, 2G, 3G, 4G);
Interruption testing uses a mobile device which functions may interfere into application usage. Those interruptions may be:
Social media notifications (Facebook, Twitter, etc);
Low battery notifications;
Crash of application;
User Interface Testing
UI testing is a process of checking an application’s user interface and detecting whether it is functionally correct. UI Testing looks at how an application handles keyboard and mouse events, how different GUI components (menu, bars, toolbars, dialogs, buttons, edit fields, list controls, images etc.) react to user’s input and whether or not the whole app performs in the desired manner.
Usability testing is used to test a mobile applications in terms of usability, flexibility, and friendliness. The testing process makes sure that a mobile app will be easy to use and offers a suitable user experience to customers.
Testing process includes defining how an app behaves at peak, average and minimum loading, how it uses device memory/CPU in different situations, battery consumption tests are also included.
There are many potentially weak spots in mobile apps. OWASP is an online community which creates free-access articles, methodologies, documentation, tools, and technologies in the area of web application security. Annually, they post the top ten of what are the most critical application security flaws. These include:
Insecure data storage
XSS-attack and SQL-injections
Using non-secure transport layer
Improper session handling
Mobile testing tends to become more and more required, as well as more sophisticated with a glance to rapid and dynamic world of mobile devices and applications.