What are the different types of mobile testing ?
You may have heard of some of them Functional testing, Security testing, Performance tests, Usability tests etc
Each has its own advantages and disadvantages.And no technique is better than the other.
In this article you will get an overview about the types of mobile testing AND the purpose of each test.
Even though now there are fewer operating systems, device fragmentation still exists. And continues to grow 20% every year.
Newer models , bigger screens , varying resolutions , differing capabilities all add to the complexity.
There are over 24,000 unique Android devices -both smartphones and tablets; with varying screen sizes and resolutions on which an app has been installed
The only way to ensure a positive experience is -by Rigorously Testing your mobile app. Atleast on the most popular devices used by majority of your users.
Overlooking this can lead to bugs and a bad user experience.
Types of Mobile App Testing
1. Usability testing
This test is used to evaluate how easy it is for users to reach their goals.
Users are given realistic scenarios to complete while being observed to see where they encounter problems or experience confusion.The goal is to identify whether participants are able to complete specified tasks and how long it takes them.
In usability testing feedback is collected directly from the end user. This removes any bias and helps highlight areas that could be improved.
Ensuring that the design is intuitive & easy to use provides a positive user experience. Which in turn increases product use.
Check out this footage from a User Testing session:
2. Compatibility Testing
Test the application/software to see if it is capable of running on the different hardware specifications, devices, operating systems, browsers and varying networks as per requirement.
The different types of Compatibility tests include:
- Browser -compatibility with Chrome, Firefox, Internet Explorer and Safari.
- Device -compatibility with different Screen size, resolution, storage etc
- Hardware -compatibility with different hardware configuration
- Mobile-compatibility with Android, iOS,Windows etc.
- Network-performance of the app in networks with varying bandwidth, operating speed and capacity.
- Operating Systems-compatibility with Windows,Mac Os etc.
- Versions of software: compatibility with older and newer versions of software.
3. Performance testing
It is used to determine the speed, responsiveness and stability of the application under various workloads (ie varying number of users).
The goal of this test is to:
- Eliminate performance bottlenecks before the application goes live. Bottlenecks are process/processes within the systems overall function that slows or stalls down overall performance
- Ensure the application meets the performance objectives.
The different types of performance tests include:
Conducted to verify that the application can handle the expected number of users .ie during real life conditions
Helps to set the benchmark for the application.
Is used to check the stability of the application under higher than expected workloads ie during peak periods.
Helps determine the :
1. breaking point of an application ie How long the system is stable under heavy loads and its response time from the failure
2. Application’s behaviour when the system is pushed beyond what it was designed for.
Soak testing aka Endurance Testing
The objective is to ensure that the performance level does not drop with sustained activity over a long period of time.
Used to determine the performance/behaviour of the system when there is a sudden large increase in the number of users.
Used to check the system performance when there is a large volume of data in the database. This testing is focused on the database.
4. Security Testing
(Image Source: SoftwareTestingHelp.com )
Ensures applications are free from vulnerabilities so that the data is protected and access to it is restricted
Aims to find all the possible loopholes and weaknesses
The different types of security testing include:
Vulnerability scanning –
detects and classifies system weaknesses in computers ,networks and other hardware/software .
An automated software scans all the potential points that can be exploited on systems in a network to identify vulnerabilities that may need attention.
It involves attempting to Exploit vulnerabilities.to determine whether unauthorised access to the system or data is possible.
Can be done both manually and automated
It involves finding weaknesses in the security of a system and providing solution to reduce these risks.
Can be done both manually and automated.
Evaluating an applications risk level against a set of standards which are specific to each industry or technology
This ensures the baseline requirements are met.
5. Installation Testing
Installation testing checks whether the mobile app installs, un-installs, updates properly without any interruption.
And works as expected after installation.
6. Localisation Testing
Used to check whether appropriate language and cultural aspects of a particular region are taken into account while adapting the product to the region.
Some of the important areas that have to be customized include:
- Usage of proper time zone Date and time formats (including numeric formats)
- Local Currency .
- Text and User Interface
- Diverse local regulations requirements
The main goal of localisation testing is make it look and feel like it was created specifically to meet their needs.Once all the changes are made ,all the functions of the app are tested to make sure it is functioning as designed.
7. Functional Testing
Used to test the functionalities of the application and verify that each function works as specified in the requirement specification.The requirement specification is a set of documents that describes what a user should be capable of doing.
Can be performed manually or automated.
The different types of functional tests include:
Unit Testing –
Individual units/modules of software are tested to validate that each unit works as intended.
The smallest testable part of a software is a unit , it may be an entire function or just a section of code .
Helps detect flaws early which may be difficult to find later .
The code becomes more reliable and reusable .
Performed after unit testing.
Individual units are combined together and tested as a group; to verify the modules work together.
Approaches to Integration Testing include:
Big Bang: Testing begins only after all the modules are designed .
All the modules of the system are put together in one go and tested.This is practical only for small systems.
Difficult to locate the error.
- Top-Down : Testing Starts from the top most module and gradually moves down.
Stubs is a piece of code that simulates the behaviour of the lower level modules ;accepts the inputs and returns the results
Using this even though the lower modules don’t exist we are able to test the top module.
- Bottom up :Integration Starts from the lowest module and gradually moves up.This continues until all the modules are integrated and tested till the upper level.
Drivers-are used to simulate the higher level modules.
Easier to detect faults at the lower units however higher level design flaws will only be detected once all the modules are integrated and tested
Overcomes the shortcoming of both top down and bottom up approach.
Top down and bottom up start simultaneously from the middle layer moving up and down.
Top modules are tested with lower modules and at the same time lower modules are integrated and tested with top modules.Makes use of stubs as well as drivers
8. System Testing
The process of testing the complete integrated system; how components interact with one another and with the system as a whole —to verify that it meets the specified requirements of the customer.
9. Acceptance Testing
The customer either accepts the product developed meets the criteria or rejects it.
The different types of functional tests include:
- User Acceptance Testing
It is the last test before the system is available for use.
Also known as beta testing or end user testing.
The purpose of this test is to evaluate if the system meets all the required specifications and is working in the way it has to .
And the customer approves/disapproves the product based on the contractually accepted criteria.
Most common use cases are picked for this purpose.
Business Acceptance Test
Used to determine if the product meets the business requirements and supports the business objectives..
It is done before beta testing typically by in-house developer’s or tester’s .
Used to further refine the application by fixing bugs that were not discovered previously.
Used to ensure that an application complies with a set of standards and regulations from different organization.
These standards should be clearly defined to avoid ambiguity.
They are defined by large organizations like IEEE(International Institute of electrical and electronics engineers ) or W3C (World Wide Web Consortium).
Once it is fully compliant it can be advertised as such.
10. Interruption Testing
It is used to test the behaviour of an application when it is interrupted before resuming to its previous state before the interruption
Common examples of interruptions
- Battery low/ full
- Incoming phone call,SMS
- Plugged in/out while charging
- Network connection loss and recovery
- Push Notifications from mobile apps
Usually an app when interrupted runs in the background , and is expected to resume to the state it was in before the interruption when called to the foreground.
11. Recovery Testing
It is used to test the recoverability of the application from crashes, hardware failures or other critical problems.
This involves manually simulating the failure of the software in order to verify that the application can recover quickly.
One practical test would be:
While downloading a file you loose network connection momentarily when your device is connected back to the net if the download continues seamlessly from where it stopped ,the app has a good recovery rate.
12. Mobile Device Testing
Also known as Hardware Testing.
This includes testing the internal hardware ,memory, camera,WIFI , bluetooth etc
13. Storage testing
Tests how the software performs its storage functionalities and the speed at which this is done.
Ensures that data is stored in the right format and in the specified directory.
Sufficient space has to be reserved so that unexpected termination does not occur due to lack of disk space.
It is also tested on its resilience for problems such as accidental deletion.
Can be done manually as well as automated.
14. Regression Testing
This test confirms that a code change has not affected existing functions. Ie the previous working version of the application is unaffected by the new code.
Used when a new feature is added or a defect is fixed or when code is optimised –which could cause the application to work incorrectly.
This involves retesting the unchanged parts of the application ; which is done by either re-executing all the old tests which is quite expensive
Or Test by prioritizing functions based on their business impact ,frequency of use .
Automation of these tests would be better, if your app is likely to undergo frequent changes and would be executed again and again.
15. Reliability Testing
Is costlier than functional testing.
And used to ensure the software is reliable ie it satisfies the purpose for which it was made for the specified time period in the given environment
To be considered reliable an application must show similar results for the same test over time or different versions of the same test should produce similar result
Some of the tests used to check for reliability include Load Testing and Regression Testing.
There’s No Such Thing as a Bug-Free App
No app is perfect.
And its unrealistic to expect a bug free app.
However , you can minimize the volume and severity by rigorously testing the app as thoroughly as possible within the time constraints available.
Get in touch with Intrepid It services-a mobile app development company in Chennai with developers capable of testing your mobile and web apps on all the different browsers and platforms including iOS, Android & Mac OS.