(php)unit - bad practices

35
(PHP)Unit - Bad Practices Ansätze für testbaren Code Erik Witthauer [email protected] 2013-06-14

Upload: ewslide

Post on 26-Jun-2015

237 views

Category:

Education


0 download

DESCRIPTION

Ein kurzer Vortrag über Bad Practices bei Unit-Test. Für den Webmontag Jena 2013-06-17

TRANSCRIPT

Page 1: (PHP)Unit - bad Practices

(PHP)Unit - Bad Practices

Ansätze für testbaren Code

Erik Witthauer [email protected]

2013-06-14

Page 2: (PHP)Unit - bad Practices

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

Page 3: (PHP)Unit - bad Practices

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?

Page 4: (PHP)Unit - bad Practices

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.

Page 5: (PHP)Unit - bad Practices

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.

Page 6: (PHP)Unit - bad Practices

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.

Page 7: (PHP)Unit - bad Practices

11

(PHP)Unit - BadPractices

Erik Witthauer

Was istUnit-Testing?

2 Bad Practices

Wie kann man gutTesten

Ende

6

Bad Practices

Bad Practices

Page 8: (PHP)Unit - 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

Page 9: (PHP)Unit - bad Practices

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

Page 10: (PHP)Unit - bad Practices

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

Page 11: (PHP)Unit - bad Practices

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

Page 12: (PHP)Unit - bad Practices

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

Page 13: (PHP)Unit - bad Practices

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

Page 14: (PHP)Unit - bad Practices

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

Page 15: (PHP)Unit - bad Practices

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

Page 16: (PHP)Unit - bad Practices

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

Page 17: (PHP)Unit - bad Practices

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

Page 18: (PHP)Unit - bad Practices

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

Page 19: (PHP)Unit - bad Practices

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

Page 20: (PHP)Unit - bad Practices

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)

Page 21: (PHP)Unit - bad Practices

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)

Page 22: (PHP)Unit - bad Practices

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)

Page 23: (PHP)Unit - bad Practices

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)

Page 24: (PHP)Unit - bad Practices

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)

Page 25: (PHP)Unit - bad Practices

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)

Page 26: (PHP)Unit - bad Practices

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

Page 27: (PHP)Unit - bad Practices

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

Page 28: (PHP)Unit - bad Practices

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

Page 29: (PHP)Unit - bad Practices

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

Page 30: (PHP)Unit - bad Practices

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

Page 31: (PHP)Unit - bad Practices

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

Page 32: (PHP)Unit - bad Practices

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

Page 33: (PHP)Unit - bad Practices

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

Page 34: (PHP)Unit - bad Practices

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

Page 35: (PHP)Unit - bad Practices

11

(PHP)Unit - BadPractices

Erik Witthauer

Was istUnit-Testing?

Bad Practices

Wie kann man gutTesten

4 Ende

34

Vielen Dank