Compatibility means how one thing blends with the other. In the context of software testing, backward compatibility checks whether a newer version of a product is compatible with an older version. Every software product is bound to change according to the demands of the users. Hence tasks performed on an older version must work as before in the newer versions as well. This is known as backward compatibility.
Backward compatibility is an important test process from the perspective of the end user. The idea is to ensure customer satisfaction in terms of performance, security and overall functionality which is done by testing the application across different browsers, hardware configurations, operating systems and different network configurations.
While we discuss about backward compatibility testing, we see a great deal of changes in our web or mobile applications or mobile operating system versions as well. With each passing phase of technology, tech giants are competing against each other in order to excel. Software companies like Samsung, Nokia, Blackberry, iPhone are in a race to retain maximum market segment possible. Hence with each version being released, each new feature being added, testing becomes a crucial factor and therefore backward compatibility testing serves as a prerequisite for deploying the newest version in the market.
Some of the key points worth considering during backward compatibility test, are:
Verify the old and new version compatibility in terms of their API’s.
Validate security aspects of the device.
Whether the newer version is working fine with old components like hardware, network configurations, battery etc.
The newer version does not affect user data or any other information on the user’s device.
Graphics being an important part of a mobile device should be appealing as well as offer an interactive interface.
Compatibility testing is of the following types :
Forward Compatibility Testing - This checks whether the software is compatible with the newer versions.
Backward Compatibility Testing - This aims to verify if the new version is compatible with the older version.
Compatibility testing is thus a kind of non-functional testing, in which the aim is to ascertain whether our software product is robust enough to run across different browsers, databases, operating systems etc.
Types of Compatibility Testing :
Hardware -Quite obvious that we check our software product with various hardware configurations.
Operating system -Software Compatibility is measured by testing it on various operating systems - Windows, Linux, Unix, Mac OS etc.
Software -Checks for compatibility with other software that may be needed to work with the product under test. Other softwares may be MS office, MS Outlook etc.
Network -The product is checked in a network based environment with aspects such as bandwidth, operating speed etc.
Browsers -Tests whether a product is compatible across various browser platforms - Chrome, Mozilla, Firefox, safari etc.
Device -Response to various devices like printer, scanner, bluetooth, USB port devices etc, are also checked.
Mobile -Checking compatibility on mobile platforms like Ios, Android, windows etc.
Versions -Checking software product with different versions like windows 7, windows XP, windows 7 SP1, windows 7 SP2 etc.
Process of Compatibility Testing :
The first and foremost thing is to define or set up the platform or environment, our application is expected to work on.
Expert knowledge about the various platforms is necessary to understand how and what the product is going generate and how the platform chosen, functions.
Different configurations are set up for testing the software's compatibility with various devices, networks etc.
After the testing is done, defects are reported if any.
Preventing changes in API :
Compilation -Developers are expected to keep API backwardly compatible. When a program compiles, any changes that are made whether in method signatures, interfaces etc. Will be immediately flagged by the compiler.
Unit Tests -Changes made in a module are verified by developers to check that the change is backwardly compatible or not.
In a dynamic world where change is inevitable, it is important to plan our tasks in a manner that does not conflict with other things. So in this context, when we talk about backward compatibility, it is important to verify and validate every scenario.