testing in the era of microservices - codemotion meetup - amsterdam, 12-04-2016

41
Testing in the era of microservices The role of testing in the microservices application lifecycle Codemotion meetup, 12-04-2016 Container Solutions, Amsterdam Pavel Chunyayev

Upload: pavel-chunyayev

Post on 13-Feb-2017

270 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

Testing in the era of microservices

The role of testing in the microservices application lifecycleCodemotion meetup, 12-04-2016Container Solutions, Amsterdam

Pavel Chunyayev

Page 2: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

Amsterdam

Levi9 HQAmsterdam – 2005

25 people

Novi Sad

SerbiaNovi Sad – 2005

320+ people

Zrenjanin

SerbiaZrenjanin– 2014

30+ people

Iasi

RomaniaIasi – 200780+ people

Kiev

UkraineKiev – 2008130+ people

Page 3: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

Electronic Retail

DigitalMarketing

Traffic and Transport

Software Services

Page 4: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

Customer satisfaction 2015

• 4th year great results in Outsourcing Performance study

• 2015: 100% customer recommendation scoreExcellent trust score

Page 5: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@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• Learn Dutch

• Alpe d’HuZes - http://deelnemers.opgevenisgeenoptie.nl/levi9

Page 6: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

The story we all know

Development Testing Acceptance Production

Page 7: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@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 8: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

Quality > Speed

Page 9: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

Keep the product releasableBuild quality in

Page 11: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

Build quality in• Testing is not just presence or absence of defects• 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• Clear understanding of quality requirements• Automated testing – part of Definition of Done• Move tests to the left• TDD

Page 12: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

Build • Test • Release

Page 13: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@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 19: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@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 21: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

Pyramid vs microservice

Page 27: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

Updating the contract

Page 28: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

Updating the contract

Page 29: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

Updating the contract

Page 30: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

Updating the contract

Page 31: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

Updating the contract

Page 32: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

The top of the pyramid

Page 39: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

Pyramid vs microservice

Page 40: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@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

Page 41: Testing in the era of microservices - Codemotion meetup - Amsterdam, 12-04-2016

@PavelChunyayev

Key takeaways• Update testing practices• Immutable infrastructure• Reproducible and repeatable testing• Build quality in• Improve continuously

Any questions?

[email protected]