Introduction

More and more businesses have been moving their applications and data to the cloud to avoid building and maintaining on-premises IT infrastructure. In addition to availing computing resources based on the pay-as-you-use pricing model, cloud computing further helps scale resources, improve data security, and accelerate disaster recovery. But no enterprise can leverage the benefits of cloud technologies fully without implementing a robust cloud migration strategy.

After the application is migrated to the cloud, a validation to ensure that the functional flows and data remains intact, along with a simultaneous data migration validation from the physical to the cloud infrastructure needs to be implemented.

It is required to provide the necessary testing expertise to ensure the successful migration of applications and services into cloud hosted environments. Define and deliver an approach to testing the migration from on-premises to private or public cloud hosted (AWS, Azure or similar) or even testing the migration between cloud providers.

Testing Approach for Cloud Migration

‘Moving to cloud’ is a phrase which is growing up fast in the current IT setup. The decision of moving to cloud could vary from an organization to another. It could simply be a step towards digitization, to improve the performance and scalability or to upgrade an aging infrastructure.

Testing in a cloud is not only ensure that the functional requirements are met, but a strong emphasis needs to be laid on nonfunctional testing as well. Different kinds of testing that are performed as mentioned below.

An exclusive approach for the application that is planned to be migrated to Cloud

While the scope, strategy and testing scenarios differ depending on the application and in order to test the migration which includes Application, database and Server migration. There are following testing activities to be performed in various phases at a high level:

Pre-Migration

  • Determine the scope of the project. This is the most time-consuming phase but a critical component of application migration testing. During this phase, thoroughly study the old and new system.
  • Plan out the test scenarios and your migration testing strategy.
  • Understanding of the nature of the business and the relevant application technologies
  • Obtaining information on the necessary software to be installed
  • Evaluation of the appropriate testing tools for test automation, performance testing, security testing, etc.
  • Creation/ modification of new test cases (where required)
  • Creation of Automated test scripts & Performance Test Scripts
  • Obtaining details, access of the new servers and server paths in the target cloud environment

Migration Testing

  • Testing the data during the migration ensures to verify as below
    • all data is present and
    • the data is migrated to the correct locations.

Post Migration

  • Notification email to be sent by the migration team informing the testing team about the readiness of the new environment with attendant details like server names, IP addresses, etc.
  • Once the application migration is complete, you need to perform follow-up tests to determine if cloud migration was correctly executed. This includes analyzing application performance, looking for potential disruptions and reviewing database security are crucial to the transition process.
  • If the test cases are not deemed feasible for automation, then manual test execution will take place
  • Execution of performance/ security test scripts in the pre-prod environment where the applications are migrated
  • Benchmark Performance parameters on the cloud environment for the identified applications by comparing with the Performance baseline on the pre-migration environment.

Functional Testing

Functional testing has to be performed to make sure that the offering provides the services that the user is paying for. Functional tests ensure that the business requirements are being met. Some of the functional tests are described below:

  • System Verification Testing: This ensures whether the various modules function correctly with one another, thus making sure that their behavior is as expected.
  • Acceptance Testing: Here the cloud-based solution is handed over to the users to make sure it meets their expectations.
  • Interoperability Testing: Any application must have the flexibility to work without any issues not only on different platforms, but it must also work seamlessly when moving from cloud infrastructure to another.

Non-Functional Testing

The objective for the Non-functional testing at a high level is stated as – applications and platform performance and other non-functional aspects are at least on par with the source system (pre-migration system). While the platform performance is taken care of in the Infrastructure testing, the applications performance is validated in the non-functional testing. The detailed objectives for the non-functional testing for all applications identified to be in scope include:

  • Validate for Performance/ Stress requirements as per the current benchmarks where available (if not available, against a mutually agreed benchmarks between stakeholders) for the identified applications and batch jobs
  • Validate any other non-functional test requirements (such as Peak load/ Volume, Endurance, and any other performance tests) – as per the benchmarks, where applicable.
  • Validate for Latency testing on Cloud, Targeting infrastructure test on Cloud, Capacity test, Failover test on cloud
  • The performance factors monitored include Processors, Memory Management, TCP / IP (and any other protocols), Network and Disk I/O.
  • Validate for Security requirements (Authorization and Authentication of access to various functionality and information) of the identified applications.

Cloud Testing Tools

Some of the tools used in different kinds of testing performed in a cloud environment are mentioned in this section. The details of the tools are out of the scope of this article.

  • Functional/Regression Test Tools: Some of key testing tools to perform Functional / Regression testing during Cloud migration as below:
    • MF UFT
    • OneTest
    • Soasta
    • Selenium
    • Windmill
    • QEngine
  • Performance Testing tools: Many of the tools are basically used for performance, load, stress testing. Some of these tools below can also be used for functional tests:
    • LoadRunner
    • OneTest Performance
    • SOASTA CloudTest
    • CloudTestGo
    • AppPerfect.
    • Jmeter
    • AppPerfect
  • Security Testing Tools: There are also some security-related tools which are commonly used:
    • AppScan
    • Nessus
    • Burp Suite
    • Wireshark
    • Nmap