Many times, it happens in software organization that application is upgraded or moved to the different server. It means that either the application in moving to new technology or the application has moved to new server location or database has been moved to the different database server. And, this is where Migration Testing comes into account.
Talking in testing perspective, we can say that after migration we need to test that everything is working as it was working before migration and all the functionality in the new system is working as it was in the existing system.
One more thing to be noted is that after application migration, the tester needs to test the application with old data and see if it is behaving in the same way as it was behaving before it was migrated.
We can define migration testing as the process of verification of migration from an existing system to new system with minimal disruption and other loss which can occur due to migration and maintaining the same behavior of the application in the new system.
Need for Migration Testing
We know that application migration to the new system is now occurring for many of the applications. The reason may be different. It may be due to movement from old technology to new technology, maybe code optimization or movement of data in a new server or there may be other reasons for it. Some of the reasons are as given below:
- Whatever is the reason for application migration, there should be minimum inconvenience or disruption to the end user which may be in the form of downtime or loss of data. To ensure proper flow of the application as it was before migration, migration testing is required.
- It is not that we only check the functionality of the application in migration testing, but also check that migrated application is compatible with the new environment with all possible combination of required hardware and software.
- Not only functionality, we need to see defects related to data also, as during migration maximum chance of issue lies with the data itself. It needs to be identified as soon as possible and fixed during migration testing.
- Not only this, we need to see the performance aspect of the application that has been migrated to how much time page is taking to load, how queries responding to database etc.
- We need to check whether the performance of the application has been impacted by migration and need to take care if it is degraded.
- Not only this, we should do environmental check to ensure that all the hardware, software, servers are synchronized and working fine in synchronization with each other and application is performing as per expectation in the new environment in which application has been migrated.
Migration Testing Stages
Migration testing is done in various stages. Let us discuss them one by one. But before that, we need to understand that migration testing is performed before and after the migration is done. Different stages of migration testing or we may say that different phases of migration testing are as given below.
- Pre-Migration Testing(Before migration testing is actually done)
- Migration Testing
- Post Migration Testing(After migration testing is done)
Considering the risk factor or other reasons involved in migration testing, testers are also supposed to do the following testing
- Backward Compatibility Verification
- Rollback Testing
Pre-migration Testing
Pre-migration testing is done before migration is done. For simpler applications, there is no much thing to do but for bigger applications or complex applications, before doing actual migration, testers are required to do set up activities known as pre-migration testing.
One of the most important things to be taken care of in this phase is that there should be data mapping between old application and new application. Testers are required to focus on changes that have to be performed in the new application and check that migrated application is behaving accordingly and ensure that application and database are behaving in the same way as it was behaving before migration for the part in which there was no modification.
Table structures need to be taken special care of and there should be no modification in the table structure in the migrated application unless the new update is required. The data flow of the application should be proper and functionality should work as it was working before migration. Proper planning of the migration is done in this phase.
Migration testing
Document related to migration is also reviewed by the testing team who is performing migration testing. Testing team verifies if the document is clear and there is no complexity to perform the activities related to migration. Any kind of documentation error whether it is related to the application, database, server and operating system, can be reported by the testing team.
Time taken to migrate the system completely known as downtime is recorded properly and it is very useful when the application is launched in production. Once the migration activities are completed as per migration documentation, a basic check of application functionality is done and basic database checkups are done to ensure that database is properly connected to the application.
Post-migration testing
Now after the migration is completed, testers are required to do detailed testing for the migrated application. Test cases for the old systems are executed on the new system to ensure that functionality of the application is working fine on both old data and newly added data and performance of the application has not degraded.
Testers are required to see that data is not lost and the number of the records from the database is appearing, as per expectation. Testers are required to check that the tabular structure in database and application directories and folders are properly updated in the new system.
The scope of testing in post-migration testing is very large. Testers are recommended to perform automation testing to reduce the time of test case execution and in turn, reduce time to check the functionality of the application.
Types of Migration
Following are the types of migration which generally happens during migration of the application which will also help us to understand how migration is done.
- Application Migration
- Database Migration
- Server Migration
- OS Migration
Application Migration
Application migration as the name suggests is a type of migration in which the application itself is moved to new environment from one platform to another platform. Example of application migration is migrating an application form ASP to ASP.NET technology.
Now since we are little familiar with application migration, we should understand what migration testing will be done for the application migration and what are the things that should be kept in mind while doing migration testing.
Testers are required to do following activities for doing application migration testing.
- Do requirement analysis and be familiar with the application.
- Finalize the scope of testing
- Be familiar with the new requirement for migrated application and test the migrated application accordingly.
Database Migration
The not only application is migrated, the database is also migrated from one database to another database. The thing to be kept in mind while doing database migration is that first of all application should be stable and working perfectly and second thing we have to see that database is also up to the mark and format of the data type of the data value of the data etc are all well organised so that it does not create any problem after being exported to New database. Example of database migration is Migration from RDBMS to MongoDB. Testing activities during database migration include the following
- Verify that field types, values, constraints or any other mapping of the field is not changed or modify during migration of database.
- Perform all the activities to be done during Pre-migration and Post-migration.
- Check if the data has been migrated properly.
Server Migration
In this type of migration, server data is moved from one server to another server which involves migration of configuration to the new server. Example of server migration is the migration of all application from Windows to mainframe server. Actions to be taken during testing activities during server migration are given as below
- Ensure that all the directory names, file and folder names, some folder names etc. does not change on the new server.
- Verify that data performance is up to the mark.
- Check the compatibility of a new server with the migrated server data.
Testing activities during server migration are given as below.
- Verify the response from the server for the request from the application.
- Verify that the system is working as it was working before migration and is stable.
Operating System Migration or OS migration
OS migration is the most difficult type of migration where an application is moved from one operating system to another operating system. This type of migration generally involves lots of changes to complete this. It may be done to decrease the cost of operation or maintenance or increase speed or maybe for productivity or security or to implement any other feature. Example of OS migration is the movement of application from Windows operating system two Linux operating system. Testing activities in this type of migration may include:
- Verify that application functionality does not show any change in behavior.
- Verify that application and database performance does not degrade.
- Focus on the variation of flow in the application with the change in operating system.