Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, Utrecht
-
Upload
pavel-chunyayev -
Category
Software
-
view
2.949 -
download
0
Transcript of 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
@PavelChunyayev
Agenda
• Continuous Delivery process overview
• A story about testing
• A story about releasing
• Closing ideas
@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
@PavelChunyayev
Continuous Delivery
@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
@PavelChunyayev
Quality > Speed
@PavelChunyayev
Keep the product releasableBuild quality in
@PavelChunyayev
Build • Test • Release
@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
@PavelChunyayev
Testing pyramid
Exec
ution
tim
e
Mor
e bu
sines
s fee
dbac
k
Mor
e de
velo
pmen
t fee
dbac
k
@PavelChunyayev
Pyramid vs microservice
@PavelChunyayev
Integration testing
@PavelChunyayev
Contract testing
@PavelChunyayev
End-to-end testing
@PavelChunyayev
Updating the contract
@PavelChunyayev
Updating the contract
@PavelChunyayev
Updating the contract
@PavelChunyayev
Updating the contract
@PavelChunyayev
Updating the contract
@PavelChunyayev
The top of the pyramid
@PavelChunyayev
Pyramid vs microservice
@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
@PavelChunyayev
Frequent, incremental releases for early feedback
@PavelChunyayev
Feature branching
@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.
@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.
@PavelChunyayev
Lean principles• Optimize the whole• Eliminate waste• Deliver fast by managing flow• Build quality into the system• Create knowledge• Defer commitment• Respect people
@PavelChunyayev
Culture• Protect people• Shared goal• Collaboration • Encourage experimentation and learning• Blameless postmortems• Learn to trust• Transparency
@PavelChunyayev
“Developing people and the system so that together they are capable of achieving successful results is the point.”
Mary and Tom Poppendieck
@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