just say no to more end-to end tests - devops · 3 ©2016 ibm corporation 18 december 2017 „i use...

14
18 December 2017 Just Say No to More End-To End Tests Daniel Pittner | @dpittner84

Upload: others

Post on 26-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

18 December 2017

Just Say No to More End-To End Tests

Daniel Pittner | @dpittner84

Page 2: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

©2016 IBM Corporation2 18 December 2017

• Introduction

• Integrated tests and associated problems

• Consumer-Driven Contracts with Pact.io

• Continous Integration

• Takeaways

Agenda

Page 3: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

©2016 IBM Corporation3 18 December 2017

„I use the term integrated test to mean any test

whose result (pass or fail) depends on the

correctness of the implementation of more than

one piece of non-trivial behavior. (JB Rainsberger)

SVTCVT

E2EIntegration Test

Page 4: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

©2016 IBM Corporation4 18 December 2017

▪ Scope to specific business domain Architecture

▪ Single Team responsibility (You build it you run it) Organization

▪ What determines the scope of E2E? Arbitrary

▪ Each service should be handled like a product: E2E ≈ Integration

Recap of Microservices

ObjStore

UI

Jupyter

Spark

API

Cloudant

IAM

PDP

BSS

Handler

FrontDoor

Page 5: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

©2016 IBM Corporation5 18 December 2017

▪ Slow

▪ Easy to break

▪ Hard to fix

▪ Coordination – How do you ensure the correct versions of „all the things“

▪ Game theory suggests wrong incentives for desired outcome

▪ Scales combinatorically

3 Services, 4 endpoints each, 2 paths for each endpoint

(2 ∗ 4)3= 512 𝑣𝑎𝑟𝑖𝑎𝑛𝑡𝑠

Integrated Tests: The Problems

Page 6: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

©2016 IBM Corporation6 18 December 2017

Stubs... And why they are insufficient

UI API

mock

Spec

Page 7: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

©2016 IBM Corporation7 18 December 2017

Consumer-Driven Contracts: A Service Evolution Pattern

▪ Specification by Example

– Closed and Complete

– Multiple

– Bounded stability

▪ Driven by service consumers

▪ Better incentivation model

▪ Follow Postells law

Page 8: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

©2016 IBM Corporation8 18 December 2017

Test Symmetry... How it works

UI API

mock

Pact

Page 9: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

©2016 IBM Corporation9 18 December 2017

Pact

Fast Stable

Easy to debugReliable

Setup

required

No extra infrastructure

Scales linearly

Independently shipable

HTTP only

Page 10: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

©2016 IBM Corporation10 18 December 2017

Consumer Side Example

C Pmock

Pact

Page 11: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

©2016 IBM Corporation11 18 December 2017

Continous Integration with Pact

Push new changeGenerate consumer contract

Open PR DeployUpload pact & tag with „master“

Push new change

Verify all pacts for „master“

Open PRValidate

contractsDeploy

Provider

Consumer

Broker

Staging

Page 12: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

©2016 IBM Corporation12 18 December 2017

▪ Communication is still key

▪ Think of Postel‘s law (Robustness principle)

▪ Provider side setup requires one time effort

▪ Organically growing adoption

▪ Didn‘t break a single consumer since we started

What we learned so far

Page 13: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

Links and References

Page 14: Just Say No to More End-To End Tests - DevOps · 3 ©2016 IBM Corporation 18 December 2017 „I use the term integrated test to mean any test whose result (pass or fail) depends on

©2016 IBM Corporation 18 December 201714

Introduction to Pact:

https://docs.pact.io/

Consumer-Driven Contracts:

https://martinfowler.com/articles/consumerDrivenContracts.html

Pact.io Convinceme:

https://docs.pact.io/faq/convinceme.html

Talk from Atlassian:

https://www.youtube.com/watch?v=-6x6XBDf9sQ&feature=youtu.be

Just Say no to More End-to-End Tests

https://testing.googleblog.com/2015/04/just-say-no-to-more-end-to-end-tests.html

Soundcloud engineering talk:

https://speakerdeck.com/alonpeer/move-fast-and-consumer-driven-contract-test-things

References