(PHP)Unit - Bad Practices
Ansätze für testbaren Code
Erik Witthauer e.witthauer@gmail.com
2013-06-14
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
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?
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?
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
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.
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
11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
2 Bad Practices
Wie kann man gut
Testen
Ende
7
Bad Practices
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
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
(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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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)
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
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
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
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.ä.)
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
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
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
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
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
11
(PHP)Unit - Bad
Practices
Erik Witthauer
Was ist
Unit-Testing?
Bad Practices
Wie kann man gut
Testen
4 Ende
34
Vielen Dank

(PHP)Unit - bad Practices

  • 1.
    (PHP)Unit - BadPractices Ansätze für testbaren Code Erik Witthauer e.witthauer@gmail.com 2013-06-14
  • 2.
    11 (PHP)Unit - Bad Practices ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 1 Was ist Unit-Testing? Bad Practices Wie kann man gut Testen Ende 3 Was ist Unit-Testing?
  • 5.
    11 (PHP)Unit - Bad Practices ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer Was ist Unit-Testing? 2 Bad Practices Wie kann man gut Testen Ende 6 Bad Practices Bad Practices
  • 8.
    11 (PHP)Unit - Bad Practices ErikWitthauer Was ist Unit-Testing? 2 Bad Practices Wie kann man gut Testen Ende 7 Bad Practices
  • 9.
    11 (PHP)Unit - Bad Practices ErikWitthauer Was ist Unit-Testing? 2 Bad Practices Wie kann man gut Testen Ende 8 Bad Practices Allround-Funktionen
  • 10.
    11 (PHP)Unit - Bad Practices ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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 ErikWitthauer 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
  • 35.
    11 (PHP)Unit - Bad Practices ErikWitthauer Was ist Unit-Testing? Bad Practices Wie kann man gut Testen 4 Ende 34 Vielen Dank