SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
codecentric AG
David Völkel – SEACON 2014 – 09.05.2014
INTEGRATION TEST HELL
ODER WIE INTEGRATIV SOLL ICH TESTEN?
codecentric AG
DAVID VÖLKEL
2
IT-Consultant
Schwerpunkte
 Test-Driven Development
 Softwaredesign & Clean Code
 Software Craftsman
@softwerkskammer
Twitter: @davidvoelkel
codecentric AG
isoliert integriert
3
AUTOMATISIERTE TESTS
vs.
codecentric AG
$(isoliert) $(integriert)
4
TESTKOSTEN
codecentric AG
$(isolierter) $(integrierter) $(viele integrierte)
5
WELCOME TO INTEGRATION TEST HELL!
codecentric AG
Testpyramide
Orthogonale Dekomposition
- Akzeptanztests
- UI-Tests
Fazit
Diskussion
AGENDA
codecentric AG
TESTPYRAMIDE = EFFEKTIVE TESTSTRATEGIE
7
UI
Service
Unit
IntegrationsgradNach Mike Cohn
codecentric AG
$Wert(Tests) = Nutzen - Kosten
WELCHES QUALITÄTSLEVEL?
Ausrichtung an Risiken des Kontexts!
Integrative Tests für risikobehaftete Teile
Test-Aufwand
• Integrationsgrad
• 20% / 80%
Risiken senken
• Domäne: Prototyp,
sicherheitskritisch,
…
• Verteilung in App
8
codecentric AG
Isoliert Integriert
Erstellung & Wartung billig teuer
Feedback schnell langsam
Fehlerfindung einfach schwer
Fragilität gering hoch
Aussagekraft Nutzer mittel hoch
9
WARUM TEUER?
codecentric AG
Isoliert Integriert
Stärken Komplexe Logik
(„kombinatorische
Explosion“),
Conditionals, Breite
Integration,
Datenflüsse, Tiefe
10
WELCHER TESTLING?
codecentric AG
Vermischung Verantwortlichkeiten
 Integration
 Logik
ÜBERLADENE INTEGRATIONSTESTS
11
codecentric AG
„Single Responsibility Principle“ für Tests
ORTHOGONALE DEKOMPOSITION
12
codecentric AG
„BREIT“ & „TIEF“
.
IntegrativeTests
Isolierte Tests & orthogonal
13
codecentric AG
Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne
DIMENSION FACHLICHKEIT
Akzeptanztests
Entwicklertests
Fachlichkeit
Integrationsgrad
.
14
codecentric AG
AKZEPTANZTEST != GUI-TEST
15
UI
Service
Unit
HELL YEAH!
Naives Verständnis von
„ATDD treibt Features E2E“
„Testing Ice Cream Cone“ Inspiriert durch Alister Scott
codecentric AG
AKZEPTANZTESTS AUFSPLITTEN
UI Domain Rules
16
Akzeptanztests
codecentric AG
AKZEPTANZTESTS AUFSPLITTEN
17
codecentric AG
AKZEPTANZTESTS AUFSPLITTEN
UI Domain Rules
18
codecentric AG
 N integrative Webtests
BEISPIEL EMAIL-VALIDIERUNG
Eingabe Ausgabe
„gueltige@email.de“ „Email OK“
„mail.ohne@tld“ „Email ungültig“
„mail.ohne.at.de“ „Email ungültig“
„@ohne-user.de“ „Email ungültig“
…
19
codecentric AG
 1 integrativer Webtest
 N x Isolierte Tests
BEISPIEL EMAIL-VALIDIERUNG
Eingabe Ausgabe
„gueltige@email.de“ „Email OK“
„mail.ohne@tld“ „Email ungültig“
„mail.ohne.at.de“ „Email ungültig“
„@ohne-user.de“ „Email ungültig“
…
GUI.render(email)
Validator.validiationMessage(email)
20
codecentric AG
Analog zum Akzeptanztestbeispiel
 1 integrativer HTTP-Test
 N x Isolierte Tests
BEISPIEL WEB-SERVICE
Eingabe Ausgabe
„gueltige@email.de“ „Email OK“
„mail.ohne@tld“ „Email ungültig“
„mail.ohne.at.de“ „Email ungültig“
…
REST-Endpoint
ValidatorFacade.validate(email)
21
codecentric AG
E2E
Compo
nent
Unit
UI-TEST-PYRAMIDE
Integrationsgrad
 UI-Tests != E2E-Tests
22
codecentric AG
vollintegriert bis Backend
für
 Zusammenspiel mit Backend
 Kaum Logik: z.B. CRUD
 einfache Workflows
 Schwer testbares Legacy
UI
E2E
Compo
nent
Unit
(UI-)E2E-TESTS
23
Back-
end
codecentric AG
BEISPIEL MAIL-CLIENT
E2E
Compo
nent
Unit
Minimal-Workflow
24
codecentric AG
UI-LAYER
Komponententest
 Testbarkeit nötig
 Fat Client
 SPA + REST
 server-side rendering?
E2E
Compo
nent
Unit
25
UI
Mock
Back
end
codecentric AG
UI-LAYER
E2E
Compo
nent
Unit
für
 UI-Workflows mit wenig
Backend-Interaktion
 Session-Status
26
UI
Mock
Back
end
codecentric AG
BEISPIEL MAIL-CLIENT
E2E
Compo
nent
Unit
Mail-Bearbeitung
27
codecentric AG
UI-UNIT-TEST
für komplexe Logik
 Werte rendern
 MVP: Presenter-Logik
E2E
Compo
nent
Unit
28
UI
codecentric AG
BEISPIEL
E2E
Compo
nent
Unit
Komplexe Adressformatierung
„D-80687, München, Elsenheimerstraße 55a“
„-, München, Elsenheimerstraße 55a“?
29
UI
codecentric AG
FAZIT
UI
Service
Unit
Test Pyramide
• Orthogonal
• Integrative Tests: Integration & Tiefe
• Isolierte Tests: Conditionals & Breite
• Spitz
• Ausrichtung an Kontext-Risiken
Orthogonale Dekomposition
• Akzeptanztests splitten
• Geschäftsregeln
• UI
• E2E-, UI-Layer- und UI-Unit-Tests
30
codecentric AG
QUELLEN
• Bücher
• "Specification by Example" - Gojko Adzic
• "Growing Object-Oriented Software, Guided by Tests" - Steve
Freeman, Nat Pryce
• 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/
31
codecentric AG
QUELLEN
• End-to-end Tests?
• http://www.higherorderlogic.com/2010/01/responding-to-brian-
marick
• Testing-Pyramide
• http://martinfowler.com/bliki/TestPyramid.html
• http://jamescrisp.org/2011/05/30/automated-testing-and-the-
test-pyramid/
• Testing-Ice-Cream-Cone
• http://watirmelon.com/2012/01/31/introducing-the-software-
testing-ice-cream-cone/
• Wartbare Akzeptanztests, 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
32
codecentric AG
FRAGEN UND DISKUSSION
33
Omerzu, http://commons.wikimedia.org/wiki/File:Orange_question_mark.svg?uselang=de
codecentric AG
 Attribution-ShareAlike 3.0 Germany
 http://creativecommons.org/licenses/by-sa/3.0/de/
LIZENZ
34

Más contenido relacionado

Ähnlich wie Integration Test Hell

Automatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumAutomatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumBenjamin Schmid
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitNico Orschel
 
Testgetriebene Softwareentwicklung
Testgetriebene SoftwareentwicklungTestgetriebene Softwareentwicklung
Testgetriebene Softwareentwicklungjlink
 
ICIS User Group - Oberflächentests mittels LCT deklarativ angehen
ICIS User Group - Oberflächentests mittels LCT deklarativ angehenICIS User Group - Oberflächentests mittels LCT deklarativ angehen
ICIS User Group - Oberflächentests mittels LCT deklarativ angehenKai Donato
 
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis NachhaltigkeitUI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis NachhaltigkeitNico Orschel
 
TFS 2010 Überblick
TFS 2010 ÜberblickTFS 2010 Überblick
TFS 2010 ÜberblickSven Hubert
 
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Christian Janz
 
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Nico Orschel
 
Testautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeTestautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeNico Orschel
 
Build Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessBuild Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessRalf Abramowitsch
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsGFU Cyrus AG
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Serverguest23319
 
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...Marc Müller
 
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...Nico Orschel
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular AppFlorian Bader
 
Kosten technischer Qualität in der Softwareentwicklung
Kosten technischer Qualität in der SoftwareentwicklungKosten technischer Qualität in der Softwareentwicklung
Kosten technischer Qualität in der SoftwareentwicklungSebastian Dietrich
 
Bessere Softwareentwicklung (Itemis Wintercon)
Bessere Softwareentwicklung (Itemis Wintercon)Bessere Softwareentwicklung (Itemis Wintercon)
Bessere Softwareentwicklung (Itemis Wintercon)Sven Efftinge
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...Marc Müller
 

Ähnlich wie Integration Test Hell (20)

Automatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumAutomatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit Selenium
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
 
Testgetriebene Softwareentwicklung
Testgetriebene SoftwareentwicklungTestgetriebene Softwareentwicklung
Testgetriebene Softwareentwicklung
 
ICIS User Group - Oberflächentests mittels LCT deklarativ angehen
ICIS User Group - Oberflächentests mittels LCT deklarativ angehenICIS User Group - Oberflächentests mittels LCT deklarativ angehen
ICIS User Group - Oberflächentests mittels LCT deklarativ angehen
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Server
 
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis NachhaltigkeitUI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
UI Testautomation in der Praxis: Von Lokalisierung bis Nachhaltigkeit
 
TFS 2010 Überblick
TFS 2010 ÜberblickTFS 2010 Überblick
TFS 2010 Überblick
 
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
 
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
 
Testautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeTestautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für Fortgeschrittende
 
Build Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessBuild Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build Prozess
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Server
 
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
 
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular App
 
Kosten technischer Qualität in der Softwareentwicklung
Kosten technischer Qualität in der SoftwareentwicklungKosten technischer Qualität in der Softwareentwicklung
Kosten technischer Qualität in der Softwareentwicklung
 
Bessere Softwareentwicklung (Itemis Wintercon)
Bessere Softwareentwicklung (Itemis Wintercon)Bessere Softwareentwicklung (Itemis Wintercon)
Bessere Softwareentwicklung (Itemis Wintercon)
 
Test-Alternativen
Test-AlternativenTest-Alternativen
Test-Alternativen
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 

Mehr von David Völkel

Die Kunst der kleinen Schritte - Softwerkskammer Lübeck
Die Kunst der kleinen Schritte - Softwerkskammer LübeckDie Kunst der kleinen Schritte - Softwerkskammer Lübeck
Die Kunst der kleinen Schritte - Softwerkskammer LübeckDavid Völkel
 
KPI Driven-Development in der Praxis - XP Days Germany
KPI Driven-Development in der Praxis - XP Days GermanyKPI Driven-Development in der Praxis - XP Days Germany
KPI Driven-Development in der Praxis - XP Days GermanyDavid Völkel
 
KPI-Driven-Development
KPI-Driven-DevelopmentKPI-Driven-Development
KPI-Driven-DevelopmentDavid Völkel
 
TDD Trade-Offs @Softwerkskammer Karlsruhe
TDD Trade-Offs @Softwerkskammer KarlsruheTDD Trade-Offs @Softwerkskammer Karlsruhe
TDD Trade-Offs @Softwerkskammer KarlsruheDavid Völkel
 
Global Day of Coderetreat Munich 2018
Global Day of Coderetreat Munich 2018Global Day of Coderetreat Munich 2018
Global Day of Coderetreat Munich 2018David Völkel
 
Die Kunst der kleinen Schritte - XP Days Germany 2018
Die Kunst der kleinen Schritte - XP Days Germany 2018Die Kunst der kleinen Schritte - XP Days Germany 2018
Die Kunst der kleinen Schritte - XP Days Germany 2018David Völkel
 
Global Day of Coderetreat Munich 2017
Global Day of Coderetreat Munich 2017Global Day of Coderetreat Munich 2017
Global Day of Coderetreat Munich 2017David Völkel
 
Wann soll ich mocken?
Wann soll ich mocken?Wann soll ich mocken?
Wann soll ich mocken?David Völkel
 
Mockist vs. Classicists TDD
Mockist vs. Classicists TDDMockist vs. Classicists TDD
Mockist vs. Classicists TDDDavid Völkel
 
Unit vs. Integration Tests
Unit vs. Integration TestsUnit vs. Integration Tests
Unit vs. Integration TestsDavid Völkel
 
Baby Steps TDD Approaches
Baby Steps TDD ApproachesBaby Steps TDD Approaches
Baby Steps TDD ApproachesDavid Völkel
 
Clean Test Code (Clean Code Days)
Clean Test Code (Clean Code Days)Clean Test Code (Clean Code Days)
Clean Test Code (Clean Code Days)David Völkel
 
Mockist vs. Classicists TDD
Mockist vs. Classicists TDDMockist vs. Classicists TDD
Mockist vs. Classicists TDDDavid Völkel
 

Mehr von David Völkel (15)

Die Kunst der kleinen Schritte - Softwerkskammer Lübeck
Die Kunst der kleinen Schritte - Softwerkskammer LübeckDie Kunst der kleinen Schritte - Softwerkskammer Lübeck
Die Kunst der kleinen Schritte - Softwerkskammer Lübeck
 
KPI Driven-Development in der Praxis - XP Days Germany
KPI Driven-Development in der Praxis - XP Days GermanyKPI Driven-Development in der Praxis - XP Days Germany
KPI Driven-Development in der Praxis - XP Days Germany
 
KPI-Driven-Development
KPI-Driven-DevelopmentKPI-Driven-Development
KPI-Driven-Development
 
TDD Trade-Offs @Softwerkskammer Karlsruhe
TDD Trade-Offs @Softwerkskammer KarlsruheTDD Trade-Offs @Softwerkskammer Karlsruhe
TDD Trade-Offs @Softwerkskammer Karlsruhe
 
Global Day of Coderetreat Munich 2018
Global Day of Coderetreat Munich 2018Global Day of Coderetreat Munich 2018
Global Day of Coderetreat Munich 2018
 
Trade Off!
Trade Off!Trade Off!
Trade Off!
 
Die Kunst der kleinen Schritte - XP Days Germany 2018
Die Kunst der kleinen Schritte - XP Days Germany 2018Die Kunst der kleinen Schritte - XP Days Germany 2018
Die Kunst der kleinen Schritte - XP Days Germany 2018
 
Global Day of Coderetreat Munich 2017
Global Day of Coderetreat Munich 2017Global Day of Coderetreat Munich 2017
Global Day of Coderetreat Munich 2017
 
Wann soll ich mocken?
Wann soll ich mocken?Wann soll ich mocken?
Wann soll ich mocken?
 
Mockist vs. Classicists TDD
Mockist vs. Classicists TDDMockist vs. Classicists TDD
Mockist vs. Classicists TDD
 
Unit vs. Integration Tests
Unit vs. Integration TestsUnit vs. Integration Tests
Unit vs. Integration Tests
 
Baby Steps TDD Approaches
Baby Steps TDD ApproachesBaby Steps TDD Approaches
Baby Steps TDD Approaches
 
Clean Test Code (Clean Code Days)
Clean Test Code (Clean Code Days)Clean Test Code (Clean Code Days)
Clean Test Code (Clean Code Days)
 
Clean Test Code
Clean Test CodeClean Test Code
Clean Test Code
 
Mockist vs. Classicists TDD
Mockist vs. Classicists TDDMockist vs. Classicists TDD
Mockist vs. Classicists TDD
 

Integration Test Hell