When manual testing becomes cumbersome, the need to switch to automating your test cases becomes clear. A more robust and efficient way of testing an application, we can also include screenshots of the application while automating, which can be used for future reference and validation. Evolution of the traditional and the creation of modern businesses across different industries (such as Entertainment, Travel, Banking, Food, etc.) has led to an increase in the development of mobile applications. Consumers are increasingly relying on mobile devices to access the internet. The need for test automation is rapidly increasing with advancements/modifications made to an ever-increasing number of mobile applications and the need to ensure the applications work as desired on different devices.

What is the need for testing mobile applications?
The primary purpose of testing mobile apps is to ensure an error-free experience to the user of the application. To keep your customers engaged while using the application and ensure bug-free experience. The UI of the application and the application design and response is vital for better customer experience.

Mobile automation testing uses a pyramid approach as suggested by Mike Cohn. It is not realistic to use the same approach for all of the applications. You can tweak the pyramid according to your requirements and the way the application is designed. Below is one approach that might work for some of your mobile applications.

 

Mobile Test Pyramid

Unit testing is testing a single unit/component individually, it is at the top of the pyramid. Unit testing is usually conducted by the developers immediately after a module is developed. Any bug in the system can be identified instantly which in turn also reduces costs. For example, a bug identified during the functional or performance testing phase can incur higher costs rather than the bugs identified at an earlier phase like Unit testing. The time it takes to identify and fix the defects at a later stage will be high and the impact it might have on the other modules could potentially crash the mobile app itself.

Manual testing plays a vital role in mobile automation testing. Manual testing helps to understand exactly the interaction of the customer with the mobile application. Every aspect of the application can be keenly observed in manual testing. From holding the phone to downloading the app, accessing the app to using the app for an extended length of time, all the actions can be anticipated from a user’s side and tested.

Integration testing is used to test all the individual units and ensure that they are working collectively as a whole. Any defect during the interaction between the units is revealed during this testing. For instance, the components of a mobile device are manufactured independently and are tested individually. It is mandated to test the device once all the components are assembled.

Functional testing focuses on the functional behavior of an application is as expected. Suppose, an application requires login to access it, functionality tests provide the username and password credentials and check if the login functionality is working and the user is logged in to the application. Regression testing includes all the tests of all the components and is executed when a new functionality is added to the application to make sure the existing functionality is not broken.

Beta testing is a crucial segment of the entire testing process. The application is shared with few users who are going to test the application on their real devices in a real environment. This process will make the development team understand any glitches in the product. The users will be asked to fill out a survey about the product’s usability and their experience using the application which can greatly help in improving the product.

End to End testing is to test the complete functionality of the application. Failure in any one of the units can cause the entire system to fail which can be detected by running end to end tests.

User Interface testing is as important as any other testing since the user interacts with the application by clicking and scrolling the elements on the pages. The look, feel and  interaction with the application attracts the customers to use the applications.

According to the application specifications, you can improvise the steps in the pyramid by adding/eliminating them.

Specifications about the application:

The specifications include:

  • What are the devices supported by the application?
  • Which versions of the operating systems are supported?
  • Is there a network barrier to use the application?
  • Does the application work only one Operating System or both (iOS or Android)?
  • What phone features (ex, Camera, Messages) are required by the application to function?
  • Would the app’s scaled version be used on tablets as well?
  • Does the app need to work only in a specific geography?
  • Would the app require any in-app purchases?
  • How often will the app be updated?

How to run the tests?

We can run the tests on either real devices or simulated virtual devices. There are two virtual device types, emulators and simulators for both Android and IOS. The use of these virtual devices is recommended in CI/CD environments. However, there are some significant differences between using real devices and virtual devices for testing:

Differences table

Some applications require you to check other applications or activities such as answering a call, messaging which are not possible on virtual devices. On the other hand, it will take time for the new devices to launch and be available in the market to start testing whereas virtual devices are freely available online. Some applications might be checked for LTE/3G/4G data which is also not possible on virtual devices.

Depending on your requirement and how critical it is to test the application on real devices and virtual devices, one must plan accordingly.