SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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
 

Tendances (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
 

Similaire à 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
 

Similaire à 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
 

Plus 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
 

Plus 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
 

Dernier

Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROmotivationalword821
 

Dernier (20)

Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTRO
 

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