slides.md 1.8 KB
Newer Older
mrodzis's avatar
mrodzis committed
1
2
3
4
5

test

---

mrodzis's avatar
mrodzis committed
6
<!-- .slide: id="title-page" -->
mrodzis's avatar
mrodzis committed
7
8
# Test Driven Development

mrodzis's avatar
mrodzis committed
9
Stefan Hynek, Michelle Weidling<!-- .element: id="author-name" -->
mrodzis's avatar
mrodzis committed
10

mrodzis's avatar
mrodzis committed
11
<small>Niedersächsische Staats- und Universitätsbibliothek Göttingen</small><!-- .element: id="institution-name" -->
mrodzis's avatar
mrodzis committed
12

mrodzis's avatar
mrodzis committed
13
<small>https://gitlab.gwdg.de/mrodzis/slides</small><!-- .element: id="gitlab" -->
mrodzis's avatar
mrodzis committed
14

mrodzis's avatar
mrodzis committed
15
16
17
---

## Ablauf
mrodzis's avatar
mrodzis committed
18
19
20
21
22

- Einführung: Was ist Test Driven Development?
- Hands-on: Jupyter Notebook
- Fragen, Diskussion, Feedback

mrodzis's avatar
mrodzis committed
23
24
---

mrodzis's avatar
mrodzis committed
25
26
27
28
29
30
31
32
## Alltägliche Entwickler:innenprobleme

- Bugs
- unerwartete Seiteneffekte bei Codeänderungen
- ... die vielleicht erst viel später auffallen

---

mrodzis's avatar
mrodzis committed
33
34
35
36
37
## TDD

1. schreibe einen Test, der **fehlschlägt**
2. schreibe Code, der den Test gerade so **bestehen** lässt
3. refaktoriere deinen Code
mrodzis's avatar
mrodzis committed
38
4. repeat
mrodzis's avatar
mrodzis committed
39
40
41

---

mrodzis's avatar
mrodzis committed
42
43
44
45
Zeit fürs Jupyter Notebook!

---

mrodzis's avatar
mrodzis committed
46
47
48
49
## TDD und andere Entwicklungsmodelle

- Documentation Driven Development
- Behaviour Driven Development
mrodzis's avatar
mrodzis committed
50
- Issue Driven Development
mrodzis's avatar
mrodzis committed
51
52
- ...

mrodzis's avatar
mrodzis committed
53
54
... schließen sich nicht aus!

mrodzis's avatar
mrodzis committed
55
56
57
58
59
---

## Vorteile

- erzeugt kleine, gut testbare Funktionen mit hoher Kohäsion und geringer Kopplung
mrodzis's avatar
mrodzis committed
60
  - erzwingt ein halbwegs sauberes Moduldesign
mrodzis's avatar
mrodzis committed
61
62
63
64
65
66
67
68
69
70
- erleichtert spätere Änderungen (_fearless programming_)
  - auch zeitliche Einsparungen
- Regressionstests inklusive

---

## Nachteile

- Änderungen an Datenstrukturen bringen z.T. umfangreiche Änderungen an den Tests mit sich
- Code immer nur so gut wie die Tests (_boundary cases_)
mrodzis's avatar
mrodzis committed
71
  - ggf. falsche Sicherheit ("da kann nichts falsch sein, die Tests laufen ja durch!")
mrodzis's avatar
mrodzis committed
72
73
74

---

mrodzis's avatar
mrodzis committed
75
76
77
## TDD einsetzen – ja/nein?

- Tests sind (i.d.R.) besser als keine Tests
mrodzis's avatar
mrodzis committed
78
- niedrigschwellige Lösung: **TDD beim Debugging**
mrodzis's avatar
mrodzis committed
79
80
81

---

mrodzis's avatar
mrodzis committed
82
83
84
85
## Neugierig geworden?

- Beck, Kent. Test-Driven Development By Example. Boston, London 2003.
- Fowler, Martin. Refactoring. Improving the Design of Existing Code. Boston, London 2019.