codecentric Nederland BV
@huibschoots & @mieldonkers
SUCCESFUL TESTING
THE CONTINUOUS DELIVERY PROCESS
codecentric Nederland BV
INTRODUCTION
Miel Donkers
Developer
@mieldonkers
Huib Schoots
Tester
@huibschoots
codecentric Nederland BV
• Experience with Continuous Delivery?
• As a tester, do you need to wait for an
acceptable release from developers?
• Loose time doing all repetitive manual stuff?
• Maintain different environments and software versions manually,
over-and-over-and-over…
• Is this really release 1.6.5?
• All sounds familiar?
TYPICAL
codecentric Nederland BV
Prod
BUILDING A RELEASE
TEST
Local
Build
Integration
server
Release
build
DEV
Acc
Test
Users
DEVDEV
codecentric Nederland BV
WHY CONTINUOUS DELIVERY
codecentric Nederland BV
WHAT IS CONTINUOUS DELIVERY
•  Continuous Delivery pipeline
•  Automation
•  Manual control
•  Feedback
codecentric Nederland BV
GOALS
•  Predictability
•  Quality
•  Speed
codecentric Nederland BV
WHAT ARE THE KEY BENEFITS OF CONTINUOUS DELIVERY?
•  Low-risk releases
•  Faster return on investment in software projects
•  Improvement of competitiveness and responsiveness
•  Quality improvement of new software versions
codecentric Nederland BV
CONTINUOUS IMPROVEMENT CYCLE
Requires:
Discipline &
Responsibility
codecentric Nederland BV
STOP THE LINE!
codecentric Nederland BV
PUSH VS. PULL
codecentric Nederland BV
ANATOMY IN DETAIL
Source
Code
Commit Stage
Compile
Commit Tests
Assemble
Code Analysis
Artifact Repository
Acceptance Stage
Configure Environment
Deploy Binaries
Smoke Test
Acceptance Tests
UAT
Configure Environment
Deploy Binaries
Smoke Test
Capacity Stage
Configure Environment
Deploy Binaries
Smoke Test
Run Capacity Tests
Production
Configure Environment
Deploy Binaries
Smoke Test
Env.&App
Config
Env.&App
Config
Version Control
Testers
Self-service
deployments
Operations
Perform push
Button releases
Developers
See code metrics
and test failures
reports
binaries
metadata binaries
reports
metadata binaries
reports
metadata
codecentric Nederland BV
WHAT ARE THE MAIN STEPS OF CONTINUOUS DELIVERY?
•  Build – compile, unit test, version, package
•  Quality – metrics, documentation
•  Test – acceptance-, regression- and performance tests
•  Provision environments – deployment to test- and staging
environment
•  Production – green/blue deployment to production
codecentric Nederland BV
MAIN STEPS TO CREATE A CONTINUOUS DELIVERY PIPELINE?
•  Getting started with virtual environments, e.g. Amazon EC2
•  Configure your Continuous Integration Server
•  Provisioning your Test, Staging and Production environments
•  Configure your Continuous Delivery Pipeline
•  Create a Dashboard of your Systems
codecentric Nederland BV
EXAMPLE
§ Elke stage een slide.
codecentric Nederland BV
WHAT ARE THE MAIN STEPS OF CONTINUOUS DELIVERY?
codecentric Nederland BV
TOOLING THAT CAN HELP YOU
codecentric Nederland BV
EXAMPLE – TECHNOLOGY STACK
•  Amazon EC2 (Virtualization, Cloud)
•  Jenkins (CI Server)
•  Git/Github (Version Control)
•  Sonar (Code Quality)
•  jUnit (Unit Tests)
•  jBehave (Acceptancetests)
•  Selenium (UI Tests)
•  Puppet (Provisioning)
•  Tomcat (Application Server)
•  Artifactory (Artifact Repository)
•  Maven (Build Tool)
•  jMeter (Performance Tests)
•  AppDynamics (Performance Tests)
•  Liquibase (DB Versioning)
codecentric Nederland BV
OUR SETUP
https://github.com/...
CD Server
Test Server
User Acceptance
Test Server
Production Cluster
Blue / Green
CD Slave
codecentric Nederland BV
EXAMPLE – DELIVERY PIPELINE 1/2
Push to Git Repo
1
Provision-Deploy
Acceptance
Commit
Trigger CD Pipeline
2
Build Source Code
3
Run Unit Tests
4
Start EC2 Image
1
Provisioning
2
DB Create Update
3
Deploy WAR
4
Start Tomcat
5
Start Selenium
1
Acceptance Test
Run AATs
2
Version Git Repo
6
Release WAR
7
Run Code Analyse
5
codecentric Nederland BV
EXAMPLE – DELIVERY PIPELINE 2/2
Run JMeter
1
Provision-Deploy
UAT
Start EC2 Image
2
Provisioning
3
DB Create Update
4
Deploy WAR
5
Start Tomcat
6
Performance
Test
Select Version
1
Provision-Deploy
PRODBLUE/GREEN
Start EC2 Image
2
Provisioning
3
DB Update
4
Deploy WAR
5
Start Tomcat
6
Select Version
1
codecentric Nederland BV
ASK YOURSELF
•  Which parts are tested how?
•  What remains to be tested?
codecentric Nederland BV
APPLICATION STACK
Apps / Services
/ Components
Application
Configuration
Middleware
Middleware
Configuration
Operating
System
OS Configuration
Hardware
TESTING
codecentric Nederland BV
WHAT DO WE TEST WHERE AND WHEN?
•  Automation is key
•  Do what we do best
•  Team effort
codecentric Nederland BV
MANUAL TESTING
Still required:
•  “Show me”
•  Exploratory testing
•  User acceptance testing
codecentric Nederland BV
ANATOMY OF A DEPLOYMENT PIPELINE
Release
•  Every change results in a trigger of the deployment process
•  Software is build once and only once
•  The same deployment process for every environment
•  Deployment in production-like environments
Commit
Automated
Acceptance Test
Automated
Capacity Test
Manual
Testing
Fast Feedback
Trust in Application Stability
Done
codecentric Nederland BV
EXAMPLE
§ Elke stage een slide.
codecentric Nederland BV
SUMMARY
•  Continuous delivery is a way to create a stable release process
•  Automated testing makes continuous delivery possible
•  Manual testing is (still) necessary
•  Pull vs Push
•  Dashboard
codecentric Nederland BV
THANK YOU FOR YOUR ATTENTION – ANY QUESTIONS?
codecentric Nederland BV
huib.schoots@codecentric.nl
+31 (0) 6 24 64 10 33
@huibschoots
miel.donkers@codecentric.nl
+31 (0) 6 51 19 77 38
@mieldonkers
See our website for more information:
http://www.codecentric.nl/portfolio/continuous-delivery/
CONTACT INFORMATION

Succesful Testing The Continuous Delivery Process

  • 1.
    codecentric Nederland BV @huibschoots& @mieldonkers SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS
  • 2.
    codecentric Nederland BV INTRODUCTION MielDonkers Developer @mieldonkers Huib Schoots Tester @huibschoots
  • 3.
    codecentric Nederland BV • Experiencewith Continuous Delivery? • As a tester, do you need to wait for an acceptable release from developers? • Loose time doing all repetitive manual stuff? • Maintain different environments and software versions manually, over-and-over-and-over… • Is this really release 1.6.5? • All sounds familiar? TYPICAL
  • 4.
    codecentric Nederland BV Prod BUILDINGA RELEASE TEST Local Build Integration server Release build DEV Acc Test Users DEVDEV
  • 5.
    codecentric Nederland BV WHYCONTINUOUS DELIVERY
  • 6.
    codecentric Nederland BV WHATIS CONTINUOUS DELIVERY •  Continuous Delivery pipeline •  Automation •  Manual control •  Feedback
  • 7.
    codecentric Nederland BV GOALS • Predictability •  Quality •  Speed
  • 8.
    codecentric Nederland BV WHATARE THE KEY BENEFITS OF CONTINUOUS DELIVERY? •  Low-risk releases •  Faster return on investment in software projects •  Improvement of competitiveness and responsiveness •  Quality improvement of new software versions
  • 9.
    codecentric Nederland BV CONTINUOUSIMPROVEMENT CYCLE Requires: Discipline & Responsibility
  • 10.
  • 11.
  • 12.
    codecentric Nederland BV ANATOMYIN DETAIL Source Code Commit Stage Compile Commit Tests Assemble Code Analysis Artifact Repository Acceptance Stage Configure Environment Deploy Binaries Smoke Test Acceptance Tests UAT Configure Environment Deploy Binaries Smoke Test Capacity Stage Configure Environment Deploy Binaries Smoke Test Run Capacity Tests Production Configure Environment Deploy Binaries Smoke Test Env.&App Config Env.&App Config Version Control Testers Self-service deployments Operations Perform push Button releases Developers See code metrics and test failures reports binaries metadata binaries reports metadata binaries reports metadata
  • 13.
    codecentric Nederland BV WHATARE THE MAIN STEPS OF CONTINUOUS DELIVERY? •  Build – compile, unit test, version, package •  Quality – metrics, documentation •  Test – acceptance-, regression- and performance tests •  Provision environments – deployment to test- and staging environment •  Production – green/blue deployment to production
  • 14.
    codecentric Nederland BV MAINSTEPS TO CREATE A CONTINUOUS DELIVERY PIPELINE? •  Getting started with virtual environments, e.g. Amazon EC2 •  Configure your Continuous Integration Server •  Provisioning your Test, Staging and Production environments •  Configure your Continuous Delivery Pipeline •  Create a Dashboard of your Systems
  • 15.
  • 16.
    codecentric Nederland BV WHATARE THE MAIN STEPS OF CONTINUOUS DELIVERY?
  • 17.
  • 18.
    codecentric Nederland BV EXAMPLE– TECHNOLOGY STACK •  Amazon EC2 (Virtualization, Cloud) •  Jenkins (CI Server) •  Git/Github (Version Control) •  Sonar (Code Quality) •  jUnit (Unit Tests) •  jBehave (Acceptancetests) •  Selenium (UI Tests) •  Puppet (Provisioning) •  Tomcat (Application Server) •  Artifactory (Artifact Repository) •  Maven (Build Tool) •  jMeter (Performance Tests) •  AppDynamics (Performance Tests) •  Liquibase (DB Versioning)
  • 19.
    codecentric Nederland BV OURSETUP https://github.com/... CD Server Test Server User Acceptance Test Server Production Cluster Blue / Green CD Slave
  • 20.
    codecentric Nederland BV EXAMPLE– DELIVERY PIPELINE 1/2 Push to Git Repo 1 Provision-Deploy Acceptance Commit Trigger CD Pipeline 2 Build Source Code 3 Run Unit Tests 4 Start EC2 Image 1 Provisioning 2 DB Create Update 3 Deploy WAR 4 Start Tomcat 5 Start Selenium 1 Acceptance Test Run AATs 2 Version Git Repo 6 Release WAR 7 Run Code Analyse 5
  • 21.
    codecentric Nederland BV EXAMPLE– DELIVERY PIPELINE 2/2 Run JMeter 1 Provision-Deploy UAT Start EC2 Image 2 Provisioning 3 DB Create Update 4 Deploy WAR 5 Start Tomcat 6 Performance Test Select Version 1 Provision-Deploy PRODBLUE/GREEN Start EC2 Image 2 Provisioning 3 DB Update 4 Deploy WAR 5 Start Tomcat 6 Select Version 1
  • 22.
    codecentric Nederland BV ASKYOURSELF •  Which parts are tested how? •  What remains to be tested?
  • 23.
    codecentric Nederland BV APPLICATIONSTACK Apps / Services / Components Application Configuration Middleware Middleware Configuration Operating System OS Configuration Hardware TESTING
  • 24.
    codecentric Nederland BV WHATDO WE TEST WHERE AND WHEN? •  Automation is key •  Do what we do best •  Team effort
  • 25.
    codecentric Nederland BV MANUALTESTING Still required: •  “Show me” •  Exploratory testing •  User acceptance testing
  • 26.
    codecentric Nederland BV ANATOMYOF A DEPLOYMENT PIPELINE Release •  Every change results in a trigger of the deployment process •  Software is build once and only once •  The same deployment process for every environment •  Deployment in production-like environments Commit Automated Acceptance Test Automated Capacity Test Manual Testing Fast Feedback Trust in Application Stability Done
  • 27.
  • 28.
    codecentric Nederland BV SUMMARY • Continuous delivery is a way to create a stable release process •  Automated testing makes continuous delivery possible •  Manual testing is (still) necessary •  Pull vs Push •  Dashboard
  • 29.
    codecentric Nederland BV THANKYOU FOR YOUR ATTENTION – ANY QUESTIONS?
  • 30.
    codecentric Nederland BV huib.schoots@codecentric.nl +31(0) 6 24 64 10 33 @huibschoots miel.donkers@codecentric.nl +31 (0) 6 51 19 77 38 @mieldonkers See our website for more information: http://www.codecentric.nl/portfolio/continuous-delivery/ CONTACT INFORMATION