SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Cloud Native Testing, 2020 Edition:
A Modern Blueprint for Pre-production Testing of
Microservices
Jon Edvald, CEO & Co-founder
@JonEdvald
What we’ll talk about
• Walk through di erent types of tests
• Deep-dive on integration tests
• Spinning up test environments
• Good practices for integ/end-to-end tests
• Scaled-down blueprint and quick summary
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
unit tests
• Crucial for most projects, but…
• Often overused. Consider
functional tests where
applicable.
• Use for stateless, side-effect
free functions.
• Don’t strive for 100% coverage.
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
fuzz tests
• Good complement to unit
tests, for stateless functions.
• Esp. important for e.g. C/C++
code (that may not be
memory safe).
• Use frameworks/sanitizers to
facilitate.
property
based tests
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
functional tests
• Often preferable to unit tests,
since they have broader coverage
and mimic real-world use.
• Should still be fast to run, and
require limited setup/scaffolding.
• Only use fakes/mocks/stubs when
necessary, considering integ tests
instead.
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
benchmarking
• Use for specific performance-
sensitive functions, and maybe
full test runs.
• Translating results to test
successes or failures can be
difficult.
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
contract testing
• Fast alternative to integration
testing, but…
• Provides limited coverage, only
tests at a schema level.
• Doesn’t really test actual code,
how data is processed etc.
• Pact is a good framework for this.
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
config tests
• Very important for Kubernetes
(too easy to do the wrong thing).
• Apply org policies for applications
and infrastructure.
• Use e.g. conftest, OPA, and/or
Terraform Sentinel.
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
security tests
• Again, very important for
Kubernetes, for the same
reasons.
• Includes image/CVE
scanning, black box
scanning, cluster linters.
• Try e.g. Starboard, Claire,
clusterlint.
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
shadowing
• Quite powerful, but
difficult to get right.
• Service meshes can help a
lot with this.
• Easiest for stateless / side-
effect free / independent
API calls.
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
• Great way to thoroughly test
a system, from code through
configuration.
• Can be run on your full stack,
or individual services talking
to other production APIs.
• Has been frowned upon due
to slow feedback loops, but
there are ways to accelerate...
integration testing /
end-to-end testing
Integration testing
cloud native applications
Test environments
• Spinning up preview environments implicitly
tests your con guration.
• Running tests in those environments provides a
lot of coverage.
• Tools like garden, Flux, Okteto can help with
the setup, and some also facilitate running tests
Instrumentation
• Observability helps a lot when
debugging.
• Emit plenty of tracing events across
your code with OpenTelemetry.
Managing state
• We need to make sure test suites don’t step
over each other.
• Partition your data, by e.g. creating a test
organization/project/tenant/user for each suite,
then cleaning up.
• Alternative: Add metadata to requests/data
and clean up a er.
Accelerating tests
• Safely run multiple test suites in parallel
with partitioned data.
• Keep a test environment running while
developing.
• Trigger individual tests/suites directly from
dev machine instead of waiting for a full
pipeline.
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
chaos testing
• Test the resilience of your
applications.
• Suggest using in testing envs,
growing to all environments incl.
production.
• Start by running manually,
watching for failures.
• Use tools and services designed
for this, e.g. Gremlin, Litmus.
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing exploration
• Important, especially with new
features/applications and when
test coverage isn’t very high.
• May make sense as part of pre-
prod review, depending on the
application and team, and
whether you have preview
environments.
chaos testing
exploration
monitoring
A/B testing
canarying
feature flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
A/B testing &
feature flagging
• Another approach to
progressive delivery.
• May need a little work on
application level, but tools like
LaunchDarkly can help.
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
canary rollouts
• Generally good practice. How
much to rely on it depends on
your application and processes.
• Service meshes are helpful here,
and tools like Flagger.
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
monitoring
• Definitely do this! Monitor resource
usage, infra, clusters etc.
• Use for prod + staging at least, but
ideally any shared dev/test clusters.
• Prometheus is good for Kubernetes,
or commercial services.
chaos testing
exploration
monitoring
A/B testing
canarying
feature
flagging
config tests
benchmarking
integration testing
shadowing
fuzz tests
unit tests
property
based tests
contract testing
functional tests
security tests
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
observability
end-to-end testing
observability
• Great for debugging.
• Use in all environments if possible,
also handy during dev + testing.
• Use e.g. Jaeger, Honeycomb,
Lightstep.
And now to summarize:
our testing blueprint
chaos testing A/B testing
canarying
feature
flagging
config tests
benchmarking
shadowing
fuzz tests
property
based tests
contract testing
TESTING IN DEV
PRE-PRODUCTION TESTING
TESTING IN PRODUCTION
end-to-end testing
unit tests
functional tests
security tests
integration testing
observability
exploration
monitoring
Further reading
• Testing microservices the sane way—Cindy
Sridharan
• Unit testing is overrated—Alexey Golub
• Write tests. Not too many. Mostly integration.—
Kent C Dodds
• Contraption Maker - 🙃
• garden.io / medium.com/garden-io
Thank you!
Jon Edvald
jon@garden.io
@JonEdvald

Mais conteúdo relacionado

Mais procurados

Exploring the GitHub Service Universe
Exploring the GitHub Service UniverseExploring the GitHub Service Universe
Exploring the GitHub Service UniverseBjörn Kimminich
 
Is your kubernetes negative or positive
Is your kubernetes negative or positive Is your kubernetes negative or positive
Is your kubernetes negative or positive LibbySchulze
 
Importance of GCP: 30 Days of GCP
Importance of GCP: 30 Days of GCPImportance of GCP: 30 Days of GCP
Importance of GCP: 30 Days of GCPAnshTyagi27
 
Google Cloud Build - Sfeir Lunch Janvier 2019
Google Cloud Build - Sfeir Lunch Janvier 2019Google Cloud Build - Sfeir Lunch Janvier 2019
Google Cloud Build - Sfeir Lunch Janvier 2019Gaëlle Acas
 
Cloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOpsCloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOpsWeaveworks
 
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021William Caban
 
Agnostic Continuous Delivery
Agnostic Continuous DeliveryAgnostic Continuous Delivery
Agnostic Continuous DeliveryHervé Leclerc
 
Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5Marcin Grzejszczak
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsSonja Schweigert
 
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...VMware Tanzu
 
2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainingsHaufe-Lexware GmbH & Co KG
 
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a ProSkip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a ProCodefresh
 
Gitops: a new paradigm for software defined operations
Gitops: a new paradigm for software defined operationsGitops: a new paradigm for software defined operations
Gitops: a new paradigm for software defined operationsMariano Cunietti
 
Docker New York City: From GitOps to a scalable CI/CD Pattern for Kubernetes
Docker New York City: From GitOps to a scalable CI/CD Pattern for KubernetesDocker New York City: From GitOps to a scalable CI/CD Pattern for Kubernetes
Docker New York City: From GitOps to a scalable CI/CD Pattern for KubernetesAndrew Phillips
 
CI/CD for everyone else
CI/CD for everyone elseCI/CD for everyone else
CI/CD for everyone elseVictor Morales
 
DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...
DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...
DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...Gene Kim
 
Multi-cloud CI/CD with failover powered by K8s, Istio, Helm, and Codefresh
Multi-cloud CI/CD with failover powered by K8s, Istio, Helm, and Codefresh Multi-cloud CI/CD with failover powered by K8s, Istio, Helm, and Codefresh
Multi-cloud CI/CD with failover powered by K8s, Istio, Helm, and Codefresh Codefresh
 
Continuous Deployment To The Cloud
Continuous Deployment To The CloudContinuous Deployment To The Cloud
Continuous Deployment To The CloudMarcin Grzejszczak
 

Mais procurados (20)

Exploring the GitHub Service Universe
Exploring the GitHub Service UniverseExploring the GitHub Service Universe
Exploring the GitHub Service Universe
 
CICD with Jenkins
CICD with JenkinsCICD with Jenkins
CICD with Jenkins
 
Is your kubernetes negative or positive
Is your kubernetes negative or positive Is your kubernetes negative or positive
Is your kubernetes negative or positive
 
Importance of GCP: 30 Days of GCP
Importance of GCP: 30 Days of GCPImportance of GCP: 30 Days of GCP
Importance of GCP: 30 Days of GCP
 
Google Cloud Build - Sfeir Lunch Janvier 2019
Google Cloud Build - Sfeir Lunch Janvier 2019Google Cloud Build - Sfeir Lunch Janvier 2019
Google Cloud Build - Sfeir Lunch Janvier 2019
 
Cloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOpsCloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOps
 
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
 
Agnostic Continuous Delivery
Agnostic Continuous DeliveryAgnostic Continuous Delivery
Agnostic Continuous Delivery
 
Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5Continuous Deployment of your Application @jSession#5
Continuous Deployment of your Application @jSession#5
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
 
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
 
2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings
 
GitOps w/argocd
GitOps w/argocdGitOps w/argocd
GitOps w/argocd
 
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a ProSkip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
 
Gitops: a new paradigm for software defined operations
Gitops: a new paradigm for software defined operationsGitops: a new paradigm for software defined operations
Gitops: a new paradigm for software defined operations
 
Docker New York City: From GitOps to a scalable CI/CD Pattern for Kubernetes
Docker New York City: From GitOps to a scalable CI/CD Pattern for KubernetesDocker New York City: From GitOps to a scalable CI/CD Pattern for Kubernetes
Docker New York City: From GitOps to a scalable CI/CD Pattern for Kubernetes
 
CI/CD for everyone else
CI/CD for everyone elseCI/CD for everyone else
CI/CD for everyone else
 
DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...
DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...
DOES14 - Gary Gruver - Macy's - Transforming Traditional Enterprise Software ...
 
Multi-cloud CI/CD with failover powered by K8s, Istio, Helm, and Codefresh
Multi-cloud CI/CD with failover powered by K8s, Istio, Helm, and Codefresh Multi-cloud CI/CD with failover powered by K8s, Istio, Helm, and Codefresh
Multi-cloud CI/CD with failover powered by K8s, Istio, Helm, and Codefresh
 
Continuous Deployment To The Cloud
Continuous Deployment To The CloudContinuous Deployment To The Cloud
Continuous Deployment To The Cloud
 

Semelhante a Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Testing of Microservices

Infrastructure as Code for Network
Infrastructure as Code for NetworkInfrastructure as Code for Network
Infrastructure as Code for NetworkDamien Garros
 
Microservices Testing at Scale
Microservices Testing at ScaleMicroservices Testing at Scale
Microservices Testing at ScaleVMware Tanzu
 
Agile Software Testing the Agilogy Way
Agile Software Testing the Agilogy WayAgile Software Testing the Agilogy Way
Agile Software Testing the Agilogy WayJordi Pradel
 
Automated testing - how?
Automated testing - how?Automated testing - how?
Automated testing - how?Markko Paas
 
Test automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerTest automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerRobbie Minshall
 
Service engineering
Service engineeringService engineering
Service engineeringQingsong Yao
 
4&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-5
4&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-54&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-5
4&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-5hemasubbu08
 
Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
 Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S... Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...Skytap Cloud
 
Comprehensive Performance Testing: From Early Dev to Live Production
Comprehensive Performance Testing: From Early Dev to Live ProductionComprehensive Performance Testing: From Early Dev to Live Production
Comprehensive Performance Testing: From Early Dev to Live ProductionTechWell
 
Cloud-based Test Microservices JavaOne 2014
Cloud-based Test Microservices JavaOne 2014Cloud-based Test Microservices JavaOne 2014
Cloud-based Test Microservices JavaOne 2014Shelley Lambert
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)CIVEL Benoit
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1CIVEL Benoit
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test AutomationSauce Labs
 
Quality Loopback
Quality LoopbackQuality Loopback
Quality LoopbackOmar Bashir
 
Automated Testing at The Speed of Headless by Alissa Lydon and Samantha Coffman
Automated Testing at The Speed of Headless by Alissa Lydon and Samantha CoffmanAutomated Testing at The Speed of Headless by Alissa Lydon and Samantha Coffman
Automated Testing at The Speed of Headless by Alissa Lydon and Samantha CoffmanSauce Labs
 
Database Unit Testing Made Easy with VSTS
Database Unit Testing Made Easy with VSTSDatabase Unit Testing Made Easy with VSTS
Database Unit Testing Made Easy with VSTSSanil Mhatre
 
Tools for Software Testing
Tools for Software TestingTools for Software Testing
Tools for Software TestingMohammed Moishin
 
Using feature flags in an ASP.NET Core app on Azure
Using feature flags in an ASP.NET Core app on AzureUsing feature flags in an ASP.NET Core app on Azure
Using feature flags in an ASP.NET Core app on AzureJoonas Westlin
 
Embracing Disruption: Adding a Bit of Chaos to Help You Grow
Embracing Disruption: Adding a Bit of Chaos to Help You GrowEmbracing Disruption: Adding a Bit of Chaos to Help You Grow
Embracing Disruption: Adding a Bit of Chaos to Help You GrowPaul Balogh
 

Semelhante a Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Testing of Microservices (20)

Infrastructure as Code for Network
Infrastructure as Code for NetworkInfrastructure as Code for Network
Infrastructure as Code for Network
 
Microservices Testing at Scale
Microservices Testing at ScaleMicroservices Testing at Scale
Microservices Testing at Scale
 
Agile Software Testing the Agilogy Way
Agile Software Testing the Agilogy WayAgile Software Testing the Agilogy Way
Agile Software Testing the Agilogy Way
 
Automated testing - how?
Automated testing - how?Automated testing - how?
Automated testing - how?
 
Test automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerTest automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application Server
 
Service engineering
Service engineeringService engineering
Service engineering
 
4&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-5
4&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-54&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-5
4&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-5
 
Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
 Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S... Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
 
Comprehensive Performance Testing: From Early Dev to Live Production
Comprehensive Performance Testing: From Early Dev to Live ProductionComprehensive Performance Testing: From Early Dev to Live Production
Comprehensive Performance Testing: From Early Dev to Live Production
 
Cloud-based Test Microservices JavaOne 2014
Cloud-based Test Microservices JavaOne 2014Cloud-based Test Microservices JavaOne 2014
Cloud-based Test Microservices JavaOne 2014
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation
 
Quality Loopback
Quality LoopbackQuality Loopback
Quality Loopback
 
Automated Testing at The Speed of Headless by Alissa Lydon and Samantha Coffman
Automated Testing at The Speed of Headless by Alissa Lydon and Samantha CoffmanAutomated Testing at The Speed of Headless by Alissa Lydon and Samantha Coffman
Automated Testing at The Speed of Headless by Alissa Lydon and Samantha Coffman
 
Database Unit Testing Made Easy with VSTS
Database Unit Testing Made Easy with VSTSDatabase Unit Testing Made Easy with VSTS
Database Unit Testing Made Easy with VSTS
 
Testing in the cloud
Testing in the cloudTesting in the cloud
Testing in the cloud
 
Tools for Software Testing
Tools for Software TestingTools for Software Testing
Tools for Software Testing
 
Using feature flags in an ASP.NET Core app on Azure
Using feature flags in an ASP.NET Core app on AzureUsing feature flags in an ASP.NET Core app on Azure
Using feature flags in an ASP.NET Core app on Azure
 
Embracing Disruption: Adding a Bit of Chaos to Help You Grow
Embracing Disruption: Adding a Bit of Chaos to Help You GrowEmbracing Disruption: Adding a Bit of Chaos to Help You Grow
Embracing Disruption: Adding a Bit of Chaos to Help You Grow
 

Mais de OlyaSurits

A Better Way for Applications to Communicate With Your Mesh
A Better Way for Applications to Communicate With Your MeshA Better Way for Applications to Communicate With Your Mesh
A Better Way for Applications to Communicate With Your MeshOlyaSurits
 
Automating Kubernetes Environments with Ansible
Automating Kubernetes Environments with AnsibleAutomating Kubernetes Environments with Ansible
Automating Kubernetes Environments with AnsibleOlyaSurits
 
Full Stack Automation With Go
Full Stack Automation With GoFull Stack Automation With Go
Full Stack Automation With GoOlyaSurits
 
Implementing a Reliable, Auto-Healing Scalable Platform at VMware
Implementing a Reliable, Auto-Healing Scalable Platform at VMwareImplementing a Reliable, Auto-Healing Scalable Platform at VMware
Implementing a Reliable, Auto-Healing Scalable Platform at VMwareOlyaSurits
 
Operations as a Strategic Differentiator
Operations as a Strategic DifferentiatorOperations as a Strategic Differentiator
Operations as a Strategic DifferentiatorOlyaSurits
 
Building Bridges Between Applications and Data
Building Bridges Between Applications and DataBuilding Bridges Between Applications and Data
Building Bridges Between Applications and DataOlyaSurits
 
Automating the API Product Lifecycle
Automating the API Product LifecycleAutomating the API Product Lifecycle
Automating the API Product LifecycleOlyaSurits
 
Connectivity Is the Future
Connectivity Is the FutureConnectivity Is the Future
Connectivity Is the FutureOlyaSurits
 
The 7 Habits of Highly Effective Automators
The 7 Habits of Highly Effective AutomatorsThe 7 Habits of Highly Effective Automators
The 7 Habits of Highly Effective AutomatorsOlyaSurits
 

Mais de OlyaSurits (9)

A Better Way for Applications to Communicate With Your Mesh
A Better Way for Applications to Communicate With Your MeshA Better Way for Applications to Communicate With Your Mesh
A Better Way for Applications to Communicate With Your Mesh
 
Automating Kubernetes Environments with Ansible
Automating Kubernetes Environments with AnsibleAutomating Kubernetes Environments with Ansible
Automating Kubernetes Environments with Ansible
 
Full Stack Automation With Go
Full Stack Automation With GoFull Stack Automation With Go
Full Stack Automation With Go
 
Implementing a Reliable, Auto-Healing Scalable Platform at VMware
Implementing a Reliable, Auto-Healing Scalable Platform at VMwareImplementing a Reliable, Auto-Healing Scalable Platform at VMware
Implementing a Reliable, Auto-Healing Scalable Platform at VMware
 
Operations as a Strategic Differentiator
Operations as a Strategic DifferentiatorOperations as a Strategic Differentiator
Operations as a Strategic Differentiator
 
Building Bridges Between Applications and Data
Building Bridges Between Applications and DataBuilding Bridges Between Applications and Data
Building Bridges Between Applications and Data
 
Automating the API Product Lifecycle
Automating the API Product LifecycleAutomating the API Product Lifecycle
Automating the API Product Lifecycle
 
Connectivity Is the Future
Connectivity Is the FutureConnectivity Is the Future
Connectivity Is the Future
 
The 7 Habits of Highly Effective Automators
The 7 Habits of Highly Effective AutomatorsThe 7 Habits of Highly Effective Automators
The 7 Habits of Highly Effective Automators
 

Último

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 

Último (20)

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 

Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Testing of Microservices

  • 1. Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Testing of Microservices Jon Edvald, CEO & Co-founder @JonEdvald
  • 2. What we’ll talk about • Walk through di erent types of tests • Deep-dive on integration tests • Spinning up test environments • Good practices for integ/end-to-end tests • Scaled-down blueprint and quick summary
  • 3. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing
  • 4. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing unit tests • Crucial for most projects, but… • Often overused. Consider functional tests where applicable. • Use for stateless, side-effect free functions. • Don’t strive for 100% coverage.
  • 5. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing fuzz tests • Good complement to unit tests, for stateless functions. • Esp. important for e.g. C/C++ code (that may not be memory safe). • Use frameworks/sanitizers to facilitate. property based tests
  • 6. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing functional tests • Often preferable to unit tests, since they have broader coverage and mimic real-world use. • Should still be fast to run, and require limited setup/scaffolding. • Only use fakes/mocks/stubs when necessary, considering integ tests instead.
  • 7. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing benchmarking • Use for specific performance- sensitive functions, and maybe full test runs. • Translating results to test successes or failures can be difficult.
  • 8. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing contract testing • Fast alternative to integration testing, but… • Provides limited coverage, only tests at a schema level. • Doesn’t really test actual code, how data is processed etc. • Pact is a good framework for this.
  • 9. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing config tests • Very important for Kubernetes (too easy to do the wrong thing). • Apply org policies for applications and infrastructure. • Use e.g. conftest, OPA, and/or Terraform Sentinel.
  • 10. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing security tests • Again, very important for Kubernetes, for the same reasons. • Includes image/CVE scanning, black box scanning, cluster linters. • Try e.g. Starboard, Claire, clusterlint.
  • 11. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing shadowing • Quite powerful, but difficult to get right. • Service meshes can help a lot with this. • Easiest for stateless / side- effect free / independent API calls.
  • 12. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing • Great way to thoroughly test a system, from code through configuration. • Can be run on your full stack, or individual services talking to other production APIs. • Has been frowned upon due to slow feedback loops, but there are ways to accelerate... integration testing / end-to-end testing
  • 14.
  • 15. Test environments • Spinning up preview environments implicitly tests your con guration. • Running tests in those environments provides a lot of coverage. • Tools like garden, Flux, Okteto can help with the setup, and some also facilitate running tests
  • 16.
  • 17. Instrumentation • Observability helps a lot when debugging. • Emit plenty of tracing events across your code with OpenTelemetry.
  • 18. Managing state • We need to make sure test suites don’t step over each other. • Partition your data, by e.g. creating a test organization/project/tenant/user for each suite, then cleaning up. • Alternative: Add metadata to requests/data and clean up a er.
  • 19. Accelerating tests • Safely run multiple test suites in parallel with partitioned data. • Keep a test environment running while developing. • Trigger individual tests/suites directly from dev machine instead of waiting for a full pipeline.
  • 20.
  • 21. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing
  • 22. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing chaos testing • Test the resilience of your applications. • Suggest using in testing envs, growing to all environments incl. production. • Start by running manually, watching for failures. • Use tools and services designed for this, e.g. Gremlin, Litmus.
  • 23. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing exploration • Important, especially with new features/applications and when test coverage isn’t very high. • May make sense as part of pre- prod review, depending on the application and team, and whether you have preview environments.
  • 24. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing A/B testing & feature flagging • Another approach to progressive delivery. • May need a little work on application level, but tools like LaunchDarkly can help.
  • 25. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing canary rollouts • Generally good practice. How much to rely on it depends on your application and processes. • Service meshes are helpful here, and tools like Flagger.
  • 26. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing monitoring • Definitely do this! Monitor resource usage, infra, clusters etc. • Use for prod + staging at least, but ideally any shared dev/test clusters. • Prometheus is good for Kubernetes, or commercial services.
  • 27. chaos testing exploration monitoring A/B testing canarying feature flagging config tests benchmarking integration testing shadowing fuzz tests unit tests property based tests contract testing functional tests security tests TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION observability end-to-end testing observability • Great for debugging. • Use in all environments if possible, also handy during dev + testing. • Use e.g. Jaeger, Honeycomb, Lightstep.
  • 28. And now to summarize: our testing blueprint
  • 29. chaos testing A/B testing canarying feature flagging config tests benchmarking shadowing fuzz tests property based tests contract testing TESTING IN DEV PRE-PRODUCTION TESTING TESTING IN PRODUCTION end-to-end testing unit tests functional tests security tests integration testing observability exploration monitoring
  • 30. Further reading • Testing microservices the sane way—Cindy Sridharan • Unit testing is overrated—Alexey Golub • Write tests. Not too many. Mostly integration.— Kent C Dodds • Contraption Maker - 🙃 • garden.io / medium.com/garden-io