TESTING
CLOUD NATIVE
APPLICATIONS
Lipika Dugar
lipikad@thoughtworks.com
@LipikaDugar
vodQA
MONOLITH VS CLOUD NATIVE
APPS
MONOLITH DEFINITION OF TESTING
Testing is process to verify product after development and before deployment
DEFINITION OF TESTING IN CLOUD NATIVE ERA
Testing is process to verify product at every stage “You are always Testing”
Evolution of Cloud Native: CNCF (2015)
Containers
Cloud
Native
Open
Source
IaaS
PaaS
Open
Source
PaaS
Virtualiza-
tion
2000 2001 2006 2009 2010 2011
Non-
Virtualized
Hardware
2013 2015
IaaS
WHAT IS
KUBERNETES?
Kubernetes is a portable, extensible, open-
source platform for managing
containerized workloads and services, that
facilitates both declarative configuration
and automation. It has a large, rapidly
growing ecosystem. Kubernetes services,
support, and tools are widely available.
KUBERNETES
VS
DOCKER
SWARM
Docker Swarm Kubernetes
No Auto Scaling Auto Scaling
Less experience
with Production
Deployment at
Scale
Supports
Deployment at
scale
Deploys
containers much
faster
Provides faster
scaling on
demand
KUBERNET
ES
101
Pod Set of containers deployed to single node
Kubelet Container Agent
etcd Key value Store
Kube-Proxy A load balancer for pods
Cluster Set of Nodes
Node Performs the task assigned by Control Pane
Control
Pane/
Controller
manager
This is where all administrative tasks begin
Persistent
Volume
Storage containing data which can be
accessed to the containers in a pod
Service Way to deploy an application running in pods
to network service
Deployment Monitors the pods and responsible to
automatically spin up the pods
KUBERNETES
ARCHITECTURE
COMPONENTS OF
KUBERNETES
ARCHITECTURE
• Master Nodes
• Worker Nodes
• Distributed Key Value Store
(etcd)
KUBERNETE
S
ARCHITECT
URE
DIAGRAM
Kubernetes architecture diagram (source: Wikipedia)
FEATURES
OF
KUBERNETE
S
AUTOSCALING AUTOMATED
ROLLOUTS &
ROLLBACK
AVAILABILITY
NETWORKING LOAD
BALANCING
SELF HEALING
KUBERNETES IS MORE THAN
JUST A CONTAINER
ORCHESTRATION TOOL—
IT’S “SWISS ARMY KNIFE” WITH
VARIOUS TOOLS AND SERVICES
KUBERNET
ES AND
SOFTWAR
E TESTING
Decreased Dependencies on Shared
Environments
Ability to get to a complicated Failure State
quickly
Automation made easier
Cheap disposable Environments
Direct Access to Logs, Monitoring
Encourages “Shift Left Testing” Model
MEASURES
IN CLOUD
NATIVE
Scalability
Resiliency
Robust Deployment
Resource Utilization
SCALABILITY
Ability to increase or decrease
resources based on real time
changing demand.
RESILIENCY
Ability of the system to react to failures
while still being functional
ROBUST DEPLOYMENT
ENSURE SMART
TEST SUITES TO
RUN DURING
DEPLOYMENT
FOCUS ON
VALUABLE AREAS
NOT 100%
AUTOMATION
RESOURCE UTILIZATION
Resources are utilized
based on certain rules
via a central
orchestrating process.
Reduces the costs
associated with
maintenance and
operations
CLOUD
NATIVE
AND
SOFTWAR
E TESTING
A/B Testing
Performance Testing
Security Testing
E2E Automation
A/B TESTING
Zero downtime
Real time users traffic testing
Easy and quick rollback
Comparison with Production
Environment
PERFORMANCE
TESTING
Request and
Response time
System Monitoring
Tools
Logging and
Tracing Tools
Test Data across
nodes and
containers running
in the cluster
Analyzing results
external and
internal to clusters
SECURITY
TESTING
SECURE THE APPLICATION OR DATA
HOSTED ON CLOUD OR THE
INFRASTRUCTURE ASSOCIATED WITH
THE CLOUD
E2E TEST
(AUTOMATION)
• Using Selenium Grid for distributing
your tests. Its lot better if its deployed
via Kubernetes
• Selenium 4 now offers more advanced
monitoring by enabling “tracing
capability
OBSERVABIL
ITY METRICS
TRACIN
G
LOGS METRI
CS
OBSERVABILITY
It is a measure of how well internal states of a system
can be inferred from knowledge of its external outputs.
It helps bring visibility into systems. – Wikipedia
DISTRIBUTED
TRACING
https://github.com/manoj9788/tracing-selenium-grid
TOWARDS DELIVERING
HIGH QUALITY SOFTWARE
EMBRACING THE NEW
DYNAMIC CHANGE
LEVERAGING THE
TRADITIONAL TESTING
TECHNIQUES
THANK YOU
Lipika Dugar
lipikad@thoughtworks.com
@LipikaDugar

Testing cna