Integration Test Hell

1.576 Aufrufe

Veröffentlicht am

Veröffentlicht in: Software
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.576
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
16
Aktionen
Geteilt
0
Downloads
8
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Integration Test Hell

  1. 1. codecentric AG David Völkel – SEACON 2014 – 09.05.2014 INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN?
  2. 2. codecentric AG DAVID VÖLKEL 2 IT-Consultant Schwerpunkte  Test-Driven Development  Softwaredesign & Clean Code  Software Craftsman @softwerkskammer Twitter: @davidvoelkel
  3. 3. codecentric AG isoliert integriert 3 AUTOMATISIERTE TESTS vs.
  4. 4. codecentric AG $(isoliert) $(integriert) 4 TESTKOSTEN
  5. 5. codecentric AG $(isolierter) $(integrierter) $(viele integrierte) 5 WELCOME TO INTEGRATION TEST HELL!
  6. 6. codecentric AG Testpyramide Orthogonale Dekomposition - Akzeptanztests - UI-Tests Fazit Diskussion AGENDA
  7. 7. codecentric AG TESTPYRAMIDE = EFFEKTIVE TESTSTRATEGIE 7 UI Service Unit IntegrationsgradNach Mike Cohn
  8. 8. 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
  9. 9. 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?
  10. 10. codecentric AG Isoliert Integriert Stärken Komplexe Logik („kombinatorische Explosion“), Conditionals, Breite Integration, Datenflüsse, Tiefe 10 WELCHER TESTLING?
  11. 11. codecentric AG Vermischung Verantwortlichkeiten  Integration  Logik ÜBERLADENE INTEGRATIONSTESTS 11
  12. 12. codecentric AG „Single Responsibility Principle“ für Tests ORTHOGONALE DEKOMPOSITION 12
  13. 13. codecentric AG „BREIT“ & „TIEF“ . IntegrativeTests Isolierte Tests & orthogonal 13
  14. 14. codecentric AG Inspiriert durch "the testing iceberg“ von Seb Rose / Matt Wynne DIMENSION FACHLICHKEIT Akzeptanztests Entwicklertests Fachlichkeit Integrationsgrad . 14
  15. 15. 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
  16. 16. codecentric AG AKZEPTANZTESTS AUFSPLITTEN UI Domain Rules 16 Akzeptanztests
  17. 17. codecentric AG AKZEPTANZTESTS AUFSPLITTEN 17
  18. 18. codecentric AG AKZEPTANZTESTS AUFSPLITTEN UI Domain Rules 18
  19. 19. 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
  20. 20. 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
  21. 21. 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
  22. 22. codecentric AG E2E Compo nent Unit UI-TEST-PYRAMIDE Integrationsgrad  UI-Tests != E2E-Tests 22
  23. 23. 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
  24. 24. codecentric AG BEISPIEL MAIL-CLIENT E2E Compo nent Unit Minimal-Workflow 24
  25. 25. codecentric AG UI-LAYER Komponententest  Testbarkeit nötig  Fat Client  SPA + REST  server-side rendering? E2E Compo nent Unit 25 UI Mock Back end
  26. 26. codecentric AG UI-LAYER E2E Compo nent Unit für  UI-Workflows mit wenig Backend-Interaktion  Session-Status 26 UI Mock Back end
  27. 27. codecentric AG BEISPIEL MAIL-CLIENT E2E Compo nent Unit Mail-Bearbeitung 27
  28. 28. codecentric AG UI-UNIT-TEST für komplexe Logik  Werte rendern  MVP: Presenter-Logik E2E Compo nent Unit 28 UI
  29. 29. codecentric AG BEISPIEL E2E Compo nent Unit Komplexe Adressformatierung „D-80687, München, Elsenheimerstraße 55a“ „-, München, Elsenheimerstraße 55a“? 29 UI
  30. 30. 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
  31. 31. 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
  32. 32. 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
  33. 33. codecentric AG FRAGEN UND DISKUSSION 33 Omerzu, http://commons.wikimedia.org/wiki/File:Orange_question_mark.svg?uselang=de
  34. 34. codecentric AG  Attribution-ShareAlike 3.0 Germany  http://creativecommons.org/licenses/by-sa/3.0/de/ LIZENZ 34

×