Introduction to Portability Testing:
Portability testing is a non-functional testing methodology that determines the ease or difficulty with which a software component or an application can be moved from one environment to another.
The test results obtained from Portability Testing helps in finding out how easily a software component from one environment can be used in another environment.
The term ‘environment’ refers to moving from one operating system to another operating system, one browser to another browser or from one database version to another database version.
A major thumb rule of Portability Testing is that it is to be used only if the software component is to be moved from one environment to another environment.
A measurement of portability is the effort that is required to move the software component from one environment to another environment. One unit of portability measurement is the cost to adopt a software to the new environment compared to the cost of redevelopment of the software.
This tutorial gives you a complete overview of the meaning, objectives, attributes, checklist, advantages, and disadvantages of Portability Testing along with some Practical examples in simple terms for your easy understanding.
What You Will Learn:
Difference between Portability and Compatibility Testing
The points given below will briefly distinguish the differences between Portability and Compatibility.
=> Compatibility deals with whether two or more components can be run in the same environment at the same time without adversely affecting the behavior of each other.
Example: A word processor and a calculator running on the same OS such as Windows 10 can be said to be compatible with each other as running one application will not affect the behavior of the other application.
=> Portability deals with moving the component from one environment to another.
Example: A game running on Windows XP is said to be portable if the same game can be run on Windows 7 without any change in the behavior of the game.
=> In short, portability testing deals with software components across multiple environments, while compatibility testing deals with testing two different applications in the same environment.
The following are the objectives of this testing:
- Determine if a system can be ported to each of the environmental characteristics, such as Processor speed, Disk space & RAM, monitor resolution, OS and browser versions.
- Determine if the look and feel of the application with respect to UI and functional features are similar to multiple OS and multiple browsers.
- This testing helps to determine if the system can be ready for release, especially when there is an awareness that the customers of the product will use multiple operating systems with multiple browser versions.
- This testing is usually performed against a pre-defined set of portability requirements, which help to find the defects that are missed as part of the unit and integration testing of the application.
- Defects found in this testing need to be fixed and delivered as a part of the product release by the Developers.
- This testing is generally performed in an incremental manner throughout the software development lifecycle.
Software testing board has defined certain major attributes of this testing.
- Compatibility or Coexistence
Installability is performed on a software that needs to be installed in a target environment.
The following characteristics are validated as part of Installability testing:
- Operating System requirements for installation.
- Browser requirements for an application usage.
- Memory or RAM requirements.
- Installation procedure.
- Uninstallation procedure.
- Installation interruption exceptions.
- Pre-requisites for software installation.
Adaptability testing is the process of validating if the system is adaptable to each of the target environments. Using common communication standards between multiple systems can help in improving the adaptability of the system as a whole.
Adaptability Testing includes the following characteristics:
- Hardware dependency.
- Software dependency.
- Standard language.
- Communication of system with each of the target environments.
- Dependency encapsulation.
- Dependency representation across multiple systems.
Replaceability is the ability to replace one software component with the another. The component that is replacing the previous component must produce the same results as the previous component on all target environments. Ideally, it should serve the same purpose as the component that is replaced.
Competitive products of the same domain will be the ideal candidates for replaceability as the product that is being replaced can be much cheaper than the existing product of a competitor.
#4) Compatibility or Coexistence:
Compatibility is the ability of two or more components to the existing one in the same environment without adversely affecting the behavior of each other. This testing is especially useful in large systems which include multiple subsystems as part of it.
The subsystems ideally share a common stack area and memory. As a result, an exception occurred on one subsystem can easily propagate to the other subsystem causing the whole application to crash.
Changing the existing component, upgrading to a new component, adapting new interface to the existing component are all the problems that software systems face as time passes by.
Components that fail the compatibility testing requirements have a profound effect on the whole system and hence each component must be tested thoroughly for its effect on the common resources.
Few others on the list:
Apart from these major attributes, portability testing can also include several other attributes such as Interoperability testing and localization testing.
(i) Interoperability: Interoperability testing helps to determine if two or more components can interact with one another without any communication issue.
For Example, data transfer via Bluetooth between a Windows 10 PC and an android based smartphone can be taken up for Interoperability testing.
(ii) Localization: Localization testing is done to ensure if the developed software can be understood in the local language where it is being used. This type of testing is also known as Internalization testing.
For Example, software must be tested in various international languages such as Chinese, Italian, Russian etc.
Portability Testing Checklist
The checklist includes the requirements that are to be tested as part of Portability Test.
Before proceeding with preparing a checklist, it is imperative to make sure that all the individual components of the system are thoroughly tested and integrated with one another to form one large system.
All the objectives of Portability Testing should be kept in mind for the checklist to be an effective and efficient one.
- This testing must fulfill all the portability requirements.
- Testing the application on multiple Operating Systems must be performed.
- Testing the application on multiple browser versions must be performed.
- This testing can be automated for continuous regression testing.
- This testing must be done in an incremental and iterative manner throughout the software development lifecycle.
Pros and Cons
Portability Testing has its own merits as well as demerits like any other testing. Let's take a look at them.
- It helps in identifying the dependencies between multiple components.
- This testing is especially useful in large systems, which have several subsystems that interact with one another.
- This testing is preferred when the customers of a product use multiple operating systems with multiple browser versions.
- Bugs that are missed during unit and integration testing can be uncovered using this testing.
- Installation and uninstallation of software can also be tested as part of this testing.
- The responsiveness and performance of an application can be tested across multiple browsers and multiple operating systems.
- Look and feel of the application on multiple browsers and multiple operating systems can be validated using this testing.
- This testing helps to determine if the functionality of the application is as expected on multiple operating systems and multiple browsers.
- It also helps to eliminate the propagation of errors between multiple systems.
- This testing is generally not preferred when there is a time constraint on the software testing cycle.
- This testing requires a lot of budget from the organization as it requires multiple configurations for testing such as multiple operating systems and multiple browsers.
- All the setup hardware configurations must be available for portability testing to be performed. This means an organization must pay to provide support for maintenance of the setup hardware configurations.
- Portability Testing is a repetitive process which means testers can lose their focus during testing.
- Automation of Portability Testing is a tedious task and requires skill and patience of testers to be successfully implemented.
- Execution of portability tests in a multi-user environment can be very tricky. Also, it requires a lot of data workload for the testing to be successful.
- Storage space for hosting environments can become costly for an organization.
Examples of Portability Testing
Given below are few classic examples:
- Software designed to run on both Windows 7 and Macintosh operating systems.
- Applications designed to run on Apple iOS and google android devices.
- Software designed to be compatible with Microsoft Edge browser and Google Chrome browser.
- Video games designed to run on Windows 10 and Apple Macintosh operating systems.
- Software designed to run on Windows 7 MySQL server and Macintosh Oracle database.
- Installation of software on Windows 10 and Windows XP operating systems.
- Uninstallation of software on Macintosh and Linux operating systems.
Portability Testing is generally preferred when there is a requirement for the software component to be moved from one environment to another environment. This testing helps to uncover the defects that are not identified as part of unit testing and system integration testing.
One major disadvantage of Portability Testing is the amount of budget to be allocated to this testing since it demands the use of multiple hardware configurations. Maintenance and providing support for these hardware configurations can be a very tedious and time-consuming task.
Hence, portability testing is generally preferred when the benefits outweigh the disadvantages.
Hope you would have clearly understood the concept of Portability Testing through this excellent tutorial!