Speaker

Dhairya Thakkar is An accomplished IT engineer with 15years of experience in IT Industry in Test Automation
Consulting and software quality management. Have exposure in working across different geographies and domain, currently working as Test Manager at Cognizant
Technology solutions. Expert in establishing strong E2E capability using optimal and process oriented approach which will address challenging business requirements of clients with expertise in specific functional and non-functional testing areas.

Title: Cloud Testing – Let’s test applications in cloud platform and how different is our approach

Essentially as more and more applications are being developed and hosted on cloud platforms like AWS, GCP, Azure, Digital Ocean and many more testing around these applications and their infrastructure also becomes essentially more complicated. Where cloud platforms optimise application deployments and performance as well as sunsetting of these applications with ease, the need for testing the functionality on these platforms is the key task 

 

We have made an effort to effectively test application hosted in cloud and its integration with AWS managed services. 

 

Problem Definition:

 

How does our ecosystem look?

Cloud Testing is testing activities around applications hosted on cloud platform which unlike on premise
applications have features like graceful scale up and scale down of application pods and relies heavily on containerisation platforms like docker or podman and orchestration environment like kubernetes or docker swarm or serverless platforms like AWS Lambda and adheres to tenets of Dev-Ops.

Example A REST API microservice (irrespective of its technology stack) needs external resources like Database hosted in the cloud often called RDS and CDK to have support so that applications can talk to this essential piece of infrastructure.

 

Challenges of testing in the Cloud?

Cloud environment comes with not just advantages but its own set of challenges and one of the key aspects are permissions and roles which decides what operations are allowed by applications to perform on AWS managed resources. Often such issues like applications not having permission to call databases (hosted on cloud) or publish a message into a queue(SQS queues on AWS platform) form a bottleneck to faster delivery and can be identified only in an integrated environment. But can we automate such scenarios?

 

How do you manage the cloud platform?

Cloud testing is not just about applications testing it includes an AWS platform with fine grained access control to all AWS managed resources to an individual in different environments which reflects our test beds where our applications are deployed. Each environment has a different goal to assess applications. While some focus on functional aspects other on non functional areas like security and performance including AWS configuration with these applications.

 

Example: Assessing an application just on functionality is not enough, cloudformation template for that
application must be assessed and all AWS resources which are also created as part of that application stack. Like a service with its necessary resources like RDS, SQS, SNS or S3 etc.

 

Key Solution Description:

 

What comes handy in this ecosystem?

Usage of cloud development kit, CDK is an open source software development framework for creating and defining cloud resources which hang together to give your application a structure through which it operates and executes its intended task. 

 

CDK library under cloud platform provides Test Constructs which comes with a bunch of fine grained assertions and test utils around cloud infrastructure. For example a service deployed on a cloud platform has also created associated SQS or SNS (asynchronous message processing infrastructure in AWS) when deploying the template.

 

Advantages of using Cloud Development Kit for automation?

 

The main advantage of testing applications in the cloud is they support a variety of DSL’s. We have used Java here, however the CDK library supports a wide range of languages like python, Go, Typescript, javascript etc. It also does not require that both development code and test code be in the same DSL and can be implemented based on individual’s choice.

 

Example: Dev code can be written in Java and Test code can be written in Python, however this is just for
effectiveness of CDK but in actual Industry is moving away from it and development code and test code shares the same technical stack and resides in the same repository.

 

CDK also provides an effective library to call on all AWS resources which can be orchestrated for test purposes in any environment and any DSL.

 

Key Benefits:

  • If effectively utilized identifies majority of issues in initial round of functional testing
  • AWS CDK comes free and does not incur any license cost
  • Provides effective way of invoking AWS components programmatically rather than completely verifying manually
  • Most of the tests which one performs in the AWS console can be automated without opening the console at all
  • All tests run as part of the pipeline in various environments validating functionality is intact
  • Reduces manual effort on validating tests around AWS managed resources