Mobile Testing
Introduction
Mobile testing is the process by which applications for modern mobile devices are tested for functionality, usability, performance, and much more.
Mobile application testing can be automated or manual and helps you ensure that the application you’re delivering to users meets all business requirements as well as user expectations.
Mobile Application Testing
Mobile application testing is a very important component of the Software Development Life Cycle.
Application Development is a complex process and hence the possibility of errors in the coding cannot be ruled out.
Mobile Application testing is a challenging process as it involves testing of applications across different handsets, carriers, languages, and locations.
Key Considerations of Mobile App Testing
As you consider your mobile testing strategy, there are a number of things that are important to keep in mind in order to plan and execute an optimal approach.
Types of Mobile Apps
There are three general categories of mobile applications that you may need to test today:
Native Apps are designed specifically for a particular mobile platform (today this typically means either Android or iOS) and are generally downloaded and installed via an app store like Apple’s App Store or Google’s Play Store. This includes both pure native apps built on Java/Kotlin for Android or Objective-C/Swift for iOS and cross-platform native applications built with frameworks like ReactNative, Flutter, and NativeScript.
Responsive Web Apps are designed to be accessed on a mobile browser. Web apps can be either a responsive version of a website or a progressive web app, which adds additional mobile-friendly features
Hybrid Apps are designed as a compromise between native and web apps. Hybrid apps can be installed via app stores just like native apps and may have some native functionality, but at least partially rely on operating essentially as web apps wrapped in a native shell.
Differences Between Mobile and Web Testing
There are additional complexities that you need to consider when testing mobile applications, even if you are testing a web app. Mobile users will interact with your app on a large variety of operating systems and devices with any number of standard resolutions and device-specific functionalities.
Even beyond the unique devices themselves, mobile users find themselves in different situations than desktop/laptop web users that need to be accounted for in testing. This includes signal strength, battery life, even contrast and brightness as the environment frequently changes.
Ensuring broad test coverage across even just the most common scenarios can be a complex challenge.
Key Types of Mobile Testing
There are a lot of different and important ways to test your mobile application. Here are some of the most common testing methods.
Functional Testing
Functional testing is necessary to ensure the basic functions are performing as expected. It provides the appropriate input and verifies the output. It focuses on things like checking standard functionalities and error conditions, along with basic usability.
Usability Testing
Usability testing, or user experience testing, goes further than functional testing in evaluating ease of use and intuitiveness. It focuses on trying to simulate the real experience of a customer using the app to find places where they might get stuck or struggle to utilize the application as intended, or just generally have a poor experience.
Compatibility, performance, accesibility, load testing and UI testing are other common types of mobile tests to consider. (UI testing is discussed again in detailed.)
Manual Testing vs Automated Testing
Manual testing is testing done solely by a human, who independently tests the app and methodically searches for issues that a user might encounter and logs them. Automated testing takes certain tasks out of the hands of humans and places them into an automation tool, freeing up human testers for other tasks.
Both types of testing have their advantages. Manual testing can take advantage of human intuitiveness to uncover unexpected errors, but can also be extremely time-consuming. Automated testing saves much of this time and is particularly effective on repetitive tests, but can miss less obvious cases that manual testing might catch.
Whether you use one method or a hybrid approach in your testing will depend on the requirements of your application.
Open Source Tools for Mobile Test Automation
There are a number of popular and open source tools and frameworks for testing your mobile apps. A few of the most common include:
· Espresso — Android-specific and geared towards developers (recommended by Google).
· XCUITest — iOS specific and geared towards developers (recommended by Apple).
· Appium — Cross-platform and easy to use, with strong community support.
· Calabash — Cross-platform with support for Cucumber, Xamarin-based and also easy to use.
Mobile App UI Testing
With the flourishing market for mobiles, testing of mobile applications has become exciting day by day.
Just by running functional tests on a mobile application, you cannot sign off the app. There are few other testing types like field testing, network testing, UI testing, battery life testing, etc., that need to be done.
UI testing is one of the important tests in mobile application testing and it should not be taken lightly.
What to test in Mobile app UI testing
While testing UI on a mobile application, various characteristics need to be verified.
Following are some of them.
Screen Resolution
Following are some of the common screen resolutions that are considered while testing
· 640 × 480
· 800 × 600
· 1024 × 768
· 1280 × 800
· 1366 × 768
· 1400 × 900
· 1680 × 1050
All of these resolutions are a must for testing when you have a multi-column layout in your app.
Hence verification needs to be done starting from the smallest to the biggest resolution. Apart from this, if your app has a long list of cards with information then those also need to be tested on a different resolution for their information wrapping.
Screen Size
There are too many variations in screen sizes and available resolutions. In smart devices especially, controls sizes are not static, they have relation to the available screen size.
While testing, make sure that controls size looks esthetically good and control is completely visible on the screen without any scrolling. Test the GUI on different devices with different screen sizes and resolutions.
Emulators are good for this purpose but nothing matches the real device. So make sure that you test on at least two or three real devices. Also, don’t forget to test on landscape and portrait orientations if the device supports it.
You must test the application under commonly used resolutions to ensure its usability.
The difference between screen size and resolution
The screen size is the length of the screen in inches measured diagonally or from one corner to another corner of the screen. The screen resolution is the width and height, Example 640w × 480h that represents the number of pixels going across the screen multiplied by several pixels going down.
Different UI Elements
The UI elements like buttons, headings, icons, images, selection fields, text fields, check boxes, etc., are some of the different elements that need to be verified for their appearance and size on the screen.
Specifically for text fields, if the soft keyboard shows up on tap in the text field should be tested and verified.
Most importantly thorough testing of button sizes is required because I remember in our app while testing on Galaxy S phone, we found a blocker where a button had blocked the entire app just because the button appeared too tiny to click on.
The position of the UI elements should also be verified against the requirement i.e. if all are to be center-aligned or left-aligned etc.
Summary
Mobile testing can be a complex challenge due to the wide variety of hardware and software variations in common usage today. However, as mobile internet use continues to soar, the quality of your mobile applications is more critical than ever. Understanding the types of tests you need to run, and then executing them with the tools that will make you most effective, will ensure you can deliver your mobile apps in less time and with a superior user experience. And also you should decide to test manually or automated depending on the nature of app, stability of app, resource available etc.