Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

45
Want Continuous Delivery? Give testing a priority! Build the quality in and keep the product releasable 16-6-2016, Friss, Utrecht Pavel Chunyayev

Transcript of Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

Page 1: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

Want Continuous Delivery?Give testing a priority!

Build the quality in and keep the product releasable16-6-2016, Friss, Utrecht

Pavel Chunyayev

Page 2: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Agenda

• Continuous Delivery process overview

• A story about testing

• A story about releasing

• Closing ideas

Page 3: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

About me

• 12 years of IT experience• Lived and worked in Ukraine and Estonia • Moved a year and half ago to the Netherlands

• Love cycling• Love Dutch language• Love software development processes• Love working with people

Page 5: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Continuous Delivery

Incept

• Business idea• Is needed

immediately• Should be validated

Plan

• Refine• Estimate• Prioritize

Develop

• Put into sprint• Develop in a branch• Conduct a code

review• Merge into master

Build

• Trigger pipeline• Build• Unit testing• Integration testing• Static code analysis

Test

• Contract testing• E2E testing• Security testing• Resilience testing

Release

• Zero-downtime• Canary testing• Rolling deployment• Blue / green

deployment

Operate

• Monitoring• Validation of the

idea• Money generation• Disposal

Page 7: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Keep the product releasableBuild quality in

Page 8: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Build • Test • Release

Page 9: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Continuous Delivery

Incept

• Business idea• Is needed

immediately• Should be validated

Plan

• Refine• Estimate• Prioritize

Develop

• Put into sprint• Develop in a branch• Conduct a code

review• Merge into master

Build

• Trigger pipeline• Build• Unit testing• Integration testing• Static code analysis

Test

• Contract testing• E2E testing• Security testing• Resilience testing

Release

• Zero-downtime• Canary testing• Rolling deployment• Blue / green

deployment

Operate

• Monitoring• Validation of the

idea• Money generation• Disposal

Page 15: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Testing pyramid

Exec

ution

tim

e

Mor

e bu

sines

s fee

dbac

k

Mor

e de

velo

pmen

t fee

dbac

k

Page 17: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Pyramid vs microservice

Page 23: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Updating the contract

Page 24: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Updating the contract

Page 25: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Updating the contract

Page 26: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Updating the contract

Page 27: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Updating the contract

Page 28: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

The top of the pyramid

Page 35: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Pyramid vs microservice

Page 36: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Build quality in• Testing is not just presence or absence of defects• Testing is not a separate process• Test should not just raise the cost of maintenance • Stop thinking about functional testing only• Quality goal need to be established early in the development process• Automated testing – part of Definition of Done• Test early, move tests to the left• TDD

Page 37: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Frequent, incremental releases for early feedback

Page 39: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

To practice• Deploy software at the end of every iteration (done = released to

production).• And then start doing it quicker.• Optimize flow - don’t make ineffective more efficient.

Page 40: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Optimize the flow• Honour existing processes, records,

and controls. • They arose for a reason.

• Streamline and simplify all processes, records, and controls. • Challenge the level of ceremony.

Page 42: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Lean principles• Optimize the whole• Eliminate waste• Deliver fast by managing flow• Build quality into the system• Create knowledge• Defer commitment• Respect people

Page 43: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Culture• Protect people• Shared goal• Collaboration • Encourage experimentation and learning• Blameless postmortems• Learn to trust• Transparency

Page 44: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

“Developing people and the system so that together they are capable of achieving successful results is the point.”

Mary and Tom Poppendieck

Page 45: Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht

@PavelChunyayev

Continuous Delivery

Incept

• Business idea• Is needed

immediately• Should be validated

Plan

• Refine• Estimate• Prioritize

Develop

• Put into sprint• Develop in a branch• Conduct a code

review• Merge into master

Build

• Trigger pipeline• Build• Unit testing• Integration testing• Static code analysis

Test

• Contract testing• E2E testing• Security testing• Resilience testing

Release

• Zero-downtime• Canary testing• Rolling deployment• Blue / green

deployment

Operate

• Monitoring• Validation of the

idea• Money generation• Disposal

Keep the product releasableBuild quality in

Improve continuouslyBuild the right culture

[email protected]