My previous blog, in this series was about the role of test environments in cloud migrations. In this blog, let’s see how functional testing plays a major role in cloud migrations.
Functional testing in cloud hardly varies from that performed in regular test environments, except that test cases may have to rewritten to ensure they are cloud-ready (functionally decomposed).However from a business process validation perspective, there will be no differences in the test scenarios or test steps. This is unless new features or functionality have been added or planned to be included as part of the cloud hosting strategy. In most situations, the same test design techniques can be applied to both web-based application and that hosted in a cloud environment. However, a specific set of tests will have to be designed to test those features specific to cloud and the application’s ability to support broad network access, and proposed benefits.
End-to-End (E2E) Testing
While the line of separation between E2E and system integration testing (SIT) is blurred in a web-based application testing, the difference is clear in a cloud-based environment. Unlike a web based application environment, risk of failure is greater in large organizations, where the infrastructure, processes and the integration between different business units is complex.
While SIT mostly focuses on testing interfaces, E2E testing must focus on identifying and testing combinations of systems and business process mimicking real business scenarios. Tests should be run to validate potential scenarios such as:
- Data inconsistency (different data sources sending / receiving different data formats) at different points of time
- Potential mistakes in interpreting data due to human dependencies (typical issues as seen in the case of internationalization of data / applications)
- Data schema – consistency of unique keys, primary keys, data type and data size across different applications, tables and data bases
E2E testing should not be restricted to functional testing; it should also cover non-functional testing.
It is recommended that tests are also designed to:
- Validate that the service and business processes are aligned
- Validate that permitted configurations and amount of customization are thoroughly tested
- Validate that the required platforms are supported
- Validate integration with non-cloud based systems
- Validate that exception and alternative paths are adequately tested
- Validate that changes to the environment do not negatively impact application functionality or availability (especially in public cloud when updates are done by cloud service provider)
Also, look out for my next blog, in which I shall share my experience with performance testing in cloud and non-cloud environments.