As per a report published by Forbes, 83% of enterprise workload will move to the cloud by 2020. This includes Public, Private and Hybrid cloud workloads. Today this number stands at 68%. These are good indicators of how companies are making conscious efforts to drive their IT transformation by maximizing the cloud adoption. There are several changes that the companies make that underline the IT transformation – one of the important change is to write cloud native applications – applications which are purposefully written for cloud infrastructure. Now, that is something which QA teams take note of for their testing strategy.
At Mindtree, we engage with our clients on various aspects of quality engineering and lately more on cloud computing, migration, cloud native applications, containers and impact on testing due to all of them. In this article, I will first discuss little bit about cloud native applications and why they are the built the way they are, and what QA teams should consider for testing such applications.
Cloud native apps are architected to run in the elastic and distributed nature of cloud computing platforms. Key features of cloud native applications are –
- Modular – based on micro-service architecture
- Leverage elasticity of the cloud infrastructure
- Always current and highly available
- Easily work with virtualized environment
- Easy connection with compute, storage and networking resources of the cloud
- Extreme automation
Considering the above mentioned characteristics of cloud native applications, the QA strategy should focus on –
|Factors to focus on||Brief description|
|Scalability||Auto-scaling is a very important feature of cloud computing services. The native apps have to be aware of the scalability requirements due to dynamic load patterns and include them in the test strategy.|
|Dynamic Environments||Parts of the applications can be deployed in various cloud infrastructure, in some cases across various cloud service providers. From testing perspective, consider latency, key features, fail-overs and recovery|
|Resiliency||It’s not only important to design for failure but also test for recovery. Testing should consider traffic routing during overloading and how does load balancing effect the performance. Also, check how user requests are handled when some features are not available.|
|Automation||For cloud native apps, automation is the key lever that brings the most impact in terms of speed at which software is deployed. Testing has to simultaneously test the deployments, perform a selected set of functional tasks and undertake negative task based scenarios. Micro-services on one hand, makes the integration testing difficult, container services like Docker which package everything (code, configuration, OS, test data) in containers makes it easier for deployment. Containers make life easier for test automation as well. (I will write a separate article on Containers and how they affect software testing)|
|Metrics||Apart from measuring all relevant QA metrics, check for their achievability and search ability for troubleshooting during downtime.|
Micro-services based architecture makes faster deployment of cloud native applications. Adoption of CI/CD tools and practices is mandatory to keep pace. In this scheme of things, testing plays an extremely important role. Having said that, developing and testing of cloud native application come with its unique set of challenges such as keeping data persistency across various services, integration and seamless coupling of multiple micro services for the end customer. Mindtree is doing some very differentiating work in this space. Please reach out to me for more information.