LAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdf
(PHP)Unit - bad Practices
1. (PHP)Unit - Bad Practices
Ansätze für testbaren Code
Erik Witthauer e.witthauer@gmail.com
2013-06-14
2. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
Wie kann man gut
Testen
Ende
1
Agenda
Was ist Unit-Testing?
Bad Practices
Wie kann man gut Testen
3. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
1 Was ist
Unit-Testing?
Bad Practices
Wie kann man gut
Testen
Ende
2
Was ist Unit-Testing?
Was ist Unit-Testing?
4. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
1 Was ist
Unit-Testing?
Bad Practices
Wie kann man gut
Testen
Ende
3
Was ist Unit-Testing?
5. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
1 Was ist
Unit-Testing?
Bad Practices
Wie kann man gut
Testen
Ende
4
Was ist Unit-Testing?
Testen von kleinen Bereichen (Funktionen) im Code
6. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
1 Was ist
Unit-Testing?
Bad Practices
Wie kann man gut
Testen
Ende
5
Was ist Unit-Testing?
Testen von kleinen Bereichen (Funktionen) im Code
Sicherstellung, dass eine Einheit das erwartete Ergebnis
liefert.
7. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
2 Bad Practices
Wie kann man gut
Testen
Ende
6
Bad Practices
Bad Practices
9. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
2 Bad Practices
Wie kann man gut
Testen
Ende
8
Bad Practices
Allround-Funktionen
10. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
2 Bad Practices
Wie kann man gut
Testen
Ende
9
Bad Practices
Allround-Funktionen
Test-Arten vermischen
11. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
2 Bad Practices
Wie kann man gut
Testen
Ende
10
Bad Practices
Allround-Funktionen
Test-Arten vermischen
Viele interne Abhängigkeiten
12. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
2 Bad Practices
Wie kann man gut
Testen
Ende
11
Bad Practices
Allround-Funktionen
Test-Arten vermischen
Viele interne Abhängigkeiten
Immer 100% erreichen
13. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
2 Bad Practices
Wie kann man gut
Testen
Ende
12
Bad Practices
Allround-Funktionen
Test-Arten vermischen
Viele interne Abhängigkeiten
Immer 100% erreichen
Alle Möglichkeiten des Frameworks nutzen wollen
14. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
2 Bad Practices
Wie kann man gut
Testen
Ende
13
Bad Practices
Allround-Funktionen
Test-Arten vermischen
Viele interne Abhängigkeiten
Immer 100% erreichen
Alle Möglichkeiten des Frameworks nutzen wollen
Keine Dokumentation
15. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
2 Bad Practices
Wie kann man gut
Testen
Ende
14
Bad Practices
Allround-Funktionen
Test-Arten vermischen
Viele interne Abhängigkeiten
Immer 100% erreichen
Alle Möglichkeiten des Frameworks nutzen wollen
Keine Dokumentation
Schlechte Bezeichnung
16. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
2 Bad Practices
Wie kann man gut
Testen
Ende
15
Bad Practices
Allround-Funktionen
Test-Arten vermischen
Viele interne Abhängigkeiten
Immer 100% erreichen
Alle Möglichkeiten des Frameworks nutzen wollen
Keine Dokumentation
Schlechte Bezeichnung
Verwirrender Code
17. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
2 Bad Practices
Wie kann man gut
Testen
Ende
16
Bad Practices
Allround-Funktionen
Test-Arten vermischen
Viele interne Abhängigkeiten
Immer 100% erreichen
Alle Möglichkeiten des Frameworks nutzen wollen
Keine Dokumentation
Schlechte Bezeichnung
Verwirrender Code
Extra Anweisungen für Test-Szenarien
18. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
2 Bad Practices
Wie kann man gut
Testen
Ende
17
Bad Practices
Allround-Funktionen
Test-Arten vermischen
Viele interne Abhängigkeiten
Immer 100% erreichen
Alle Möglichkeiten des Frameworks nutzen wollen
Keine Dokumentation
Schlechte Bezeichnung
Verwirrender Code
Extra Anweisungen für Test-Szenarien
Zu vieles Mocken
19. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
18
Wie kann man gut Testen
Wie kann man gut Testen
20. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
19
Wie kann man gut Testen
21. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
20
Wie kann man gut Testen
Kleine Funktionen für eine Aufgabe
22. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
21
Wie kann man gut Testen
Kleine Funktionen für eine Aufgabe
Je Test nur einen Fall beachten
23. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
22
Wie kann man gut Testen
Kleine Funktionen für eine Aufgabe
Je Test nur einen Fall beachten
Keine Abläufe testen
24. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
23
Wie kann man gut Testen
Kleine Funktionen für eine Aufgabe
Je Test nur einen Fall beachten
Keine Abläufe testen
→ Acceptance Test, End-to-End Test, Edge-to-Edge
Test, System Test etc.
25. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
24
Wie kann man gut Testen
Kleine Funktionen für eine Aufgabe
Je Test nur einen Fall beachten
Keine Abläufe testen
→ Acceptance Test, End-to-End Test, Edge-to-Edge
Test, System Test etc.
Nicht alle Funktionen des Frameworks nutzen (müssen)
26. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
25
Wie kann man gut Testen
27. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
26
Wie kann man gut Testen
Abhängigkeiten austauschbar machen → Dependency
Injection
28. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
27
Wie kann man gut Testen
Abhängigkeiten austauschbar machen → Dependency
Injection
Möglichst keine globalen Variablen
29. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
28
Wie kann man gut Testen
Abhängigkeiten austauschbar machen → Dependency
Injection
Möglichst keine globalen Variablen
Keine ’Orte’ voraussetzen (Registry o.ä.)
30. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
29
Wie kann man gut Testen
Abhängigkeiten austauschbar machen → Dependency
Injection
Möglichst keine globalen Variablen
Keine ’Orte’ voraussetzen (Registry o.ä.)
Möglichst nur einen Rückgabetypen
31. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
30
Wie kann man gut Testen
Abhängigkeiten austauschbar machen → Dependency
Injection
Möglichst keine globalen Variablen
Keine ’Orte’ voraussetzen (Registry o.ä.)
Möglichst nur einen Rückgabetypen
Nicht immer 100% erreichen, das wichtigste reicht
32. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
31
Wie kann man gut Testen
Abhängigkeiten austauschbar machen → Dependency
Injection
Möglichst keine globalen Variablen
Keine ’Orte’ voraussetzen (Registry o.ä.)
Möglichst nur einen Rückgabetypen
Nicht immer 100% erreichen, das wichtigste reicht
Keine Überraschungen im Code
33. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
32
Wie kann man gut Testen
Abhängigkeiten austauschbar machen → Dependency
Injection
Möglichst keine globalen Variablen
Keine ’Orte’ voraussetzen (Registry o.ä.)
Möglichst nur einen Rückgabetypen
Nicht immer 100% erreichen, das wichtigste reicht
Keine Überraschungen im Code
Keine Tricks für Tests nutzen
34. 11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
3 Wie kann man gut
Testen
Ende
33
Wie kann man gut Testen
The secret in testing is in writing
testable code!
Miško Hevery