(php)unit - bad practices
DESCRIPTION
Ein kurzer Vortrag über Bad Practices bei Unit-Test. Für den Webmontag Jena 2013-06-17TRANSCRIPT
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
Wie kann man gutTesten
Ende
1
Agenda
Was ist Unit-Testing?
Bad Practices
Wie kann man gut Testen
11
(PHP)Unit - BadPractices
Erik Witthauer
1 Was istUnit-Testing?
Bad Practices
Wie kann man gutTesten
Ende
2
Was ist Unit-Testing?
Was ist Unit-Testing?
11
(PHP)Unit - BadPractices
Erik Witthauer
1 Was istUnit-Testing?
Bad Practices
Wie kann man gutTesten
Ende
3
Was ist Unit-Testing?
Testen von kleinen Bereichen (Funktionen) im Code
Sicherstellung, dass eine Einheit das erwartete Ergebnisliefert.
11
(PHP)Unit - BadPractices
Erik Witthauer
1 Was istUnit-Testing?
Bad Practices
Wie kann man gutTesten
Ende
4
Was ist Unit-Testing?
Testen von kleinen Bereichen (Funktionen) im Code
Sicherstellung, dass eine Einheit das erwartete Ergebnisliefert.
11
(PHP)Unit - BadPractices
Erik Witthauer
1 Was istUnit-Testing?
Bad Practices
Wie kann man gutTesten
Ende
5
Was ist Unit-Testing?
Testen von kleinen Bereichen (Funktionen) im Code
Sicherstellung, dass eine Einheit das erwartete Ergebnisliefert.
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
2 Bad Practices
Wie kann man gutTesten
Ende
6
Bad Practices
Bad Practices
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
2 Bad Practices
Wie kann man gutTesten
Ende
7
Bad Practices
I Allround-FunktionenI Test-Arten vermischenI Viele interne AbhängigkeitenI Immer 100% erreichenI Alle Möglichkeiten des Frameworks nutzen wollenI Keine DokumentationI Schlechte BezeichnungI Verwirrender CodeI Extra Anweisungen für Test-SzenarienI Zu vieles Mocken
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
2 Bad Practices
Wie kann man gutTesten
Ende
8
Bad Practices
I Allround-Funktionen
I Test-Arten vermischenI Viele interne AbhängigkeitenI Immer 100% erreichenI Alle Möglichkeiten des Frameworks nutzen wollenI Keine DokumentationI Schlechte BezeichnungI Verwirrender CodeI Extra Anweisungen für Test-SzenarienI Zu vieles Mocken
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
2 Bad Practices
Wie kann man gutTesten
Ende
9
Bad Practices
I Allround-FunktionenI Test-Arten vermischen
I Viele interne AbhängigkeitenI Immer 100% erreichenI Alle Möglichkeiten des Frameworks nutzen wollenI Keine DokumentationI Schlechte BezeichnungI Verwirrender CodeI Extra Anweisungen für Test-SzenarienI Zu vieles Mocken
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
2 Bad Practices
Wie kann man gutTesten
Ende
10
Bad Practices
I Allround-FunktionenI Test-Arten vermischenI Viele interne Abhängigkeiten
I Immer 100% erreichenI Alle Möglichkeiten des Frameworks nutzen wollenI Keine DokumentationI Schlechte BezeichnungI Verwirrender CodeI Extra Anweisungen für Test-SzenarienI Zu vieles Mocken
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
2 Bad Practices
Wie kann man gutTesten
Ende
11
Bad Practices
I Allround-FunktionenI Test-Arten vermischenI Viele interne AbhängigkeitenI Immer 100% erreichen
I Alle Möglichkeiten des Frameworks nutzen wollenI Keine DokumentationI Schlechte BezeichnungI Verwirrender CodeI Extra Anweisungen für Test-SzenarienI Zu vieles Mocken
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
2 Bad Practices
Wie kann man gutTesten
Ende
12
Bad Practices
I Allround-FunktionenI Test-Arten vermischenI Viele interne AbhängigkeitenI Immer 100% erreichenI Alle Möglichkeiten des Frameworks nutzen wollen
I Keine DokumentationI Schlechte BezeichnungI Verwirrender CodeI Extra Anweisungen für Test-SzenarienI Zu vieles Mocken
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
2 Bad Practices
Wie kann man gutTesten
Ende
13
Bad Practices
I Allround-FunktionenI Test-Arten vermischenI Viele interne AbhängigkeitenI Immer 100% erreichenI Alle Möglichkeiten des Frameworks nutzen wollenI Keine Dokumentation
I Schlechte BezeichnungI Verwirrender CodeI Extra Anweisungen für Test-SzenarienI Zu vieles Mocken
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
2 Bad Practices
Wie kann man gutTesten
Ende
14
Bad Practices
I Allround-FunktionenI Test-Arten vermischenI Viele interne AbhängigkeitenI Immer 100% erreichenI Alle Möglichkeiten des Frameworks nutzen wollenI Keine DokumentationI Schlechte Bezeichnung
I Verwirrender CodeI Extra Anweisungen für Test-SzenarienI Zu vieles Mocken
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
2 Bad Practices
Wie kann man gutTesten
Ende
15
Bad Practices
I Allround-FunktionenI Test-Arten vermischenI Viele interne AbhängigkeitenI Immer 100% erreichenI Alle Möglichkeiten des Frameworks nutzen wollenI Keine DokumentationI Schlechte BezeichnungI Verwirrender Code
I Extra Anweisungen für Test-SzenarienI Zu vieles Mocken
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
2 Bad Practices
Wie kann man gutTesten
Ende
16
Bad Practices
I Allround-FunktionenI Test-Arten vermischenI Viele interne AbhängigkeitenI Immer 100% erreichenI Alle Möglichkeiten des Frameworks nutzen wollenI Keine DokumentationI Schlechte BezeichnungI Verwirrender CodeI Extra Anweisungen für Test-Szenarien
I Zu vieles Mocken
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
2 Bad Practices
Wie kann man gutTesten
Ende
17
Bad Practices
I Allround-FunktionenI Test-Arten vermischenI Viele interne AbhängigkeitenI Immer 100% erreichenI Alle Möglichkeiten des Frameworks nutzen wollenI Keine DokumentationI Schlechte BezeichnungI Verwirrender CodeI Extra Anweisungen für Test-SzenarienI Zu vieles Mocken
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
18
Wie kann man gut Testen
Wie kann man gut Testen
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
19
Wie kann man gut Testen
I Kleine Funktionen für eine AufgabeI Je Test nur einen Fall beachtenI Keine Abläufe testen
→ Acceptance Test, End-to-End Test, Edge-to-EdgeTest, System Test etc.
I Nicht alle Funktionen des Frameworks nutzen (müssen)
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
20
Wie kann man gut Testen
I Kleine Funktionen für eine Aufgabe
I Je Test nur einen Fall beachtenI Keine Abläufe testen
→ Acceptance Test, End-to-End Test, Edge-to-EdgeTest, System Test etc.
I Nicht alle Funktionen des Frameworks nutzen (müssen)
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
21
Wie kann man gut Testen
I Kleine Funktionen für eine AufgabeI Je Test nur einen Fall beachten
I Keine Abläufe testen→ Acceptance Test, End-to-End Test, Edge-to-EdgeTest, System Test etc.
I Nicht alle Funktionen des Frameworks nutzen (müssen)
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
22
Wie kann man gut Testen
I Kleine Funktionen für eine AufgabeI Je Test nur einen Fall beachtenI Keine Abläufe testen
→ Acceptance Test, End-to-End Test, Edge-to-EdgeTest, System Test etc.
I Nicht alle Funktionen des Frameworks nutzen (müssen)
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
23
Wie kann man gut Testen
I Kleine Funktionen für eine AufgabeI Je Test nur einen Fall beachtenI Keine Abläufe testen
→ Acceptance Test, End-to-End Test, Edge-to-EdgeTest, System Test etc.
I Nicht alle Funktionen des Frameworks nutzen (müssen)
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
24
Wie kann man gut Testen
I Kleine Funktionen für eine AufgabeI Je Test nur einen Fall beachtenI Keine Abläufe testen
→ Acceptance Test, End-to-End Test, Edge-to-EdgeTest, System Test etc.
I Nicht alle Funktionen des Frameworks nutzen (müssen)
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
25
Wie kann man gut Testen
I Abhängigkeiten austauschbar machen → DependencyInjection
I Möglichst keine globalen VariablenI Keine ’Orte’ voraussetzen (Registry o.ä.)I Möglichst nur einen RückgabetypenI Nicht immer 100% erreichen, das wichtigste reichtI Keine Überraschungen im CodeI Keine Tricks für Tests nutzen
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
26
Wie kann man gut Testen
I Abhängigkeiten austauschbar machen → DependencyInjection
I Möglichst keine globalen VariablenI Keine ’Orte’ voraussetzen (Registry o.ä.)I Möglichst nur einen RückgabetypenI Nicht immer 100% erreichen, das wichtigste reichtI Keine Überraschungen im CodeI Keine Tricks für Tests nutzen
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
27
Wie kann man gut Testen
I Abhängigkeiten austauschbar machen → DependencyInjection
I Möglichst keine globalen Variablen
I Keine ’Orte’ voraussetzen (Registry o.ä.)I Möglichst nur einen RückgabetypenI Nicht immer 100% erreichen, das wichtigste reichtI Keine Überraschungen im CodeI Keine Tricks für Tests nutzen
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
28
Wie kann man gut Testen
I Abhängigkeiten austauschbar machen → DependencyInjection
I Möglichst keine globalen VariablenI Keine ’Orte’ voraussetzen (Registry o.ä.)
I Möglichst nur einen RückgabetypenI Nicht immer 100% erreichen, das wichtigste reichtI Keine Überraschungen im CodeI Keine Tricks für Tests nutzen
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
29
Wie kann man gut Testen
I Abhängigkeiten austauschbar machen → DependencyInjection
I Möglichst keine globalen VariablenI Keine ’Orte’ voraussetzen (Registry o.ä.)I Möglichst nur einen Rückgabetypen
I Nicht immer 100% erreichen, das wichtigste reichtI Keine Überraschungen im CodeI Keine Tricks für Tests nutzen
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
30
Wie kann man gut Testen
I Abhängigkeiten austauschbar machen → DependencyInjection
I Möglichst keine globalen VariablenI Keine ’Orte’ voraussetzen (Registry o.ä.)I Möglichst nur einen RückgabetypenI Nicht immer 100% erreichen, das wichtigste reicht
I Keine Überraschungen im CodeI Keine Tricks für Tests nutzen
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
31
Wie kann man gut Testen
I Abhängigkeiten austauschbar machen → DependencyInjection
I Möglichst keine globalen VariablenI Keine ’Orte’ voraussetzen (Registry o.ä.)I Möglichst nur einen RückgabetypenI Nicht immer 100% erreichen, das wichtigste reichtI Keine Überraschungen im Code
I Keine Tricks für Tests nutzen
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
32
Wie kann man gut Testen
I Abhängigkeiten austauschbar machen → DependencyInjection
I Möglichst keine globalen VariablenI Keine ’Orte’ voraussetzen (Registry o.ä.)I Möglichst nur einen RückgabetypenI Nicht immer 100% erreichen, das wichtigste reichtI Keine Überraschungen im CodeI Keine Tricks für Tests nutzen
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
3 Wie kann man gutTesten
Ende
33
Wie kann man gut Testen
The secret in testing is in writingtestable code!Miško Hevery
11
(PHP)Unit - BadPractices
Erik Witthauer
Was istUnit-Testing?
Bad Practices
Wie kann man gutTesten
4 Ende
34
Vielen Dank