integration test hell€¦ · inspiriert durch "the testing iceberg“ von seb rose / matt...

36
codecentric AG David Völkel XPDays Germany 14.11.2013 INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN?

Upload: others

Post on 24-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

David Völkel – XPDays Germany – 14.11.2013

INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN?

Page 2: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

ÜBER MICH…

2

David Völkel

IT-Consultant für codecentric

Twitter: @davidvoelkel

Schwerpunkte:

Test-Driven Development

Softwaredesign & Clean Code

Software Craftsman @softwerkskammer

Page 3: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

Fehler trotz Unit-Tests

zu viele integrative Tests

Kosten $$$

PROBLEM INTEGRATION TEST HELL?

3

Page 4: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

.

LÖSUNG: TESTPYRAMIDE

4

UI

Service

Unit Inte

gra

tio

nsg

rad

Inte

gra

tive

Te

sts

effektive Teststrategie

Unit-Tests &

Pyramide nach Martin Fowler

Page 5: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

so what

5

Page 6: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

DOCH KOMPLEXER …

6

Page 7: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG 7

?

?

Unit

Page 8: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

- Kosten vs. Nutzen

- Isolation vs. Integration

- Akzeptanztests

- GUI?

- Resume

AGENDA

Page 9: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

• (A)TDD unterstützt Entwicklung

• Risikominimierung

• Risiko = Schaden * Wahrscheinlichkeit

unangemessene Testauswahl

• 20% der Tests 80% Nutzen

• Menge, Art, Integrationsgrad Tests

• Risikobewertung

• unterschiedlich je Domäne

• Prototyp bis sicherheitkritisch

$(Tests) = Nutzen - Kosten

WELCHES QUALITÄTSLEVEL BRAUCHE ICH?

Tests an an Kosten und Nutzen ausrichten!

Page 10: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

Isolierende

Tests

Integrierende

Tests

Feedback schnell langsam

Fehlerfindung einfach schwer

Fragilität gering hoch

Kosten Entwicklung &

Wartung

billig teuer

Aussagekraft für

Nutzer

gering hoch

Stärken Breite, Logik,

Komplexität

Tiefe, Datenflüsse,

Integration

EIGENSCHAFTEN DER TESTARTEN

10

Page 11: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG 11

„wörtliche Interpretation“

WAS SAGEN DIE EXPERTEN?

UI

Service

Unit Unit

"Integrated Tests Are a Scam"

• J.B. Rainsberger

ATDD

• z.B. GOOS, Continuous Delivery

Page 12: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

Akzeptanztest E2E treibt

jedes Feature

Systemdesign

Auslegungssache

Extrem Jez Humble

Abschwächung mit Testpyramide

Tests ggf. „runterdrücken“

Nat Pryce

James Crisp (70%, 20%, 10%)

N x Unittests

ATDD

12

1 x Akzeptanztest

Page 13: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG 13

Splitting integrated test

Decomposition Fallacy?

#Testfälle: n x m => n + m!

"INTEGRATED TESTS ARE A SCAM"

integrated test n x m

collaboration test

n + m

test double

contract test

Page 14: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

Deduplizierung von Testfalllogik

Integrativer Test

enthält Teile der Unittests auf dem

Weg

Fokus: Integration

Orthogonalisierung

SRP FÜR TESTS?

http://commons.wikimedia.org/wiki/File:Divide-and-conquer.jpg?uselang=de

Page 15: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

Beispiel: Email-Validierung

Funktionaler Test

schmal und tief

Service oder UI

Fokus: Integration

Unittests

breit, jedes Detail testen

ORTHOGONALISIERUNG

Eingabe Ausgabe

„ungueltige@email“ „Mail ungültig“

„gü[email protected]“ „Mail OK“

GUI

Validator

Test Double

Page 16: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

AKZEPTANZTESTS

Page 17: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

AKZEPTANZTESTS

Fokus Kundennutzen

• Funktionale- statt Entwicklertests

• Sprache der Fachlichkeit

• Orthogonal zum Integrationsgrad

Page 18: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

UI

Service

Unit

PYRAMIDE FÜR AKZEPTANZTESTS

Page 19: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

PROZESS FÜR AKZEPTANZTESTS

User Stories

Scenarios Implementierung Step Definitions

Unittests

Richtige Ebene?

BDD ATDD

Akzeptanztests

Page 20: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

INTEGRATIONSGRAD VS. FACHLICHKEIT

business readable

technical

Inte

gra

tio

nsg

rad

Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne

2 Dimensionen („etwas abhängig“)

E2E

Service

Unit

Page 21: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

GUI TESTS

Page 22: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

Rule

Workflow

Technisches

Scripting

3 EBENEN VON GUI-TESTS S

tabili

tät &

Kla

rheit

Oberen Ebenen

eigentlich Akzeptanztests

Tests hoch drücken

Page Objects

wrappen scripting

„Smell Wiederverwendung“?

Beispiele

Gojko Adzics "UI testing without shooting yourself in the foot"

Page 23: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

GUI-TESTS

• Subcutanous Testing (z.B. MVP)

• Kompletter Presentation Layer + Service Doubles

Isolation?

• wenige

• Grober Pfad über alle Seiten und Elemente

• ohne Logik!

• viele

• extrahierte User Journeys

• vollständig alle Stories

Menge

Page 24: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

FAZIT

Fokus auf Wert der Tests

• Risiken sind extrem kontextabhängig

• => Spitzheit der Pyramide

Test Pyramide

• Hohe Unittest-Abdeckung

• Wenige integrative Tests, da teuer

• Orthogonal zueinander, SRP für Tests

Viele Dimensionen

• Integrationsgrad

• funktional vs. technisch

• GUI

Page 25: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

QUELLEN

• Bücher

• "Continuous Delivery" - Jez Humble, Dave Farley

• "Growing Object-Oriented Software, Guided by Tests" - Steve

Freeman, Nat Pryce

• "Specification by Example" - Gojko Adzic

• GOOS Mailingliste

• https://groups.google.com/forum/#!forum/growing-object-

oriented-software

• "Integrated Tests are a scam" - J.B. Rainsberger

• http://www.jbrains.ca/permalink/using-integration-tests-

mindfully-a-case-study

• http://www.jbrains.ca/permalink/integrated-tests-are-a-scam-

part-1

• "The Testing Iceberg" - Matt Whyne und Seb Rose

• http://claysnow.co.uk/the-testing-iceberg/

Page 26: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

QUELLEN

• End-to-end Tests?

• http://www.higherorderlogic.com/2010/01/responding-to-brian-

marick

• http://www.exampler.com/blog/2010/01/08/some-preliminary-

thoughts-on-end-to-end-testing-in-growing-object-oriented-

software/

• Testing-Pyramide im Kontext Continuous Delivery, James Crisp

• http://jamescrisp.org/2011/05/30/automated-testing-and-the-

test-pyramid/

• Wartbare Acceptance Tests, Jez Humble

• http://de.slideshare.net/jezhumble/creating-maintainable-

automated-acceptance-tests

• http://skillsmatter.com/podcast/agile-testing/the-long-term-

value-of-acceptance-tests

Page 27: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

David Völkel

codecentric AG

Landsberger Str. 302

80687 München

Twitter: @davidvoelkel

[email protected]

www.codecentric.de

blog.codecentric.de

www.meettheexperts.de

FRAGEN UND DISKUSSION

27

http://commons.wikimedia.org/wiki/File:Orange_question_mark.svg?uselang=de

Page 29: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

ERGÄNZUNGEN

Page 30: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

Adapters

Ports-and-Adapters Architecture

Domain System

ports = system interfaces

adapters = übersetzen zwischen

bounded contexts

domain

dependency inversion

=> testbare domain

Page 31: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

Adapters

Hexagonal Architecture

Domain System

3rd Party

Systems Klassifizierung der Ports

input vs output

"us vs. them"

User

Page 32: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

Adapters

UNIT TESTS

Domain System

3rd Party

Systems test doubles zur Isolation

ausgehender Adapter

Trennung Mapping von Transport

möglich?

Proprietäres Format?

z.B. HTTP vs. JDBC

=> nur dann isoliert testbar

Unit Tests

Unit Tests

Page 33: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

Adapters

INTEGRATION TESTS

Domain

Vorsicht: 3 Bedeutungen!!!

Komponententest

Integrationstest zu Drittsystemen

allgemein integrativer Test

z.B. auch Systemtest

Komponententest

Integrationtest

Page 34: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

Adapters

Systemtest

Domain System

Systemtest im Backdoor Fall

- test als test double

- alternativ Simplicator Pattern

Page 35: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

Adapters

END-TO-END-TESTS

Domain

Besonders teuer

System & Drittsystem unter Test

Reicht "Front Door"?

Drittsystem

Herschafft des Drittsystems?

Kopplung?

End-to-End-test

End-to-End-test “Front Door”

Page 36: INTEGRATION TEST HELL€¦ · Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne 2 Dimensionen („etwas abhängig“)Service E2E Unit . ... Oberen Ebenen eigentlich

codecentric AG

Adapters

ABKOPPLUNG DRITTSYSTEME

Domain

Impersonator Pattern

evtl. als Self initializing Fakes

Simplicator, falls proprietär

Integration Contract Tests

End-to-End-test

Impersonator

Integration Contract Test