Phpunit

610 Aufrufe

Veröffentlicht am

PhpUnit am Beispiel eines Getränkeautomat erklärt. Bietet einen Einstieg in die Thematik und soll jemanden der an dem Thema interessiert über die ersten Hürden helfen.

Veröffentlicht in: Technologie
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
610
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
12
Aktionen
Geteilt
0
Downloads
2
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Phpunit

  1. 1. PhpUnit Robert Deutz, Joomladay Germany 2013 Unit Tests in Joomla! Einführung und Grundlegendes Montag, 16. September 13
  2. 2. Die unvermeidlichen .. Montag, 16. September 13
  3. 3. 2002 Selbstständig 2005 Mamboday 2006 Joomladay 2008 2010 1.5 Beez OSM 2012 2013 JWC Robert Deutz Montag, 16. September 13
  4. 4. • Alle Entwicklungen unter einem Dach • Zentrale Anlaufstelle • Updates Montag, 16. September 13
  5. 5. Ziel? Montag, 16. September 13
  6. 6. Interesse wecken! Montag, 16. September 13
  7. 7. aber wie ...... Montag, 16. September 13
  8. 8. .. anfangen Montag, 16. September 13
  9. 9. - einfach - Montag, 16. September 13
  10. 10. DRINKS coins Beer Water Montag, 16. September 13
  11. 11. Black Box Montag, 16. September 13
  12. 12. Erwartungen Montag, 16. September 13
  13. 13. Behauptungen - assertion - Montag, 16. September 13
  14. 14. Back to Drinks Montag, 16. September 13
  15. 15. DRINKS coins Beer Water Erwartung: Wenn ich Geld einwerfe und auf die Taste „Beer“ drücke, dann kommt unten ein Bier raus Test: Geld einwerfen und auf die Taste Beer drücken. Ergebnis: Bier Montag, 16. September 13
  16. 16. DEMO 1 Montag, 16. September 13
  17. 17. Aha • Code Coverage zeigt welche Programmteile durchlaufen wurden • Obwohl alles durchlaufen wurde, bedeutet das nicht das alles getestet wurde • Nicht vergessen die Ursprungsklasse einzubinden Montag, 16. September 13
  18. 18. Assertions • assert[Not]Equals() • assert[Not]False() • assert[Not]Null() • assertArrayHasKey() • assert[Not]Empty() Montag, 16. September 13
  19. 19. DEMO 2 Montag, 16. September 13
  20. 20. Aha • Jeder Test läuft isoliert mit, setup() und teardown() initialisieren wir die Testumgebung • Wie haben eindeutig zu wenig Bier ;-) Montag, 16. September 13
  21. 21. DEMO 3 Montag, 16. September 13
  22. 22. Aha • Jeder Test der einen Dataprovider verwendet läuft AUCH isoliert, setup() und teardown() werden für jedes Datum aufgerufen und initialisieren die Testumgebung • Das Problem mit dem zu wenig Bier ist gelöst ;-) Montag, 16. September 13
  23. 23. Wie schreibe ich Tests? Montag, 16. September 13
  24. 24. Falsche Frage oder Falscher Zeitpunkt Montag, 16. September 13
  25. 25. „Schlechter“ Code ist schwer zu testen Montag, 16. September 13
  26. 26. Perfekt: Wenn Tests vor dem eigentlichen Code geschrieben werden Montag, 16. September 13
  27. 27. Reality Check! Montag, 16. September 13
  28. 28. Also, was beachten? Montag, 16. September 13
  29. 29. Programmiere einfach Montag, 16. September 13
  30. 30. einfach? • Kleine Funktionen mit EINER Aufgabe • Klassen die eine Problemstellung lösen • Probleme und Aufgaben soweit unterteilen wir irgend möglich • Überschaubarer Programmcode. Montag, 16. September 13
  31. 31. Cyclomatic Complexity Montag, 16. September 13
  32. 32. Anzahl der Entscheidungspunkte in einer Routine Montag, 16. September 13
  33. 33. N-Path Complexity Montag, 16. September 13
  34. 34. Anzahl der eindeutigen Pfade durch eine Routine Montag, 16. September 13
  35. 35. DEMO 4 Montag, 16. September 13
  36. 36. Zusammenhang: Cyclomatic und N-Path Complexity NP = 2 ^ (CC-1) Montag, 16. September 13
  37. 37. <16 Geringe Komplexität 17-128 Mittlere Komplexität 129-1024 Hohe Komplexität >1025 Sehr hohe Komplexität N-Path Complexity Montag, 16. September 13
  38. 38. N-Path ist: Die minimale Anzahl der Tests die nötig sind eine Routine komplett zu testen Montag, 16. September 13
  39. 39. Back to Drinks Montag, 16. September 13
  40. 40. DEMO 5+6 Montag, 16. September 13
  41. 41. Aha • Durch die Tests ist aufgefallen, das wir die Schnittstelle geändert haben. • Mit „Unit Tests“ testen wir die öffentlichen Schnittstellen einer Klasse Montag, 16. September 13
  42. 42. Ups • Wir testen nun auch die Klasse „CoinChecker“, damit ist der Erfolg unserer Tests von einer anderen Klasse abhängig • Unsere Klasse hat neudeutsch eine Dependency und kann nicht mehr isoliert getestet werden. • Die Klasse ist auch noch hardcoded in unserer Klasse eingebunden Montag, 16. September 13
  43. 43. BÖSE public function processInsertedCoins($coin) { $credits = CoinChecker::CalculateCredits($coin); $this->countAcceptedCoins($credits); } Montag, 16. September 13
  44. 44. DEMO 7+8 Montag, 16. September 13
  45. 45. Aha • Abhängigkeiten sollten vermieden werden. • Sind andere Klassen notwendig können diese ggf. durch Mock-Klassen ersetzt werden • Mock Objekte können auch onTheFly erzeugt werden. • Am besten so programmieren, als ob es statische Klassenaufrufe nicht geben würde. Montag, 16. September 13
  46. 46. Joomla Montag, 16. September 13
  47. 47. DANKE Montag, 16. September 13
  48. 48. * https://github.com/sebastianbergmann/phpunit/ * http://blog.ircmaxell.com/2013/05/development-by-numbers-slides.html Code examples die in diesem Vortrag verwendet worden sind: * https://github.com/rdeutz/talk-jd13de-unittests Links Montag, 16. September 13

×