1
00:00:01,680 --> 00:00:04,400
Moin, zu einer neuen Folge 
einfach komplex. 

2
00:00:04,400 --> 00:00:07,680
Wir haben Grad überlegt welche 
Nummer es ist, aber 103 

3
00:00:07,680 --> 00:00:10,160
wahrscheinlich. 
Hoffentlich 103 ja. 

4
00:00:10,720 --> 00:00:13,680
Wir sind wieder zu zweit da, 
also der Burkhard und ich 

5
00:00:13,680 --> 00:00:14,800
Gerrit. 
Ja Moin. 

6
00:00:15,040 --> 00:00:16,920
Ja Moin, die hat sich schon 
gehört auf der Tonspur. 

7
00:00:16,920 --> 00:00:19,800
Ja, richtig. 
Und wir wollen heute mal das 

8
00:00:19,800 --> 00:00:22,640
Thema Software Testing 
besprechen, und zwar die groben 

9
00:00:22,640 --> 00:00:25,240
Züge, was Testing eigentlich 
bedeutet, weil wir haben 

10
00:00:25,240 --> 00:00:26,960
gemerkt. 
Schon so viele Folgen gemacht 

11
00:00:26,960 --> 00:00:29,640
und noch nie so explizit über 
Tests gesprochen, obwohl es ja 

12
00:00:29,640 --> 00:00:32,600
eigentlich total, ja naheliegend
auf der Hand liegt. 

13
00:00:32,600 --> 00:00:35,520
Also weil es ja immer dazu 
gehört, nehm ich an ne beim 

14
00:00:35,520 --> 00:00:36,880
Entwickeln von Software auch, 
oder? 

15
00:00:37,360 --> 00:00:40,320
Muss ja, mir hat mal 
irgendjemand gesagt, eine eine 

16
00:00:40,320 --> 00:00:43,200
Software die keine 
entsprechenden Tests hat ist 

17
00:00:43,200 --> 00:00:45,920
nicht ist keine Software die die
du in Markt schicken kannst. 

18
00:00:45,920 --> 00:00:47,840
Das ist Spielwiese für dich 
selbst. 

19
00:00:48,480 --> 00:00:50,800
Muss immer Tests dabei sein, ja 
sonst weißt du nicht was los 

20
00:00:50,800 --> 00:00:53,040
ist. 
Gehört also in einem Atemzug 

21
00:00:53,040 --> 00:00:55,280
dazu. 
Ja, Software und deren Test. 

22
00:00:56,160 --> 00:00:58,880
Warum denn eigentlich? 
Warum testen wir Software 

23
00:00:58,880 --> 00:01:00,840
Burkhard? 
Alles klar. 

24
00:01:00,840 --> 00:01:02,240
Machen wir mal den Einstieg in 
die Folge. 

25
00:01:02,960 --> 00:01:05,120
Ich hab ich hab gerade schon 
angeteasert, dass ich ne ne 

26
00:01:05,120 --> 00:01:07,080
schöne Geschichte, ich weiß 
nicht ob er sie kennt, oft hab 

27
00:01:07,080 --> 00:01:09,200
ich ja Geschichten auch schon 2 
oder 3 mal erzählt im Podcast 

28
00:01:09,200 --> 00:01:12,640
aber nicht das weiß ich, also 
erzähl ich die so kurz von den 

29
00:01:12,640 --> 00:01:15,080
Anfängen meiner Zeit, wo ich 
noch nicht diesen Mann gehört 

30
00:01:15,080 --> 00:01:17,520
hatte, der gesagt hatte du musst
immer Tests schreiben damit du 

31
00:01:17,520 --> 00:01:19,160
gute Software hast. 
Also hab ich gedacht ich hab 

32
00:01:19,160 --> 00:01:21,440
gute Software geschrieben aber 
keine Tests damals. 

33
00:01:21,920 --> 00:01:24,560
Meiner allerersten Firma, die 
ich noch während ich Student war

34
00:01:24,800 --> 00:01:27,440
schon aufgebaut hatte. 
Und was hatten wir gemacht, wir 

35
00:01:27,440 --> 00:01:30,200
hatten es war die Zeit vom Lamp 
Stack, das sagt vielleicht n 

36
00:01:30,200 --> 00:01:34,880
Paar Leuten Linux Apache My 
Sequel PHP, DAS ist der für das 

37
00:01:34,880 --> 00:01:38,440
SP, das war damals halt so der 
Technologie Stack und wir hatten

38
00:01:38,440 --> 00:01:40,200
auch ne kleine Webanwendung 
gemacht zum zur 

39
00:01:40,200 --> 00:01:43,360
Teilnehmerregistrierung n 
Datenbankpack wie sich das so 

40
00:01:43,360 --> 00:01:46,200
gehört. 
Und und der der Kunde hatte sich

41
00:01:46,200 --> 00:01:47,520
ein neues Feature gewünscht. 
Wir hatten so n 

42
00:01:47,520 --> 00:01:50,960
Hotelbuchungsmodul mit drin für 
Wissenschaftskongresse und 

43
00:01:50,960 --> 00:01:53,200
Verhalten ist auch drinne und da
war das aber immer ganz klar 

44
00:01:53,200 --> 00:01:55,640
eine Nase in ein Zimmer, wir 
haben es quasi so Vorgebucht und

45
00:01:55,640 --> 00:01:57,720
dann haben wir das quasi als 
fertige Liste dem Hotel 

46
00:01:57,720 --> 00:02:00,360
weitergeleitet, da wir da 
kontingent, Boni und so weiter 

47
00:02:00,360 --> 00:02:02,400
kriegen konnten und sofort ja 
aber jetzt wollte jetzt nun 

48
00:02:02,400 --> 00:02:04,800
dieser Veranstalter die 
Möglichkeit haben. 

49
00:02:05,280 --> 00:02:08,000
Das Doppelbettzimmer, die es 
einfach so gab in einem Hotel 

50
00:02:08,240 --> 00:02:10,800
besucht werden können auch von 
Teilnehmern quasi, die sich 

51
00:02:10,800 --> 00:02:12,920
eigentlich nicht kennen, die 
dann quasi ne kleine schmale 

52
00:02:12,920 --> 00:02:15,520
Geldbörse haben und denen sagt 
OK ist egal, ich bin halt junger

53
00:02:15,520 --> 00:02:17,720
Wissenschaftler, ich schlaf halt
im Doppelbettzimmer. 

54
00:02:17,720 --> 00:02:20,680
Ja genau und dann gab es diese 
sogenannte Random Sleeper 

55
00:02:20,680 --> 00:02:23,240
Option, so haben wir es genannt,
Random Sleeper, weil ist mir 

56
00:02:23,240 --> 00:02:24,880
egal, ich Schlaf 
doppelbettzimmer wer da mit drin

57
00:02:24,880 --> 00:02:26,840
ist. 
Wurscht, ja das sollte aber nur 

58
00:02:26,840 --> 00:02:29,200
für die Leute gelten, die das 
Halt auch ankreuzen und wollen 

59
00:02:29,240 --> 00:02:33,360
ne und lange Geschichte kurz. 
Irgendwer hat was verbrochen im 

60
00:02:33,360 --> 00:02:34,640
Code. 
Also meine Wenigkeit. 

61
00:02:34,640 --> 00:02:38,400
Ich hab damals schon für den 
Code zuständig war und ja, die 

62
00:02:38,400 --> 00:02:40,760
Teilnehmerregistrierung liefen 
los und die Datenbank füllte 

63
00:02:40,760 --> 00:02:43,200
sich und dann bekamen wir e 
Mails eine die werd ich nie 

64
00:02:43,200 --> 00:02:45,840
vergessen von irgendeinem 
französischen Professor der 

65
00:02:45,840 --> 00:02:50,160
meinte so wieso hab ich jetzt ne
Anfrage von einer Studentin die 

66
00:02:50,160 --> 00:02:54,000
auf mir mir auf meinem Zimmer 
schlafen will ne dann kam schon 

67
00:02:54,000 --> 00:02:56,320
so das Erste die erste 
Schweißperle auf die Stirn und 

68
00:02:56,320 --> 00:02:58,640
dachte OK das kann auch nicht so
sein. 

69
00:02:59,120 --> 00:03:01,840
Ja, da war halt n fetter Bug in 
der Zuordnung und es stellte 

70
00:03:01,840 --> 00:03:04,040
sich heraus, dass halt gar 
nichts funktioniert hatte mit 

71
00:03:04,040 --> 00:03:06,560
den Random sleepern und alle 
irgendwie wild durcheinander 

72
00:03:07,080 --> 00:03:10,400
Hotelzimmer gebucht bekamen. 
Das war dann auch so und so lief

73
00:03:10,400 --> 00:03:13,480
auch die Konferenz und so wurde 
die auch eröffnet, so nach dem 

74
00:03:13,480 --> 00:03:15,160
Motto Wir haben hier 2 coole 
Jungs, die haben ne coole 

75
00:03:15,160 --> 00:03:17,760
Software gemacht, ja die hat 
aber einen blöden Bug so und 

76
00:03:17,760 --> 00:03:19,840
deswegen ist es alles n bisschen
wild durcheinander, aber 

77
00:03:19,840 --> 00:03:22,040
vielleicht ist es ja besonders 
schön ja es war ne besonders 

78
00:03:22,040 --> 00:03:25,840
interessante Konferenz, ja. 
Es zeigt aber, dass es weder für

79
00:03:25,840 --> 00:03:27,640
den Kunden cool ist, noch für 
die Firma. 

80
00:03:27,640 --> 00:03:29,040
Also wir. 
Ich hab dann nachher beim ich 

81
00:03:29,040 --> 00:03:31,440
hab versucht es noch live zu 
fixen, wir haben ja damals noch 

82
00:03:31,440 --> 00:03:34,400
die Datenbanken ausgedruckt und 
die Assoziation versucht zu 

83
00:03:34,400 --> 00:03:36,720
finden und so weiter ja, aber da
war es dann halt schon zu spät. 

84
00:03:36,720 --> 00:03:40,240
Ja als kleiner Anekdote für 
einen nicht vorhandenen Test, 

85
00:03:40,240 --> 00:03:42,880
der das vielleicht vorher schon 
gleich weggebügelt hätte, ja, 

86
00:03:42,880 --> 00:03:45,600
aber man hat ja in die Zeit, man
muss es schnell ins Feld bringen

87
00:03:45,600 --> 00:03:48,040
und man hat da gedacht, das 
passt schon und dann passiert 

88
00:03:48,040 --> 00:03:51,200
sowas ja also mal als worst case
oder nein, worst case vielleicht

89
00:03:51,200 --> 00:03:52,640
noch nicht, aber schon mal Bad 
Case. 

90
00:03:53,200 --> 00:03:56,800
Weshalb wir besser Tests haben 
auf unsere Software. 

91
00:03:57,440 --> 00:03:59,880
Wir haben besser Tests, damit 
nicht du mit irgendwelchen 

92
00:03:59,880 --> 00:04:02,240
Leuten Kinder mäßig n 
Hotelzimmer gebucht wirst. 

93
00:04:02,880 --> 00:04:04,440
Genau, genau. 
Ja, das ist ne. 

94
00:04:04,720 --> 00:04:08,200
Geschichte ich kenn die 
Geschichte auf jeden Fall schon,

95
00:04:08,200 --> 00:04:10,640
ich würde sagen, dreimal kommt 
hin, hab ich die gehört. 

96
00:04:10,720 --> 00:04:13,080
Ja, ich. 
Würde fast behaupten, sie kamen 

97
00:04:13,080 --> 00:04:15,240
auch schon beim Podcast. 
Vor Nein glaub ich nicht. 

98
00:04:15,640 --> 00:04:16,519
Ja, glaubst du nicht? 
OK, ja. 

99
00:04:16,839 --> 00:04:18,160
Gut. 
Vielleicht haben wir ja 

100
00:04:18,160 --> 00:04:19,680
aufmerksame Hörer und 
Hörerinnen, die das mal 

101
00:04:19,680 --> 00:04:21,519
irgendwie ja uns Bescheid sagen 
können. 

102
00:04:21,680 --> 00:04:23,920
Neulich gab es n Kommentar 
irgendwo, wo jemand sagte, Ich 

103
00:04:23,920 --> 00:04:26,680
bin gerade bei Folge 43 und hier
wurde gerade dies und jenes 

104
00:04:26,680 --> 00:04:28,640
besprochen, was ihr jetzt auch 
noch mal aufgegriffen habt und 

105
00:04:28,640 --> 00:04:31,600
so, also man verschwimmt, aber 
egal, die Geschichte ist gut, 

106
00:04:31,920 --> 00:04:33,720
OK, was hättet ihr denn 
eigentlich tun können um das zu 

107
00:04:33,720 --> 00:04:36,040
vermeiden? 
Ja, man hätte, man hätte wohl 

108
00:04:36,040 --> 00:04:38,360
Test schreiben müssen, man also 
man hätte 2 Sachen machen 

109
00:04:38,360 --> 00:04:40,400
können, man hätte es 
entsprechend besser testen 

110
00:04:40,400 --> 00:04:43,200
können selber. 
Führt mich dazu, wie man 

111
00:04:43,200 --> 00:04:46,960
überhaupt Software testet. 
Also es gibt ja das sogenannte 

112
00:04:46,960 --> 00:04:49,920
QAQ and a. 
Ich weiß nicht wie man sagt, 

113
00:04:50,080 --> 00:04:53,520
also Quality Asurance was 
einfach n Prozess ist, wo ich 

114
00:04:53,520 --> 00:04:57,920
mir die Zeit nehme, das was ich 
an neuen Features habe oder das 

115
00:04:57,920 --> 00:05:02,400
was ich gefixt habe auch einfach
noch mal anzuschauen, 

116
00:05:02,400 --> 00:05:05,600
durchzugehen im Testszenario 
aber so natürlich an der. 

117
00:05:06,200 --> 00:05:08,000
An einem echten 
Produktionssystem so nah wie 

118
00:05:08,000 --> 00:05:09,360
möglich dran. 
Da ist ja immer die Idee bei 

119
00:05:09,360 --> 00:05:11,760
Tests ja und ist einfach noch 
mal in Ruhe durchzuspielen. 

120
00:05:11,760 --> 00:05:16,080
Ja und das Q und A ist oft 
manueller Prozess, der ist mehr 

121
00:05:16,080 --> 00:05:19,760
darauf, dass also drauf gezogen 
QA glaube ich QA also ja genau. 

122
00:05:19,800 --> 00:05:22,840
QA wäre Equestion ernsthaft, ja.
Stimmt ja richtig, deswegen sag 

123
00:05:22,840 --> 00:05:23,960
ich Q und a. 
Das ist richtig. 

124
00:05:23,960 --> 00:05:28,160
QA ja quality of Schwules also 
da geht es darum irgendwie das 

125
00:05:28,160 --> 00:05:30,800
ganze Bild noch mal anzuschauen,
zu schauen, wenn ich das 

126
00:05:30,800 --> 00:05:32,960
Durchklicke ist das so wie es 
sein soll. 

127
00:05:33,600 --> 00:05:36,600
Da geht es auch n bisschen mehr 
um die UX, um die Bedienbarkeit,

128
00:05:36,600 --> 00:05:38,560
da ist das so. 
Intuitiv erscheinen die 

129
00:05:38,560 --> 00:05:41,360
richtigen Boxen an der richtigen
Zeit wird der User das 

130
00:05:41,360 --> 00:05:42,800
verstehen, was er da machen 
soll. 

131
00:05:42,800 --> 00:05:45,680
Jetzt ja, da hat man mal so n 
bisschen nen anderen Blickpunkt 

132
00:05:45,680 --> 00:05:48,800
als und das ist die zweite, der 
zweite Seite der Medaille die 

133
00:05:48,800 --> 00:05:51,840
ich hab beim Testen sind die 
automatisierten Tests die ich 

134
00:05:51,840 --> 00:05:55,240
quasi hinschreibe um einfach die
Richtigkeit der Funktion die ich

135
00:05:55,240 --> 00:05:58,240
implementiere und der 
Zusammenhänge der Prozess der 

136
00:05:58,240 --> 00:06:00,960
inneren softwareprozesse sag ich
mal zu testen. 

137
00:06:01,200 --> 00:06:03,040
Die laufen also, die schreib ich
quasi auf. 

138
00:06:03,040 --> 00:06:06,240
Ich schreibe quasi noch mal ne 
Software um meine Software zu 

139
00:06:06,240 --> 00:06:08,240
bestätigen, dass sie das tut, 
was sie tun soll. 

140
00:06:08,240 --> 00:06:10,880
Diese Tests n bisschen anders 
vom Charakter, weil die sind 

141
00:06:10,880 --> 00:06:13,840
immer binär, also die entweder 
failen die oder passen die ja, 

142
00:06:13,840 --> 00:06:15,920
da schreib ich halt ne ganze 
Menge von den Dingern auf und 

143
00:06:15,920 --> 00:06:18,320
dann dann dann müssen die 
eigentlich alle Pass Pass Pass 

144
00:06:18,320 --> 00:06:22,320
Pass Pass durchgehen ne während 
so NQA hat halt auch irgendwie, 

145
00:06:22,440 --> 00:06:24,960
hat halt nicht irgendwie das hat
bestanden oder nicht bestanden, 

146
00:06:24,960 --> 00:06:28,800
sondern das ist quasi so n 
Gesamtbild ja nach dem Motto OK 

147
00:06:28,800 --> 00:06:31,920
das passt so passt es. 
So können wir es erstmal in den 

148
00:06:31,920 --> 00:06:34,320
Markt schicken. 
Ja, könnte man auch da ungefähr 

149
00:06:34,320 --> 00:06:37,480
so sagen bei QA, dass das ein 
bisschen anders, als du gerade 

150
00:06:37,480 --> 00:06:39,160
gesagt hast, eher um Prävention 
geht. 

151
00:06:39,160 --> 00:06:42,480
Also du machst Code Reviews oder
machst so Sachen wie per 

152
00:06:42,480 --> 00:06:46,560
Programming oder sowas, setzt 
klare Requirements um Fehler 

153
00:06:46,560 --> 00:06:51,040
grundsätzlich, also ja präventiv
also vorher zu vermeiden, 

154
00:06:51,280 --> 00:06:53,800
während testing. 
Du hast ja gesagt, du schreibst 

155
00:06:53,800 --> 00:06:56,080
eigentlich noch mal Software um 
deine eigentliche Software 

156
00:06:56,240 --> 00:06:57,760
automatisiert durchspielen zu 
lassen. 

157
00:06:58,080 --> 00:07:00,840
Darum geht dann die Fehler oder 
die Bugs zu finden, die dann da 

158
00:07:00,840 --> 00:07:03,120
drinne sind. 
Ja, das ist richtig. 

159
00:07:03,120 --> 00:07:04,840
Genau. 
Wenn ich das anders gesagt hab, 

160
00:07:04,840 --> 00:07:07,040
dann da tut es mir leid. 
Nee, es ist natürlich QQA 

161
00:07:07,040 --> 00:07:10,720
passiert, im besten Falle. 
Bevor ich also präventiv, bevor 

162
00:07:10,720 --> 00:07:14,720
ich das Produkt Release zum 
Kunden, ja genau das ist richtig

163
00:07:14,720 --> 00:07:17,040
und das Testing passiert aber im
Prinzip auch davor. 

164
00:07:17,040 --> 00:07:18,640
Ja ich, also ich schreibe, aber 
ich schreibe. 

165
00:07:18,760 --> 00:07:21,480
Aber noch mal, ich mein damit du
versuchst gar nicht erst Fehler 

166
00:07:21,480 --> 00:07:24,880
in den Code reinzubauen, der 
dann getestet werden muss. 

167
00:07:24,880 --> 00:07:27,280
Quasi. 
Und dann kommt das Testing und 

168
00:07:27,280 --> 00:07:28,480
der Release kommt dann erst 
später. 

169
00:07:28,480 --> 00:07:30,960
Ja, also beides vom Release 
logischerweise eigentlich, oder?

170
00:07:31,440 --> 00:07:35,240
Ja, ja, ja der der QA Prozess, 
den kannst du auch weiterlegen 

171
00:07:35,240 --> 00:07:38,640
ne das der beinhaltet ja auch 
schon die Designphase und und 

172
00:07:38,640 --> 00:07:41,120
und so weiter und sofort ja also
auch das Aufschreiben von 

173
00:07:41,120 --> 00:07:44,160
Requirements und so, das ist ja 
n sehr weiter Begriff, wenn ich 

174
00:07:44,160 --> 00:07:47,520
den ordentlich mache vermeide 
ich quasi auch Fehler, indem ich

175
00:07:47,520 --> 00:07:50,120
schon vorher Edge Cases 
besprochen habe, die ich dann 

176
00:07:50,120 --> 00:07:52,400
entsprechend behandel, sodass 
der Code schon in der ersten 

177
00:07:52,400 --> 00:07:54,720
Fassung. 
Sauberer geschrieben wird. 

178
00:07:54,880 --> 00:07:57,720
Genau das ist richtig. 
Ja, das stimmt ja, ich würd 

179
00:07:57,720 --> 00:07:59,960
sagen, aber wir befassen uns im 
im Verlauf der Folge jetzt nicht

180
00:07:59,960 --> 00:08:03,680
so viel mit dem QA Prozess, weil
der ja, also der ist ja 

181
00:08:03,840 --> 00:08:06,640
sozusagen n bisschen manueller 
und auch sehr vielleicht 

182
00:08:06,640 --> 00:08:08,720
individuell, je nachdem was ich 
gerade für n Produkt unter der 

183
00:08:08,720 --> 00:08:11,360
Hand hab und so weiter und 
gucken eher so n bisschen darauf

184
00:08:11,360 --> 00:08:14,560
wie wie was gibt es für Mittel 
und Wege wie ich normalerweise 

185
00:08:14,560 --> 00:08:18,800
Software automatisiert teste. 
Ja und ich sag es auch gleich 

186
00:08:18,800 --> 00:08:20,960
vorweg, das ist also Testing ist
ja auch so. 

187
00:08:21,840 --> 00:08:23,600
So n bisschen wie Religion find 
ich. 

188
00:08:23,600 --> 00:08:26,240
Also es gibt irgendwie 
lehrbuchmeinung, wo ich aber 

189
00:08:26,240 --> 00:08:27,360
auch nicht genau weiß wo die 
herkommen. 

190
00:08:27,360 --> 00:08:29,960
Hat halt irgendjemand mal 
aufgeschrieben, das Internet ist

191
00:08:29,960 --> 00:08:32,640
voll von Meinung was man wo wie 
macht und es gibt auch diese 

192
00:08:32,640 --> 00:08:35,159
Pyramide, da kommen wir gleich 
noch drauf, ich sag es gleich 

193
00:08:35,159 --> 00:08:38,799
vorweg, was ich heute sage ist 
das was ich meine, wie man 

194
00:08:38,799 --> 00:08:42,880
erfolgreich Tests schreibt nach 
20 Jahren irgendwie im im im 

195
00:08:42,880 --> 00:08:45,760
Softwaregeschäft sag ich mal da 
gibt es bestimmt auch ne zweite 

196
00:08:45,760 --> 00:08:48,000
Meinung zu also. 
Man kann das sich jetzt anhören 

197
00:08:48,000 --> 00:08:50,560
und was davon mitnehmen und und 
wem das nicht passt, so der der,

198
00:08:50,560 --> 00:08:53,040
der soll das gerne anders machen
oder auch n Kommentar schreiben,

199
00:08:53,040 --> 00:08:55,840
aber ich glaube da gibt es halt 
um das vorweg zu sagen, nicht 

200
00:08:55,840 --> 00:09:00,560
den einen richtigen grünen Weg, 
der für alle so klappt, sondern 

201
00:09:00,560 --> 00:09:03,400
jeder muss sich glaub ich da so 
n bisschen was finden und ist 

202
00:09:03,440 --> 00:09:05,680
irgendwie am Ende auch n 
bisschen was subjektives. 

203
00:09:06,000 --> 00:09:09,320
Hauptergebnis ist aber wenn ich 
ne gute testabdeckung hab und 

204
00:09:09,320 --> 00:09:11,320
gut schlafen kann, dann hab ich 
irgendwas richtig gemacht ja und

205
00:09:11,320 --> 00:09:14,160
wenn mein Produkt stabil im 
Markt steht das das ist was am 

206
00:09:14,160 --> 00:09:16,720
Ende zählt wie ich das dann 
exakt erreiche weil. 

207
00:09:16,960 --> 00:09:19,640
Welchem Verhältnis oder welchen 
Cover regist oder welchen Tools,

208
00:09:20,240 --> 00:09:22,040
sei mal dahingestellt. 
Das will ich mal als Disclaimer 

209
00:09:22,040 --> 00:09:25,280
vorweggeben ne. 
Dann, wie strukturieren wir das 

210
00:09:25,280 --> 00:09:26,400
denn? 
Also was ich ja immer wieder 

211
00:09:26,400 --> 00:09:30,160
höre, ist von Unit Tests und 
Integration, Tests und so weiter

212
00:09:30,160 --> 00:09:32,040
und sofort willst du dir erst 
mal alle so n bisschen einordnen

213
00:09:32,040 --> 00:09:34,160
was es da so gibt. 
Ja, das können wir machen, also 

214
00:09:34,160 --> 00:09:36,680
die, die Tests so wie Software 
halt auch ist. 

215
00:09:36,680 --> 00:09:39,960
Ne ich hab ich hab atomare 
Bestandteile von der Software 

216
00:09:39,960 --> 00:09:42,280
also wenn ich ganz ganz unten 
ins Detail gucke, dann hab ich 

217
00:09:42,280 --> 00:09:44,880
irgendwo Funktionen. 
Dann gliedere ich Funktionen in 

218
00:09:44,880 --> 00:09:46,640
Klassen auf. 
Die Klassen werden dann zu 

219
00:09:46,640 --> 00:09:50,560
Instanzen, die Instanzen laufen 
auf Prozessen und wenn ich ja 

220
00:09:50,560 --> 00:09:53,040
dann in die moderne Webwelt 
gucke, wo wir auch immer gerne 

221
00:09:53,040 --> 00:09:55,680
diskutieren und wo, nachdem sich
auch diese Folge n bisschen 

222
00:09:55,680 --> 00:09:58,960
richten wird, dann habe ich halt
diese Prozesse in Microservices,

223
00:09:58,960 --> 00:10:02,240
also zum Beispiel in Containern,
oder habe ich mehrere Container,

224
00:10:02,240 --> 00:10:04,400
die mit den Prozessen von den 
Klassen und den Funktionen 

225
00:10:04,400 --> 00:10:07,120
arbeiten und so weiter und man 
merkt schon, es baut sich halt 

226
00:10:07,120 --> 00:10:10,240
Level of Level of Level auf, ja,
und ich hab irgendwie ne 

227
00:10:10,240 --> 00:10:12,880
Komplexität ganz unten atomare 
Komplexität. 

228
00:10:13,360 --> 00:10:15,720
Die ständig höher steigt. 
Ja, bis ich irgendwo ganz oben 

229
00:10:15,720 --> 00:10:18,720
bin und ganz oben ist in der 
Webwelt tatsächlich irgendwo 

230
00:10:18,960 --> 00:10:23,200
meistens ne UIN Frontend, wo zum
Beispiel nen nen User irgendwas 

231
00:10:23,200 --> 00:10:26,560
klickt und dieser eine Klick der
führt zu wieso ne Art 

232
00:10:26,560 --> 00:10:29,920
Gewittersturm kann man sich es 
vorstellen Klitze runter durch 

233
00:10:29,920 --> 00:10:32,000
die ganzen Levels, manchmal ist 
es nicht nur ein Flow der 

234
00:10:32,000 --> 00:10:33,560
passiert, sondern es werden 
viele Sachen gleichzeitig 

235
00:10:33,560 --> 00:10:36,560
evaluiert, viele verschiedene 
Klassen und Funktionen werden 

236
00:10:36,560 --> 00:10:38,720
dann durch diesen einen Klick 
getriggert, zum Beispiel 

237
00:10:38,720 --> 00:10:41,520
Authentifizierung und so. 
Haben die Folge, dass irgendwo 

238
00:10:41,520 --> 00:10:43,320
in der Datenbank vielleicht 
irgendwas eingetragen wird. 

239
00:10:43,320 --> 00:10:45,240
Irgendwie kommt das wieder hoch 
und dann hat man im Browser noch

240
00:10:45,240 --> 00:10:47,240
n Cache, dass der gemerkt wird 
fürs nächste Mal und und und. 

241
00:10:47,240 --> 00:10:50,080
Und ja so und das ist halt ne 
komplexeste Ebene. 

242
00:10:50,080 --> 00:10:52,440
Ja und so wie der wie der Code 
halt auf verschiedenen 

243
00:10:52,440 --> 00:10:54,960
Abstraktionsleveln strukturiert 
ist, strukturiere ich eigentlich

244
00:10:54,960 --> 00:10:58,320
auch meine Tests damit ja und 
man man nennt das so im ich, ich

245
00:10:58,320 --> 00:11:01,920
glaube so im Lehrbuch Level 
irgendwie testpyramide und meint

246
00:11:01,920 --> 00:11:04,400
damit im Prinzip die 
Abstraktionspyramide ja und wenn

247
00:11:04,400 --> 00:11:07,840
ich in die atomarsten Details 
reingucke also ganz. 

248
00:11:08,480 --> 00:11:10,160
Ja, ist jetzt unten oder oben in
der Pyramide. 

249
00:11:10,160 --> 00:11:11,960
Ich weiß es gar nicht. 
Gerrit, Ja, das hab ich mir gar 

250
00:11:11,960 --> 00:11:13,360
nicht angeguckt, aber auf jeden 
Fall. 

251
00:11:13,360 --> 00:11:17,280
Wo es eher viele von gibt unten.
Pyramide die weitere Pyramide. 

252
00:11:17,280 --> 00:11:19,360
Ja genau stimmt das sind dann 
die Unit Tests. 

253
00:11:19,360 --> 00:11:22,800
Lehrmeinung ist Unit, Tests kann
man viele von haben sind auch 

254
00:11:22,800 --> 00:11:25,920
einfach zu schreiben, sind halt 
einfach gekapselt ja weil ich 

255
00:11:25,920 --> 00:11:28,080
halt atomare Bauteile quasi 
checke. 

256
00:11:28,080 --> 00:11:31,040
Ja ich checke halt die Funktion 
tut sie das was sie soll? 

257
00:11:31,040 --> 00:11:33,600
Ja kommt da wenn ich das wenn 
ich das und das Argument da 

258
00:11:33,600 --> 00:11:35,640
rausgebe also im einfachsten 
Fall ja ich hab ne 

259
00:11:35,640 --> 00:11:38,960
additionsfunktion. 
At ja, wenn ich 1 und 3 da oben 

260
00:11:38,960 --> 00:11:40,640
reingebe, dann soll da halt 4 
rauskommen. 

261
00:11:40,640 --> 00:11:44,520
Ja gut, das ist jetzt n bisschen
Silly, aber so ungefähr wird 

262
00:11:44,520 --> 00:11:48,320
dann halt pro Funktion oder pro 
Klasse eine Einheit abgetestet 

263
00:11:48,320 --> 00:11:49,880
ja. 
Also in deinem Unit Test steht 

264
00:11:49,880 --> 00:11:52,720
irgendwie drinne, wenn man diese
Inputs reingibt in die Funktion,

265
00:11:52,720 --> 00:11:55,600
dann ist dieser Output zu 
erwarten und wenn der durchläuft

266
00:11:55,600 --> 00:11:58,840
und da n Output rauskommt, der 
nicht dem erwartbaren Ergebnis 

267
00:11:58,840 --> 00:12:00,640
entspricht, dann ist der 
Gefailed oder? 

268
00:12:01,160 --> 00:12:03,760
Genau so sind im Prinzip 
eigentlich alle Tests aufgebaut,

269
00:12:03,760 --> 00:12:06,400
weil von der ab, von der Ebene 
her unabhängig. 

270
00:12:06,400 --> 00:12:09,200
Ich habe, das sag ich gleich 
noch mal gleich vorweg, man man 

271
00:12:09,200 --> 00:12:13,440
strukturiert Tests oft in in, ja
in in so 2 Kategorien würd ich 

272
00:12:13,440 --> 00:12:15,640
sagen, man sagt man gibt so ne 
Überschrift, was teste ich jetzt

273
00:12:15,640 --> 00:12:18,800
gerade je nach Framework heißt 
nicht unterschiedlich, also zum 

274
00:12:18,800 --> 00:12:21,680
Beispiel im im im Jazzframework 
was 1 der bekanntesten ist von 

275
00:12:21,680 --> 00:12:24,320
der Webwelt dann sagt man macht 
man so n discribe also was was 

276
00:12:24,320 --> 00:12:27,760
kommt jetzt und das Discribe 
kann auch geschachtelt sein und 

277
00:12:27,760 --> 00:12:31,040
dann sag ich. 
Wenn ich das und das mache, dann

278
00:12:31,040 --> 00:12:33,680
erwarte ich das und das. 
Ja, genau so ist es ja und 

279
00:12:33,680 --> 00:12:37,000
deswegen auch diese binäre 
Eigenschaft, da muss dann halt 1

280
00:12:37,000 --> 00:12:38,760
zu 0 rauskommen. 
Entweder ist das so oder auch 

281
00:12:38,760 --> 00:12:43,040
nicht, ja genau, ja genau und 
unten, also die die untersten 

282
00:12:43,440 --> 00:12:46,680
Tests auf der niedrigsten 
Abstraktionsebene, die nennt man

283
00:12:46,680 --> 00:12:50,240
halt die Unit Tests, weil die 
halt abgeschlossene Units testen

284
00:12:50,640 --> 00:12:53,680
und auf dem nächsten Level gibt 
es dann das Wort Integration 

285
00:12:53,680 --> 00:12:56,560
Tests, das hat sich auch so 
etabliert, die Integration 

286
00:12:56,560 --> 00:12:59,120
Tests. 
Die nehmen dann quasi schon 

287
00:12:59,120 --> 00:13:01,680
etwas mehr mit. 
Die testen halt nicht nur ne 

288
00:13:01,680 --> 00:13:05,000
Funktion, die testen dann quasi.
Also ich ich definiere 

289
00:13:05,000 --> 00:13:07,360
Integration Tests immer bei 
Microservices so dass ich zum 

290
00:13:07,360 --> 00:13:10,240
Beispiel nen anderen 
Microservice haben muss um den 

291
00:13:10,240 --> 00:13:12,240
nächsten zu testen. 
Ja ich ich will zum Beispiel 

292
00:13:12,240 --> 00:13:15,520
testen, kann ich den User 
einloggen ja und das kann ich 

293
00:13:15,520 --> 00:13:17,840
eigentlich nur seriös testen 
wenn ich wenn meine Datenbank 

294
00:13:17,840 --> 00:13:20,560
auch mitläuft ja weil ich 
irgendwie nen Eintrag an die 

295
00:13:20,560 --> 00:13:22,320
Datenbank mache und dann les ich
das aus und dann ist das 

296
00:13:22,320 --> 00:13:24,160
irgendwie das Zeichen dafür, 
dass der eingeloggt ist oder 

297
00:13:24,160 --> 00:13:26,560
irgendwie was ja. 
Also hab ich in der an der 

298
00:13:26,560 --> 00:13:29,520
Stelle n Abstraktionslevel mehr,
nämlich nen anderen Microservice

299
00:13:29,920 --> 00:13:32,320
den ich einfach benutzen muss. 
Ja und dann nennt sich das 

300
00:13:32,320 --> 00:13:35,960
Integration Test. 
Ja und vielleicht und aber das 

301
00:13:35,960 --> 00:13:38,480
sagt er noch nicht, vielleicht 
sagt dieser Integration Test 

302
00:13:38,480 --> 00:13:42,280
noch ist ist das noch nicht die 
die finale Finale also ich hab 

303
00:13:42,280 --> 00:13:45,600
nicht das ganze System unterm 
Hintern ja ich hab aber nur 

304
00:13:45,600 --> 00:13:48,560
genau die Komponenten unterm 
Hintern beim Integration Test 

305
00:13:48,560 --> 00:13:51,440
die ich jetzt brauche um um 
meine eine Bedingung die ich 

306
00:13:51,440 --> 00:13:54,920
jetzt hier geschrieben habe. 
Zu testen ja das auch die Kunst 

307
00:13:54,920 --> 00:13:58,520
bei den Tests, dass ich versuche
vom ich versuch nur das minimal 

308
00:13:58,520 --> 00:14:01,840
Notwendige mit einzubringen, 
weil damit es halt quasi 

309
00:14:02,160 --> 00:14:05,280
reproduzierbar reliable bleibt. 
Ja je komplexer ich die Tests 

310
00:14:05,280 --> 00:14:08,480
mache und desto anfälliger 
werden die natürlich zu allen 

311
00:14:08,480 --> 00:14:10,320
möglichen Schräubchen die ich 
drehe im Produkt. 

312
00:14:10,320 --> 00:14:13,520
Ja, deswegen nennt man es auch 
Testpyramide, deswegen sagt man 

313
00:14:13,520 --> 00:14:16,000
im Schnitt und das ist 
wahrscheinlich richtig, dass man

314
00:14:16,320 --> 00:14:19,920
wo ich viele Unit Tests haben 
kann, weil wenn die erst mal da 

315
00:14:19,920 --> 00:14:21,440
sind, dann ändern die sich 
nicht, ja. 

316
00:14:22,160 --> 00:14:24,600
Integration Tests, da muss ich 
dann schon aufpassen, dann weil 

317
00:14:24,600 --> 00:14:26,800
die haben, da hab ich schon 
Beziehungen zwischen 

318
00:14:26,800 --> 00:14:29,000
verschiedenen Codekomponenten 
und wenn ich die Anfasse, dann 

319
00:14:29,000 --> 00:14:31,080
muss ich schon wieder anfangen, 
meine Tests anzufassen und zu 

320
00:14:31,080 --> 00:14:34,560
schreiben, entsprechend und die 
höchste Ausbaustufe, da gibt es 

321
00:14:34,560 --> 00:14:36,800
bestimmt im Prinzip noch 
Zwischenstufen, aber lässt man 

322
00:14:36,800 --> 00:14:39,840
erst mal weg in der Testpyramide
es sind die End to End Tests, 

323
00:14:39,840 --> 00:14:43,680
wie die so schön heißen ne Ende 
zu Ende und die laufen quasi 

324
00:14:43,680 --> 00:14:46,560
hier ist es tatsächlich so, dass
ich irgendwie simuliere wie ein 

325
00:14:46,560 --> 00:14:49,600
User klicken würde, also auf dem
obersten Level. 

326
00:14:49,840 --> 00:14:52,920
Und dann ist meine Erwartung, 
jetzt erscheint ein Pop Up oder 

327
00:14:52,920 --> 00:14:54,880
Irgendsowas. 
Ja, wäre zum Beispiel der Test 

328
00:14:55,360 --> 00:14:57,480
und dann muss ich halt auch 
testen, dass in der UI dann der 

329
00:14:57,480 --> 00:15:00,080
Pop up erscheint. 
Ja, die sind irgendwie cool, 

330
00:15:00,080 --> 00:15:02,640
weil die dann, weil das so die 
Tests sind, die mir die volle 

331
00:15:02,640 --> 00:15:06,400
Bestätigung geben, dass das 
wirklich funktioniert, also wenn

332
00:15:06,400 --> 00:15:09,040
wenn der Test gelaufen ist, dann
weiß ich, das geht nicht schief,

333
00:15:09,520 --> 00:15:12,360
die haben aber den Nachteil, 
dass sie halt boah, dass sie 

334
00:15:12,360 --> 00:15:15,280
halt extrem schwer zu warten 
sind, ja, weil in dem Moment wo 

335
00:15:15,280 --> 00:15:17,320
ich da. 
So, man kann sich jetzt schon 

336
00:15:17,320 --> 00:15:18,560
vorstellen, dass es gar nicht so
einfach ist. 

337
00:15:18,560 --> 00:15:19,760
Ja, wie sieht denn das Pop up 
aus? 

338
00:15:19,760 --> 00:15:22,640
Ja, die Bedingung da, da kommt 
jetzt ein Pop up hoch zum 

339
00:15:22,640 --> 00:15:25,600
Beispiel ja ja, aber was denn 
für n Pop up an welcher Stelle, 

340
00:15:25,600 --> 00:15:28,280
welche Farbe wird schon 
schwieriger so ja und wenn ich 

341
00:15:28,280 --> 00:15:31,360
jetzt irgendwo rumschraube in 
meinem Code und oder zum 

342
00:15:31,360 --> 00:15:33,320
Beispiel wird irgendwas 
langsamer oder irgendsowas wann 

343
00:15:33,320 --> 00:15:35,880
kommt das hoch nach dem Klick 
und so weiter die werden halt 

344
00:15:35,880 --> 00:15:39,400
sehr schnell sehr schwierig 
wartbar diese Ende to Ende Tests

345
00:15:39,400 --> 00:15:41,760
ja. 
Also es ist auch schwer zu 

346
00:15:41,760 --> 00:15:44,520
beschreiben, was genau das zu 
erwartende Ergebnis ist oder so 

347
00:15:44,520 --> 00:15:46,480
oder wann du dann eigentlich 
davon abweist. 

348
00:15:47,000 --> 00:15:49,440
Es ist halt schwieriger, 
automatisch zu testen. 

349
00:15:49,680 --> 00:15:51,880
Ich glaube, das ist erstmal das 
große Problem, weil vor allen 

350
00:15:51,880 --> 00:15:55,560
Dingen, wenn du halt nen, wenn 
du halt ne UI hast ja immer wenn

351
00:15:55,560 --> 00:15:58,160
du ne funktionsrückgabe hast. 
Das ist ja sehr einfach sag ich 

352
00:15:58,160 --> 00:15:59,400
mal. 
Aber wenn du ne UI hast, dann 

353
00:15:59,400 --> 00:16:02,280
sprechen wir ja von gemalten 
Pixeln und so weiter stimmt auch

354
00:16:02,280 --> 00:16:04,080
nicht, so funktionieren die 
nicht, die gucken quasi auf den 

355
00:16:04,080 --> 00:16:08,080
Dom, also aber dann brauchst du 
auch wieder IDS und Elemente die

356
00:16:08,080 --> 00:16:11,880
dann auftauchen in deinem. 
Auf deiner Seite sag ich mal die

357
00:16:11,880 --> 00:16:14,080
du identifizieren kannst, um 
überhaupt das Ergebnis zu 

358
00:16:14,080 --> 00:16:16,360
verifizieren. 
Ja, das ist da können wir 

359
00:16:16,360 --> 00:16:18,480
nachher noch mal n bisschen 
drauf rumkauen, da gibt es auch 

360
00:16:18,480 --> 00:16:21,200
natürlich überall Tools, für die
dir das Leben erleichtern und 

361
00:16:21,200 --> 00:16:24,960
die werden auch immer besser, 
genau, aber die also sagen wir 

362
00:16:24,960 --> 00:16:27,800
mal so ich ich finde immer mit 
mit höherer Abstraktionslevel 

363
00:16:27,800 --> 00:16:30,520
decken die Tests natürlich mehr 
ab, also während du kannst 

364
00:16:30,520 --> 00:16:32,200
irgendwie. 
Du kannst irgendwie 100000 Unit 

365
00:16:32,200 --> 00:16:33,640
Tests haben die geil 
funktionieren und hast aber 

366
00:16:33,640 --> 00:16:35,440
trotzdem ne schrottige Software 
wo wo? 

367
00:16:35,960 --> 00:16:37,600
Wo du irgendwas, ich sag mal n 
Port hast du falsch 

368
00:16:37,600 --> 00:16:40,080
konfigurierten 2 Microservices 
telefonieren nicht miteinander, 

369
00:16:40,080 --> 00:16:43,200
funktioniert gar nichts ja und 
hast aber alle Unit Tests auf 

370
00:16:43,200 --> 00:16:46,240
grün ja auf der anderen Seite 
ist halt aber das Dilemma, dass 

371
00:16:46,240 --> 00:16:48,560
wenn du End to End Test 
schreibst sind da so aufwendig 

372
00:16:48,560 --> 00:16:51,680
hinzuschreiben, dass die nicht 
flakey sind wie man sagt, dass 

373
00:16:51,680 --> 00:16:55,040
die auch immer seriös 
reproduzierbar genau das gleiche

374
00:16:55,040 --> 00:16:58,960
Abtesten, dass dass man da 
abwägen muss und das ist jetzt 

375
00:16:58,960 --> 00:17:02,920
das ist, das ist auch was 
Wichtiges beim Testen, dass du 

376
00:17:02,920 --> 00:17:05,480
nicht einfach so viel mehr Test 
schreibst als eigentliches 

377
00:17:05,480 --> 00:17:07,920
Produkt. 
Ja, wir haben ja auch, also wir 

378
00:17:07,920 --> 00:17:11,160
machen ja nicht Software aus 
Spaß, also gibt es auch ne und 

379
00:17:11,160 --> 00:17:14,119
zu wissenschaftlichen Zwecken so
aber ganz viele Leute machen 

380
00:17:14,119 --> 00:17:16,480
halt Software um um irgendwie 
wirtschaftliches Produkt 

381
00:17:16,480 --> 00:17:19,599
rauszuhauen und ich muss halt 
gucken, dass meine meine 

382
00:17:19,599 --> 00:17:23,119
Kapazitäten Tests zu schreiben 
nicht die Wirtschaftlichkeit 

383
00:17:23,119 --> 00:17:26,400
übersteigen, die insgesamt mein 
Produkt mir erwirtschaftet, ja. 

384
00:17:26,960 --> 00:17:29,280
Da muss ich dran denken an unser
Interview mit dem. 

385
00:17:29,520 --> 00:17:33,200
Mit dem Heinrich von von 
Zalando, der Observability hier 

386
00:17:33,520 --> 00:17:36,920
uns mal näher gebracht hat im 
Podcast, der hat ja gesagt und 

387
00:17:37,200 --> 00:17:39,280
und so ähnlich ist es ja bei uns
auch. 

388
00:17:39,280 --> 00:17:42,000
Also du kannst ja gar nicht 
alles End to end testen, es gibt

389
00:17:42,000 --> 00:17:45,320
ja so also jetzt bei Zalando 
natürlich noch mal was weiß ich,

390
00:17:45,320 --> 00:17:47,840
viel, viel, viel mehr 
potenzielle Fehlerquellen und 

391
00:17:47,840 --> 00:17:49,920
Wege, die Nutzer einschlagen 
kann, als jetzt in unserer 

392
00:17:49,920 --> 00:17:52,120
vergleichsweise kleinen 
Software, obwohl unsere ja auch 

393
00:17:52,120 --> 00:17:54,640
schon richtig ist. 
Dass man manchmal das eben dann 

394
00:17:54,640 --> 00:17:57,760
auch erst hinnimmt, dass dem 
Kunden das passiert oder dem 

395
00:17:57,760 --> 00:18:00,720
Nutzer und dann. 
Man agiert ne, dass etwas nicht 

396
00:18:00,720 --> 00:18:02,560
funktioniert hat oder schmaler 
Grat. 

397
00:18:03,840 --> 00:18:06,080
Voll ja. 
Also es ist n schmaler Grat und 

398
00:18:06,080 --> 00:18:08,000
du willst eigentlich das 
vermeiden, dass der Kunde, aber 

399
00:18:08,000 --> 00:18:10,520
das ist manchmal nicht 
vermeidbar, weil du hast ne 

400
00:18:10,520 --> 00:18:12,720
Mathematik hast. 
Das ist NNP komplettes Problem, 

401
00:18:12,720 --> 00:18:15,200
also je nachdem wie viele 
Features du hast. 

402
00:18:15,200 --> 00:18:17,680
Du hast ja die Kombinatorik aus 
allen Features, ja. 

403
00:18:17,920 --> 00:18:21,920
Und kannst nicht jeden Edge Case
einfach vollständig abtesten. 

404
00:18:21,920 --> 00:18:23,720
Das geht nicht. 
Ja, also mal allein davon, 

405
00:18:23,720 --> 00:18:25,400
selbst wenn wenn das irgendwie 
komplett automatisiert 

406
00:18:25,400 --> 00:18:27,160
hingeschrieben würde. 
Die Laufzeit die das irgendwie 

407
00:18:27,160 --> 00:18:30,560
bräuchte um alles durchzuspielen
und so genau, also es ist n 

408
00:18:30,560 --> 00:18:33,160
schmaler Grat und die Kunst ist 
und ich glaube das ist so n 

409
00:18:33,160 --> 00:18:37,600
bisschen echt ne Kunst. 
Ja, die Kunst ist die Tests und 

410
00:18:37,600 --> 00:18:41,160
das QA quasi was damit 
einhergeht so zu designen, dass 

411
00:18:41,160 --> 00:18:43,600
sie halt zu dem Produkt passen 
und diesen schmalen Grat so 

412
00:18:43,600 --> 00:18:47,120
erfüllen. 
Das ja vielleicht noch mal was 

413
00:18:47,120 --> 00:18:49,560
weiß ich n Promille der Kunde 
irgendwie beim speziellen 

414
00:18:49,560 --> 00:18:53,280
Edgecase halt baden geht, dann 
dann kommt Support vom Kunden 

415
00:18:53,280 --> 00:18:56,240
und möglichst schnelles, fixen 
und so weiter und dass du aber 

416
00:18:56,240 --> 00:18:58,880
trotzdem irgendwie ne zügige 
Weiterentwicklung hast, dass du 

417
00:18:58,880 --> 00:19:01,400
dich nicht selber ausbremst 
durch deinen ganzen ganzen 

418
00:19:01,400 --> 00:19:03,600
Testkampf. 
Du willst ja auch und andere 

419
00:19:03,600 --> 00:19:05,440
Software ist ja auch, du willst 
ja auch schnell mal n neues 

420
00:19:05,440 --> 00:19:07,760
Feature reinbringen und so 
weiter willst es fortentwickeln 

421
00:19:07,760 --> 00:19:10,480
und so weiter auf Kunden 
Features reagieren auf Requests 

422
00:19:10,480 --> 00:19:12,800
und so weiter ja. 
Das heißt, so n bisschen 

423
00:19:12,800 --> 00:19:15,040
abschließend, die Pyramide noch 
mal aufzurollen. 

424
00:19:15,200 --> 00:19:17,760
Du versuchst möglichst viele 
Unit Tests eigentlich zu haben, 

425
00:19:17,760 --> 00:19:20,920
die die ganzen kleinen Blöcke 
machen, nee, auch nicht. 

426
00:19:21,600 --> 00:19:23,360
Ich hab jetzt das Lehrbuch 
neulich gesagt, das ist die 

427
00:19:23,360 --> 00:19:25,480
Testing Pyramide. 
Ich halte von jetzt kommt das 

428
00:19:25,480 --> 00:19:28,560
Objektive, das subjektive 
Entschuldigung ich halte von 

429
00:19:28,560 --> 00:19:30,560
Unit Tests gar nichts, ich 
schreib fast gar keine Unit 

430
00:19:30,560 --> 00:19:34,320
Tests ja lass ich weg die Ebene 
weil die mir also weißt du echt 

431
00:19:34,400 --> 00:19:38,400
so Funktion auf Funktionslevel 
also aus 2 Gründen erstens sagt 

432
00:19:38,400 --> 00:19:41,120
es wie gerade gesagt hat nicht 
so viel aus über die gesamt. 

433
00:19:41,560 --> 00:19:44,280
Funktionalität deiner Software 
ich glaube Web Software 

434
00:19:44,280 --> 00:19:47,760
heutzutage ist deswegen komplex 
und geht kaputt, weil wir auf 

435
00:19:47,760 --> 00:19:49,280
einem höheren Level Probleme 
haben. 

436
00:19:49,280 --> 00:19:51,120
Die haben nämlich verteilte 
Anwendung. 

437
00:19:51,120 --> 00:19:54,080
Wir haben Kommunikation von ganz
vielen verteilten Komponenten, 

438
00:19:54,080 --> 00:19:57,040
da geht es meistens baden, da 
fängt es sich an zu lohnen, zu 

439
00:19:57,040 --> 00:19:59,600
testen und das ist halt das 
Level von Integration Tests und 

440
00:19:59,600 --> 00:20:02,840
das sind meine Lieblingstests 
ich teste ganz ganz viel, ich 

441
00:20:02,840 --> 00:20:05,440
hab ganz ganz viele Integration 
Tests und versuche halt immer 

442
00:20:05,920 --> 00:20:09,680
aus dem großen Microservice Bush
irgendwie die Kleinen die 

443
00:20:09,680 --> 00:20:12,320
kleinen Sachen Rauszuschneiden. 
Die ich testen kann. 

444
00:20:12,320 --> 00:20:15,680
Ja, und ich teste auch und das 
hat auch mit Mocking zu tun, ne 

445
00:20:15,680 --> 00:20:18,400
ich versuche auch wenig zu 
mocken ja was ist mocken? 

446
00:20:18,760 --> 00:20:20,720
Nehmen wir noch mal die 
Datenbank ich kann ich kann 

447
00:20:20,720 --> 00:20:23,680
sagen ich hab ne Funktion die 
braucht dann n datenbankeintrag 

448
00:20:23,680 --> 00:20:25,720
jetzt kann ich sagen OK die 
Datenbank hab ich jetzt hier 

449
00:20:25,720 --> 00:20:28,160
nicht in meinem Test weil ich 
will ihn ganz einfach halten ich

450
00:20:28,160 --> 00:20:30,280
tue so als hätte ich ne 
Datenbank und geb halt irgendwie

451
00:20:30,280 --> 00:20:33,400
Werte zurück wie sie ne 
Datenbank zurückgeben würde dann

452
00:20:33,400 --> 00:20:35,120
hab ich die Datenbank gemockt 
ja. 

453
00:20:35,760 --> 00:20:38,120
Oder ich sag halt nein, ich mach
daraus n Integration Test, weil 

454
00:20:38,120 --> 00:20:40,360
ich hab ja die Datenbank, ich 
geb mir die Mühe, dass ich n 

455
00:20:40,360 --> 00:20:42,360
Integration test gut schreibe 
und teste den gleich mit der 

456
00:20:42,360 --> 00:20:44,880
echten Datenbank. 
Ja und siehe dann halt Oh 

457
00:20:44,880 --> 00:20:47,320
verdammt ja wenn ich jetzt im 
auf einmal ne My Secret 

458
00:20:47,320 --> 00:20:49,760
Datenbank reinnehme und nicht ne
postquest Datenbank, dann geht 

459
00:20:49,760 --> 00:20:52,120
auf einmal dieser Secret Call 
irgendwie nicht weil weil die 

460
00:20:52,120 --> 00:20:54,480
unterschiedlich sind im Detail. 
Ja auf einmal fällt mir das auf,

461
00:20:54,480 --> 00:20:59,360
ja und deswegen sag ich ja klar 
kannst du Unit Test schreiben, 

462
00:20:59,360 --> 00:21:01,840
aber kannst du auch lassen also 
schreib mal lieber ordentliche 

463
00:21:01,840 --> 00:21:05,000
Integration Test und hab auch. 
N ordentliches Portfolio an End 

464
00:21:05,000 --> 00:21:08,560
to End Tests wenigstens für die 
Storylines durch deine UI, die 

465
00:21:08,560 --> 00:21:11,840
halt die sind, die die meisten 
die am meisten gegangen wird und

466
00:21:11,840 --> 00:21:14,880
noch mal auf diesen Bereich ne, 
also man weiß ja seine Good 

467
00:21:14,880 --> 00:21:19,520
Cases und man weiß ja in seiner 
UIUX eigentlich was häufig 

468
00:21:19,520 --> 00:21:22,960
passieren sollte und diese Pfade
sollte ich halt auch vielleicht 

469
00:21:22,960 --> 00:21:26,400
in End to End Tests mit mit 
einstecken, dass die die Pfade 

470
00:21:26,400 --> 00:21:28,880
die immer abgetreten werden von 
den Usern halt auch wirklich 

471
00:21:28,880 --> 00:21:31,680
funktional sind, ja dass die mit
Einnehmen in den Tests ja. 

472
00:21:32,000 --> 00:21:34,280
Das meine Meinung. 
Zu der zu der Testpyramide ja, 

473
00:21:34,280 --> 00:21:37,280
ich würd die einfach n bisschen 
höher anfangen lassen, dann 

474
00:21:37,760 --> 00:21:40,560
sprechen wir mehr über sowas wie
n Diamanten so der ist unten 

475
00:21:40,560 --> 00:21:42,880
schmal und dann kommen viele 
viele Integrationtests und nach 

476
00:21:42,880 --> 00:21:45,480
oben ist es wieder schmaler so. 
Sieht es dann nur so ein Produkt

477
00:21:45,480 --> 00:21:46,480
aus? 
Ja, tatsächlich, genau, wir 

478
00:21:46,480 --> 00:21:50,280
haben keine, wir haben eine Test
Diamanten genau richtig, ja ja, 

479
00:21:50,800 --> 00:21:52,440
ich hab. 
Gerade gesehen, dass das in der 

480
00:21:52,440 --> 00:21:54,560
Recherche oder hab ich vorher 
gesehen, dass dieser Begriff von

481
00:21:54,560 --> 00:21:56,760
irgendeinem Cant Sea dots 
geprägt wurde? 

482
00:21:56,760 --> 00:21:59,160
Du nennst das die Testing 
Trophy, ja das das geht auch in 

483
00:21:59,160 --> 00:22:01,040
die Richtung, also n bisschen 
moderner gedacht. 

484
00:22:01,360 --> 00:22:04,080
Es kommt auch drauf an, was 
deine Units sind. 

485
00:22:04,080 --> 00:22:07,040
Ne also ist auch kein Geheimnis,
wir nutzen ja auch schon oft 

486
00:22:07,040 --> 00:22:10,080
gesagt viel Open Source und wenn
jetzt zum Beispiel deine Units 

487
00:22:10,080 --> 00:22:13,840
sind schon gut getesteten Open 
Source, also die Open Source 

488
00:22:13,840 --> 00:22:16,240
Produkte selber die irgendwas 
machen, die haben ja auch ihre 

489
00:22:16,240 --> 00:22:19,000
Unit Tests, das muss ich auch 
mal sehen ne und wenn du die 

490
00:22:19,000 --> 00:22:21,400
jetzt wenn du jetzt nur n 
kleinen API wenn du die nur und 

491
00:22:21,400 --> 00:22:24,280
das ist ganz oft Inhalt von 
Software ist ja nicht andauernd 

492
00:22:24,280 --> 00:22:26,960
alles neu zu erfinden sondern 
Sachen zu nutzen die da sind, ja

493
00:22:27,040 --> 00:22:29,040
und wenn ich jetzt einfach ne 
Sache nutze die da ist und 

494
00:22:29,040 --> 00:22:32,960
schreib dann nur ne ganz dünne. 
N Schimmel rum ne ne nutzungs 

495
00:22:32,960 --> 00:22:34,600
das ist eigentlich nur 
nutzungscode. 

496
00:22:34,600 --> 00:22:37,960
Ja dann muss ich ja in meinen 
Unit Tests nicht noch mal das 

497
00:22:37,960 --> 00:22:40,560
testen was der Hersteller von 
der Open Source Produkt schon 

498
00:22:40,560 --> 00:22:42,960
für mich getestet hat. 
Ja das ist ja Wahnsinn ne das 

499
00:22:43,240 --> 00:22:45,160
würde man weglassen an der 
Stelle, deswegen macht auch der 

500
00:22:45,160 --> 00:22:48,400
ganze Unit Test an der Stelle 
dann keinen Sinn für mich und 

501
00:22:48,400 --> 00:22:51,520
ich nehm das Gleiche höher an ne
Stufe und hole mir n Integration

502
00:22:51,520 --> 00:22:54,680
Test ab Integration Tests hat 
man früher nicht so gerne 

503
00:22:54,680 --> 00:22:56,880
gemacht weil die Halt auch schon
mega aufwendig sind weil ich 

504
00:22:56,880 --> 00:22:59,360
muss halt andere Komponenten 
hochfahren und runterfahren. 

505
00:22:59,640 --> 00:23:01,520
Und das Schlimmste bei 
Integration Tests ist, das 

506
00:23:01,520 --> 00:23:04,400
vergisst man immer. 
Ich muss Tests reproduzierbar 

507
00:23:04,400 --> 00:23:07,360
hinschreiben, ich will ja nicht 
von den Tests noch mal Tests 

508
00:23:07,360 --> 00:23:09,680
machen, ich muss halt wissen, 
dass die Tests halt immer gleich

509
00:23:09,680 --> 00:23:14,440
laufen, ne mit gleicher Code, 
gleiches Testergebnis ja so und 

510
00:23:14,440 --> 00:23:16,400
das ist wird aber schon gar 
nicht mehr so einfach wenn ich 

511
00:23:16,400 --> 00:23:20,520
lebende Komponenten habe und 
früher war das n Problem, heute 

512
00:23:20,520 --> 00:23:24,120
ist es aber kein Problem mehr 
weil ich kann, das ist wichtig, 

513
00:23:24,120 --> 00:23:26,720
ich muss den gleichen State, den
Clean Slate wie man so schön 

514
00:23:26,720 --> 00:23:28,880
sagt ne also ich muss den den 
gleichen Start. 

515
00:23:29,680 --> 00:23:33,200
Status für den Test wenn der 
Losläuft erreichen und ich muss,

516
00:23:33,200 --> 00:23:35,440
wenn ich zum Beispiel viele 
Tests laufen lasse, gegen ne 

517
00:23:35,440 --> 00:23:36,960
Datenbank zum Beispiel, dann 
muss ich vielleicht die 

518
00:23:36,960 --> 00:23:40,000
Datenbank immer wieder cleanen, 
sodass sie immer wieder frisch 

519
00:23:40,000 --> 00:23:42,840
ist, sodass dass sich die Tests 
nicht gegenseitig beeinflussen 

520
00:23:42,840 --> 00:23:44,960
und so weiter sonst sonst komm 
ich in Teufelsküchen. 

521
00:23:44,960 --> 00:23:47,400
Ja, das ist zum Beispiel ne, das
ist zum Beispiel auch was sag 

522
00:23:47,400 --> 00:23:50,400
ich jetzt mal geradezu, wenn man
Tests schreibt, dann hat man so 

523
00:23:50,400 --> 00:23:54,560
Lifecycle Hooks in den Tests, 
also man kann sagen, bevor vor 

524
00:23:54,560 --> 00:23:57,280
allen diesen Tests machst du das
und nach allen diesen Tests 

525
00:23:57,280 --> 00:24:00,160
machst du das, man hat so. 
Zu beginnen und aufräumen, 

526
00:24:00,160 --> 00:24:02,000
Routinen ne. 
Man könnte zum Beispiel vor den 

527
00:24:02,000 --> 00:24:04,640
Tests sieh zu, dass du Datenbank
hast und so weiter und nach den 

528
00:24:04,640 --> 00:24:05,760
Tests räumen das alles wieder 
ab. 

529
00:24:05,760 --> 00:24:09,560
Ja oft wird richtig viel auf und
abgeräumt, das ist eigentlich 

530
00:24:09,560 --> 00:24:12,240
kompliziert, aber mit Docker 
überhaupt nicht mehr. 

531
00:24:12,240 --> 00:24:16,120
Ja hier hier mein Killer Rezept 
für Integration Test und das 

532
00:24:16,120 --> 00:24:18,600
kann man, wir haben quasi so n 
ganz ganz kleines Framework für 

533
00:24:18,600 --> 00:24:21,080
die Integration Tests basiert 
auf Docker Compose. 

534
00:24:21,800 --> 00:24:23,680
Hatten wir auch schon mal ne 
Folge, da kann man ja seine 

535
00:24:23,680 --> 00:24:25,760
Datenbank und alle seine 
Microservices, die man so 

536
00:24:25,760 --> 00:24:28,080
braucht, die klickt man da 
einfach rein ins Dockercompose, 

537
00:24:28,240 --> 00:24:31,400
dann sagt man Dockercompose ab 
und die ganze Dockertechnologie 

538
00:24:31,400 --> 00:24:33,760
sagt ja schon, wenn ich mir das 
nicht gerade als Volume 

539
00:24:33,760 --> 00:24:35,600
Speicher, was man da nicht 
machen sollte als Test. 

540
00:24:36,000 --> 00:24:38,240
Alles ist frisch ja ich bring es
drauf und dann ist es immer 

541
00:24:38,240 --> 00:24:40,800
wieder gleich also wie ich es 
drauf gebracht hab und dann hab 

542
00:24:40,800 --> 00:24:44,200
ich einen Container so mach ich 
das dann immer wo ich mein Wo 

543
00:24:44,200 --> 00:24:47,280
der Test läuft das ist der der 
Container den ich testen will ja

544
00:24:47,280 --> 00:24:48,960
zum Beispiel ne Konnektivität 
zum Beispiel. 

545
00:24:49,520 --> 00:24:52,200
Der läuft dann gegen die 
restlichen Container, prüft das 

546
00:24:52,200 --> 00:24:55,040
alles durch und dann lass ich 
das ganze System wieder 

547
00:24:55,040 --> 00:24:57,000
verschwinden. 
Tocca Compost down, Schluss aus,

548
00:24:57,000 --> 00:25:00,240
Ende ja nächster Test Tocca 
Compose ab wieder alles hoch und

549
00:25:00,240 --> 00:25:03,600
zack ja und geht los. 
Ja und damit kann man relativ 

550
00:25:03,760 --> 00:25:07,120
zügig relativ einfach 
Integration Test schreiben ja 

551
00:25:07,120 --> 00:25:09,440
ohne viel Kopfschmerzen ja und 
die sind die sind sehr sehr 

552
00:25:09,440 --> 00:25:11,200
wertvoll weil die alles Mögliche
zeigen ja. 

553
00:25:11,520 --> 00:25:14,560
Wird halt dann immer das ganze 
Produkt einmal so aufgebaut, 

554
00:25:14,560 --> 00:25:16,160
also ganz frisch in diesem Clean
State. 

555
00:25:16,720 --> 00:25:20,960
Wie es in echt wäre, wenn man es
dann jetzt wirklich released. 

556
00:25:20,960 --> 00:25:24,000
Oder so, so annähernd. 
Ja ja, erstmal nicht das ganze 

557
00:25:24,000 --> 00:25:25,440
Produkt. 
Ne wenn ich das ganze Produkt 

558
00:25:25,440 --> 00:25:27,280
aufbaue und teste dagegen, da 
sind wir dem Ende zu Ende. 

559
00:25:27,280 --> 00:25:30,640
Test ja also ich baue den Teil 
des Produktes auf den ich 

560
00:25:30,640 --> 00:25:33,000
brauche um was zu testen. 
Ne ganz oft ist halt irgendwie 

561
00:25:33,000 --> 00:25:37,400
zum Beispiel ne Datenbank halt 
mit Teil des Produktes und ja 

562
00:25:37,400 --> 00:25:41,280
jein Gerrit also du kannst du 
machst es so gut wie es geht, 

563
00:25:41,440 --> 00:25:43,880
dass es aussieht wie im finalen 
Produkt ich sag es mal so ja das

564
00:25:43,880 --> 00:25:46,000
ist nicht immer möglich aus 1000
gründen. 

565
00:25:46,400 --> 00:25:48,720
Aber du kannst mit Docker 
Compost die Container schon so 

566
00:25:48,720 --> 00:25:51,120
ähnlich aussehen lassen wie es 
geht zum Produktionssystem und 

567
00:25:51,120 --> 00:25:52,360
siehst damit sehr sehr viel. 
Ja o. 

568
00:25:52,640 --> 00:25:57,200
K wann, wann passiert das in 
deinem Entwicklungsprozess, dass

569
00:25:57,200 --> 00:25:59,920
das durchläuft. 
Aber wann das läuft? 

570
00:26:00,240 --> 00:26:03,080
Ja o. 
K also das passiert immer, wenn 

571
00:26:03,080 --> 00:26:05,680
wir nen Commit machen 
tatsächlich ja, also es gibt ja 

572
00:26:05,680 --> 00:26:08,400
die sogenannte CICD Pipeline, 
wie man so schön sagt, 

573
00:26:08,400 --> 00:26:11,760
Continuous Integration, 
Continuous Delivery, glaub ich. 

574
00:26:11,880 --> 00:26:14,000
Manchmal sag ich deployment, ich
glaub es war Delivery. 

575
00:26:14,640 --> 00:26:15,600
Hatten wir auch schon mal ne 
Folge. 

576
00:26:15,600 --> 00:26:18,000
Also es ist das ist dann wieder 
Tooling um dich rum, aber wenn 

577
00:26:18,000 --> 00:26:21,360
du quasi sagst ich hab n neuen 
Stand der Software ich committe 

578
00:26:21,440 --> 00:26:24,720
also was ist n repositor ich 
mach nen neuen neuen Commit, 

579
00:26:25,200 --> 00:26:28,120
dann triggert normalerweise 
automatisch ne Pipeline los, das

580
00:26:28,120 --> 00:26:31,120
ist n extra Server 
typischerweise der erkennt halt 

581
00:26:31,120 --> 00:26:33,240
diese ganzen Tests, der hat 
diesen Code und der läuft die 

582
00:26:33,240 --> 00:26:36,400
alle durch ja also bei uns kommt
bei mir kommt ständig am Tag 

583
00:26:36,400 --> 00:26:38,720
locker 20 mal oder sowas bei 
jedem commit kommt dann so ne 

584
00:26:38,720 --> 00:26:40,800
Nachricht schon. 
Ist ja alles heute miteinander 

585
00:26:40,800 --> 00:26:42,400
verhakt. 
Dass CI Tests erfolgreich 

586
00:26:42,400 --> 00:26:43,840
durchgelaufen hat. 
Die werden dann alle 

587
00:26:43,840 --> 00:26:46,720
Durchgerauscht, ja. 
Dafür hast diese diese 

588
00:26:46,720 --> 00:26:49,200
Anweisung, das zu tun, die sind 
irgendwo aufgeschrieben, ne. 

589
00:26:49,200 --> 00:26:52,000
Also genau da gibt es auch 
wieder verschiedene Tools. 

590
00:26:52,000 --> 00:26:55,280
Aber also wir nutzen da, das ist
kein Geheimnis, Wir nutzen davon

591
00:26:55,280 --> 00:26:58,600
github, die Github actions, das 
ist extra dafür gemacht, ist 

592
00:26:58,600 --> 00:27:00,880
richtig cool, da kann man so n 
kleines Skript aufschreiben, was

593
00:27:00,880 --> 00:27:04,240
der wann wie aufrufen soll, ist 
ja auch oft matrixmäßig du musst

594
00:27:04,240 --> 00:27:06,800
dann verschiedene. 
Auf das ist dann verschiedene 

595
00:27:06,800 --> 00:27:08,520
Sprachversionen und so weiter 
und sofort. 

596
00:27:08,520 --> 00:27:10,720
Das konnte alles aufbauen und 
dann läuft das alles automatisch

597
00:27:10,720 --> 00:27:12,120
durch. 
Das ist n Feature was man 

598
00:27:12,120 --> 00:27:15,120
gestellt bekommt tatsächlich von
github auch die Serverressourcen

599
00:27:15,120 --> 00:27:17,040
um das Durchzulaufen ist ganz 
cool. 

600
00:27:17,040 --> 00:27:19,240
Ja und da gibt es natürlich 
alle, da gab es früher noch 

601
00:27:19,240 --> 00:27:21,840
Travels und so weiter das das 
hat sich also das das ist so, 

602
00:27:21,840 --> 00:27:24,880
das ist immer in Entwicklung, da
ist mal das Tool besser mal das 

603
00:27:24,880 --> 00:27:28,400
andere, aber an der an der 
Praxis ist es bleibt es immer 

604
00:27:28,400 --> 00:27:32,320
gleich und versucht möglichst 
mit jedem mit jeder Änderung des

605
00:27:32,320 --> 00:27:34,960
Codes. 
Alles, was ich an Tests hab 

606
00:27:34,960 --> 00:27:39,440
durchzuschießen ja weil nur dann
weiß ich, dass diese Änderung 

607
00:27:39,920 --> 00:27:42,240
keinen Effekt hat auf den 
gegebenen Code. 

608
00:27:42,240 --> 00:27:44,960
Ja, da kann ich ruhig schlafen, 
ne, das ist ganz wichtig. 

609
00:27:44,960 --> 00:27:48,960
Ja und je mehr ich getestet hab,
wenn ich wenn ich wenn ich 

610
00:27:48,960 --> 00:27:51,760
wirklich ganz viele Tests habe, 
dann kann ich sogar große 

611
00:27:51,760 --> 00:27:55,000
Refaktorisierungsmaßnahmen 
vornehmen im Code und wenn ich 

612
00:27:55,000 --> 00:27:57,440
die dann committe und alles ist 
wieder grün, dann weiß ich OK 

613
00:27:57,520 --> 00:28:00,320
das hab ich im größten großen 
Stil wohl geschafft, ja. 

614
00:28:01,040 --> 00:28:03,440
Führt jetzt mich dazu. 
Jetzt hast du gefragt, wann 

615
00:28:03,600 --> 00:28:06,960
laufen die Tests noch 
interessanter ist die Frage, 

616
00:28:07,120 --> 00:28:08,680
wann schreibt man die. 
Tests? 

617
00:28:08,800 --> 00:28:11,360
Ja, das meinte ich. 
Eigentlich. 

618
00:28:11,360 --> 00:28:13,880
Das meintest du eigentlich. 
Nein, das ist OK. 

619
00:28:13,880 --> 00:28:15,200
Ich meinte genau das, was du 
gesagt hast. 

620
00:28:15,200 --> 00:28:18,000
Ja, dieses automatisierte 
Triggernde Tests nach jedem 

621
00:28:18,000 --> 00:28:20,880
Commit, das war. 
Ja genau, ja das also das, das 

622
00:28:20,880 --> 00:28:22,480
muss man vielleicht auch nicht 
nach jedem Commit machen. 

623
00:28:22,480 --> 00:28:24,920
Man kann auch sagen, bei jedem 
Tag oder Irgendsowas, je nachdem

624
00:28:24,920 --> 00:28:28,160
wie, wie, wie, wie. 
Also wie krass, auch wenn nicht.

625
00:28:28,160 --> 00:28:30,120
Das ist. 
Bei uns ist das noch gerade 

626
00:28:30,120 --> 00:28:33,160
akzeptabel, dass das, dass das 
so geht, die Server laufen da 

627
00:28:33,160 --> 00:28:35,280
schon ganz ordentlich, aber es 
geht schon so. 

628
00:28:35,280 --> 00:28:37,040
Ja ich ich, ich würde es 
empfehlen, dass man das so 

629
00:28:37,040 --> 00:28:39,040
macht, ja, da hat man immer ne 
gute Sicherheit, ja. 

630
00:28:39,760 --> 00:28:42,160
Sag mal, wann schreibt man 
eigentlich diese Tests? 

631
00:28:44,120 --> 00:28:45,200
Ja genau. 
Wann schreibt man die Test? 

632
00:28:45,200 --> 00:28:46,520
Da hab ich ne ganz ganz klare 
Meinung. 

633
00:28:46,520 --> 00:28:49,160
Ist ganz einfach ja, aber es ist
auch nicht, vielleicht nicht 

634
00:28:49,160 --> 00:28:52,120
Lehrbuch, aber meine Meinung 
ist, ich schreibe halt einen 

635
00:28:52,120 --> 00:28:56,400
Test hin, entweder weil ich n 
neues Feature programmiert hab. 

636
00:28:56,880 --> 00:29:00,360
Oder weil ich n Bug gefixt hab 
und das sind auch die 2 einzigen

637
00:29:00,360 --> 00:29:02,000
Dinge, die ich in der Software 
tun darf. 

638
00:29:02,000 --> 00:29:06,400
Ja ich ich ich ich mach n neues 
Feature rein oder ich fix n Bug 

639
00:29:06,400 --> 00:29:08,960
ja das ist eigentlich das ist 
mehr gibt es eigentlich gut, 

640
00:29:09,000 --> 00:29:11,680
dann gibt es die 
Refaktorisierungen da schreib 

641
00:29:11,680 --> 00:29:13,680
ich dann vielleicht keinen Test 
weil ich weder n Feature noch n 

642
00:29:13,680 --> 00:29:15,040
bug gemacht hab ich hab 
irgendwie nur den Code 

643
00:29:15,040 --> 00:29:18,000
umgeändert um ihn schöner, 
besser schneller zu machen, da 

644
00:29:18,000 --> 00:29:21,120
verlasse ich mich dann auf die 
Tests sicher ja wenn ich wenn 

645
00:29:21,120 --> 00:29:24,320
ich das so mache, dass wenn ich 
ein Feature schreibe und gleich 

646
00:29:24,320 --> 00:29:28,000
den Test da mit dazu schreibe. 
Dann passiert mir nicht, dass 

647
00:29:28,000 --> 00:29:30,000
ich später ein böses Erwachen 
habe, weil dann habe ich eine 

648
00:29:30,000 --> 00:29:33,840
gute Abdeckung, eigentlich 
immer, ja und und wenn ich das 

649
00:29:33,840 --> 00:29:37,120
auch so mache, das ist fast noch
wichtiger, dass wenn der User 

650
00:29:37,120 --> 00:29:41,360
mal einen Fehler oder vielleicht
sogar auch intern während QA 

651
00:29:41,360 --> 00:29:44,200
oder irgendwas ja wenn man 
feststellt, Oh, da gibt es fast 

652
00:29:44,200 --> 00:29:48,280
einen Bug oder irgendwie und ich
fixe den im Code, dann schreibe 

653
00:29:48,280 --> 00:29:51,720
ich auch einen Test, und zwar 
genau den Test, der mir jetzt 

654
00:29:51,720 --> 00:29:56,000
anzeigt, dass dieser Bug vorher.
Gefällt hat und nach dem Fixing 

655
00:29:56,000 --> 00:29:59,920
im Code dieser Test nicht mehr 
failed sondern paste. 

656
00:30:00,400 --> 00:30:02,920
Ich teste also, dass dieser Bug 
nicht mehr vorkommt, es ist ja 

657
00:30:02,920 --> 00:30:05,760
irgendein, es ist ja, es war ja 
irgendeinen Edge Case oder 

658
00:30:05,760 --> 00:30:08,960
irgendein Prozess, irgendein 
Verhalten, in dem in dem Code 

659
00:30:08,960 --> 00:30:12,280
der vorher nicht abgetestet 
wurde und diesen Bug habe ich 

660
00:30:12,280 --> 00:30:13,920
erkannt und den hinterlege ich 
mit dem Test. 

661
00:30:15,680 --> 00:30:17,520
Und das nennt man dann auch 
Regression Tests. 

662
00:30:17,520 --> 00:30:19,360
Ja, das hat was mit der 
Zeitleiste zu tun. 

663
00:30:19,360 --> 00:30:22,040
Ja, also in dem Moment wo ich 
quasi nen Feature oder nen Bug 

664
00:30:22,040 --> 00:30:24,680
im Test hinterlege, dann dann 
hab ich es natürlich getestet, 

665
00:30:24,680 --> 00:30:27,360
dann seh ich das funktioniert, 
das wäre quasi einfach testing, 

666
00:30:28,080 --> 00:30:30,800
aber für alle zukünftigen 
Weiterentwicklungen des Codes 

667
00:30:30,800 --> 00:30:34,600
drumherum werden werden diese 
Tests quasi mein Safety Netz. 

668
00:30:34,600 --> 00:30:38,120
Ja das ist mein Sicherheitsnetz 
ja weil weil weil dann weiß ich 

669
00:30:38,120 --> 00:30:40,280
schon wenn ich wieder was 
angefasst habe und oft ist das 

670
00:30:40,280 --> 00:30:43,000
ja nicht nicht so einfach zu 
sehen für Entwickler wo sich 

671
00:30:43,000 --> 00:30:45,160
irgendwie. 
Wenn ich hier ne Schraube drehe,

672
00:30:45,160 --> 00:30:47,760
was passiert noch so alles im 
Code, vor allen Dingen wenn man 

673
00:30:47,760 --> 00:30:50,640
im Team arbeitet. 
Wenn aber jeder sein Feature und

674
00:30:50,640 --> 00:30:52,560
seine Bugs immer ordentlich 
testet, dann kann man sich 

675
00:30:52,560 --> 00:30:54,040
relativ sicher sein, dass das 
cool ist. 

676
00:30:54,040 --> 00:30:56,640
So ja, klingt total 
einleuchtend, das ist mein 

677
00:30:56,640 --> 00:30:59,360
einfacher Advice. 
Ja, es gibt es gibt noch ne 

678
00:30:59,360 --> 00:31:01,720
andere Lehrbuchmeinung, die 
davon halt ich nichts, aber die 

679
00:31:01,720 --> 00:31:03,520
die muss man mal. 
Jeder der kommt der der 

680
00:31:04,320 --> 00:31:07,160
Vollständigkeit erwähnen es gibt
dieses Test Driven Development 

681
00:31:07,160 --> 00:31:10,560
TDD ist auch so n Keyword da da 
da macht man das noch anders, da

682
00:31:10,560 --> 00:31:13,600
sagt man halt ich schreib. 
Gar nicht erst Bug oder Feature 

683
00:31:13,600 --> 00:31:17,200
hin, sondern ich schreib mal den
Test hin oder ganz viele Tests, 

684
00:31:17,200 --> 00:31:20,000
die dann erstmal alle 
fehlschlagen, weil ich noch gar 

685
00:31:20,000 --> 00:31:23,440
nicht den Code dazu hab und dann
schreibe ich den Code, der dazu 

686
00:31:23,440 --> 00:31:26,840
führen muss, dass diese Tests 
grün sind und wenn die Grün 

687
00:31:26,840 --> 00:31:28,400
sind, dann hab ich wohl guten 
Code geschrieben. 

688
00:31:28,400 --> 00:31:31,040
Ne, ich mag diese ganze 
Philosophie nicht ja also ich 

689
00:31:31,040 --> 00:31:33,480
ich find das irgendwie rückwärts
und komisch ja also ich nicht. 

690
00:31:34,000 --> 00:31:35,600
Es mag Firmen geben, die das so 
machen. 

691
00:31:35,600 --> 00:31:37,680
Ich find das irgendwie doof, 
weil ich überleg mir lieber 

692
00:31:38,000 --> 00:31:39,680
erstmal genau was für n Features
ist. 

693
00:31:39,680 --> 00:31:42,320
Genau wie ich das Coden will, 
dann Code ich das auch in Ruhe 

694
00:31:43,040 --> 00:31:44,760
und dann muss ich mir die Zeit 
nehmen. 

695
00:31:44,760 --> 00:31:47,040
Das ist halt so, vielleicht auch
nicht nur den den Good Case 

696
00:31:47,040 --> 00:31:49,840
Abzutesten das ist die Kunst 
beim Testen glaub ich und als 

697
00:31:49,840 --> 00:31:53,000
Entwickler das schlimmste ich 
weiß ja was ich geschrieben hab 

698
00:31:53,000 --> 00:31:54,800
und ich weiß wann es 
funktionieren wird 

699
00:31:54,800 --> 00:31:57,280
wahrscheinlich und normalerweise
schreibt man genau den Test hin 

700
00:31:57,520 --> 00:32:00,800
der zeigt es funktioniert ja. 
Ich muss mir aber eigentlich, 

701
00:32:00,800 --> 00:32:03,960
wenn ich Feature gemacht hab, 
ganz ganz stark in pokneifen sag

702
00:32:03,960 --> 00:32:06,720
ich mal als Entwickler und 
überlegen, wie könnte man das 

703
00:32:06,720 --> 00:32:09,600
alles noch benutzen. 
Ja und zwar ganz kuckelig und 

704
00:32:09,600 --> 00:32:13,040
falsch. 
Ja also alle möglichen Cases ja 

705
00:32:13,040 --> 00:32:15,840
und ich muss auch zeigen und das
ist auch wichtig, erstens das 

706
00:32:15,920 --> 00:32:18,640
also noch mehr als ein Test 
schreiben zu dem einen Feature 

707
00:32:19,040 --> 00:32:22,720
und ich muss auch testen, dass 
es unter den nicht unter den 

708
00:32:22,720 --> 00:32:24,840
unter den schlechten Zuständen 
auch nicht funktioniert noch die

709
00:32:24,840 --> 00:32:26,640
richtigen Fehlermeldungen gibt 
und so weiter. 

710
00:32:27,200 --> 00:32:30,400
Ist ganz oft so und das erleiden
wir auch ganz oft noch, dass 

711
00:32:30,400 --> 00:32:32,880
wenn wenn irgendwas nicht so 
ist, wie es sein soll, dass dann

712
00:32:32,880 --> 00:32:34,880
zum Beispiel die Fehlermeldung 
irgendwie kacke ist oder oder 

713
00:32:34,880 --> 00:32:37,680
völlig quer ja oder irgend 
sowas, das kann man in den 

714
00:32:37,680 --> 00:32:39,480
Tests, wenn man die gut macht 
auch schon mit testen. 

715
00:32:39,480 --> 00:32:44,080
Ja also ich ich ich fordere eine
einen Fehler heraus bei dem Test

716
00:32:44,080 --> 00:32:46,880
und analysiere den Fehler ob der
auch ordentlich ist und solche 

717
00:32:46,880 --> 00:32:50,320
Sachen, ja das gehört auch dazu,
also negativtesting quasi ja 

718
00:32:50,800 --> 00:32:52,360
das. 
Ich wollt, ich wollt grad noch 

719
00:32:52,360 --> 00:32:54,160
fragen, wie schreibt man denn 
jetzt eigentlich gute Tests? 

720
00:32:54,160 --> 00:32:56,320
Jetzt hast du es schon so n 
bisschen gesagt, aber das 

721
00:32:56,320 --> 00:32:59,680
bedeutet ja auch man muss 
wirklich Prozentsatz x seiner 

722
00:32:59,680 --> 00:33:02,960
Zeit und auch gehirnkapazität 
dafür auch wirklich einplanen 

723
00:33:02,960 --> 00:33:06,640
und und und. 
Vom Chef hast du jetzt nicht, 

724
00:33:06,640 --> 00:33:09,440
aber wenn man einen hätte oder 
ne Chefin dafür auch die Zeit 

725
00:33:09,440 --> 00:33:11,680
bekommen tatsächlich ne haben 
das auch zu tun. 

726
00:33:11,760 --> 00:33:13,600
War früher richtig aufwendig. 
Jetzt haben wir KI. 

727
00:33:14,080 --> 00:33:17,200
Ah ja, jetzt. 
Ist es relativ schnell, ist der 

728
00:33:17,200 --> 00:33:18,640
Drop relativ schnell gelutscht. 
Ja. 

729
00:33:19,360 --> 00:33:23,920
Ja, weil tatsächlich KI, also 
ich weiß nicht, doch ich weiß, 

730
00:33:23,920 --> 00:33:26,600
ich kann mir vorstellen, warum. 
Ja, KI ist unglaublich mächtig 

731
00:33:26,600 --> 00:33:29,760
im Testschreiben, ne, weil man 
kann sich vorstellen, warum bei 

732
00:33:29,760 --> 00:33:31,680
KI, so wie sie es funktioniert 
mit den ganzen 

733
00:33:31,680 --> 00:33:33,840
Wahrscheinlichkeiten, dem Lernen
und dem Trainieren und so weiter

734
00:33:34,240 --> 00:33:37,520
das ist ja, Tests sind sehr sehr
sauber und strukturiert 

735
00:33:37,520 --> 00:33:40,880
aufgeschrieben, ne also. 
Das ist ja so n if than Else 

736
00:33:40,880 --> 00:33:43,760
oder ich ich, das ist oft oft in
diesen Test dramworks auch in so

737
00:33:43,760 --> 00:33:45,440
einer Art Englisch geschrieben, 
das kannst du richtig lesen, 

738
00:33:45,440 --> 00:33:48,240
wieso n Buch ja wenn das 
passiert, dann expected das oder

739
00:33:48,240 --> 00:33:51,160
hat zu sein oder contains und so
die die nutzen auch richtig 

740
00:33:51,160 --> 00:33:55,560
normale Wörter quasi in der API,
also hat das AKI wahrscheinlich 

741
00:33:55,560 --> 00:33:58,480
sehr gut gelernt und ist sehr 
gut in der Lage Tests zu 

742
00:33:58,480 --> 00:34:01,520
schreiben und das ist ja auch 
echt so n so ne Aufgabe die also

743
00:34:01,520 --> 00:34:03,440
ich kenn ja wenig Entwickler 
denen das Spaß macht. 

744
00:34:04,080 --> 00:34:05,600
Und KI donnert das halt einfach 
runter. 

745
00:34:05,600 --> 00:34:07,680
Es muss aber gemacht werden, es 
ist total wichtig und es ist 

746
00:34:07,680 --> 00:34:09,360
auch kein Boilerblade das KI da 
generiert. 

747
00:34:09,360 --> 00:34:12,080
Du kannst halt KI sagen, guck 
mal das ist mein Feature und 

748
00:34:12,080 --> 00:34:14,719
jetzt überleg mal was kann da 
alles schiefgehen und überleg 

749
00:34:14,719 --> 00:34:17,480
dir einfach mal richtig viele 
Tests dazu, ich mach das den 

750
00:34:17,480 --> 00:34:20,719
ganzen Tag ja also ich les dir 
auch und Review die und überleg 

751
00:34:20,719 --> 00:34:23,159
ob es noch mehr gibt aber die 
schreib ich dann meistens auch 

752
00:34:23,159 --> 00:34:25,360
nicht selber lass dich KI 
schreiben und Review die wieder 

753
00:34:25,440 --> 00:34:28,400
weil weil das unglaublich 
mächtig ist KI und dann bist du 

754
00:34:28,400 --> 00:34:30,880
also es gibt eigentlich kein 
Excuse mehr heutzutage mit mit 

755
00:34:30,880 --> 00:34:32,800
mit KI keine Tests zu schreiben 
ne. 

756
00:34:33,480 --> 00:34:36,840
Also gibt es keine Excuse mehr, 
Software auszuliefern, die die 

757
00:34:36,840 --> 00:34:41,560
Buggy ist im Grunde genommen. 
Ja, wenn man es, wenn man es bis

758
00:34:41,560 --> 00:34:42,920
auf die Spitze treibt, müsste es
so sein. 

759
00:34:42,920 --> 00:34:47,360
Ne, genau. 
Gut, aber es gibt natürlich noch

760
00:34:47,360 --> 00:34:49,679
die, die die Teile denen, wo 
noch kein Bug da war und noch 

761
00:34:49,679 --> 00:34:52,120
keine oder noch keine entdeckt 
wurde und noch kein Feature neu 

762
00:34:52,120 --> 00:34:53,520
entwickelt wurde, wo es dann 
eben Contact. 

763
00:34:53,679 --> 00:34:55,440
Ja, und es gibt halt die 
Abstraktionslevels ne. 

764
00:34:55,440 --> 00:34:57,200
Also ich hab jetzt von 
Integration Test gesprochen, das

765
00:34:57,200 --> 00:34:58,800
kann schon sein, dass die alle 
cool sind und dann geht ja 

766
00:34:58,800 --> 00:35:00,560
trotzdem Ende zu Ende was 
kaputt, ja. 

767
00:35:01,200 --> 00:35:03,600
Und oft liegt da der, der der 
Hase im Pfeffer, weil wir 

768
00:35:03,600 --> 00:35:05,640
sprechen mal gerade aus dem 
Nähkästchen, auch wieder 

769
00:35:05,640 --> 00:35:07,120
Aktuelles gibt. 
Manchmal echt schwierige Sachen,

770
00:35:07,120 --> 00:35:09,840
ja, weil weil dir büchst halt 
irgendwie in einem Use Case was 

771
00:35:09,840 --> 00:35:12,800
aus, da hast du auf einmal n 
Burst von 10000 Clients, die 

772
00:35:12,800 --> 00:35:14,880
wollen irgendwie was 
gleichzeitig, ja und dann? 

773
00:35:14,880 --> 00:35:17,160
Dann gehen die wildesten Sachen 
kaputt, die du so überhaupt noch

774
00:35:17,160 --> 00:35:19,520
nie auf Zettel hattest. 
Ja, führt mich auch noch zu 

775
00:35:19,520 --> 00:35:20,680
einer anderen Kategorie von 
Tests. 

776
00:35:20,680 --> 00:35:22,960
Jetzt haben wir von den 
funktionalen Tests gesprochen, 

777
00:35:23,360 --> 00:35:26,240
die unter, ich sag mal so mehr 
oder weniger normalen Umständen 

778
00:35:26,240 --> 00:35:28,320
laufen. 
Wenn man das richtig ernst 

779
00:35:28,320 --> 00:35:30,480
betreibt und ne verteilte 
Plattform hat mit Cloud und 

780
00:35:30,480 --> 00:35:32,720
allem drum und dran, muss man 
eigentlich auch Last oder 

781
00:35:32,720 --> 00:35:35,480
Performance Tests schreiben die 
die Abprüfen. 

782
00:35:35,480 --> 00:35:36,960
Was. 
Wie verhält sich dein System 

783
00:35:36,960 --> 00:35:41,400
unter nicht normalen unter unter
extrem anstrengenden Bedingungen

784
00:35:41,400 --> 00:35:44,720
sag ich mal ja und und die Tests
ganze aber die müssen wir n 

785
00:35:44,720 --> 00:35:47,840
bisschen extra behandeln, die 
die sind schwierig in so ne CICD

786
00:35:47,840 --> 00:35:51,760
Pipeline einzubauen ja weil die.
Ja, die, die brauchen halt oft 

787
00:35:51,760 --> 00:35:54,320
noch mehr Material. 
Die müssen ja auch erstmal quasi

788
00:35:54,320 --> 00:35:56,880
das alles simulieren, dass du so
viele Clients hast und so weiter

789
00:35:56,880 --> 00:35:59,840
die sind noch komplexer zu 
schreiben und noch komplexer 

790
00:35:59,840 --> 00:36:03,360
auszuwerten, aber die sollte man
auch haben bis zum gewissen Grad

791
00:36:03,600 --> 00:36:07,240
und auch in irgendeinem Schema 
laufen lassen und dass man da 

792
00:36:07,240 --> 00:36:09,680
auch sicher ist, dass man auch 
keine Performance Bugs einbaut, 

793
00:36:09,680 --> 00:36:11,120
die sind nämlich hart zu 
tracken. 

794
00:36:11,120 --> 00:36:13,560
Ja, kann ja sein, dass immer 
noch alles funktioniert, es ist 

795
00:36:13,560 --> 00:36:15,720
aber leider irgendwie zehnmal 
langsamer geworden und ich seh 

796
00:36:15,720 --> 00:36:18,600
es erst wenn wenn der nächste 
User mit einem Sturm von 

797
00:36:18,600 --> 00:36:20,240
Nachrichten ankommt oder 
irgendwas ja. 

798
00:36:20,640 --> 00:36:23,320
Wegen Memory League oder 
irgendwie solche Geschichten 

799
00:36:23,320 --> 00:36:25,760
dann ne. 
Ja, wegen also Timing spielt ja,

800
00:36:25,760 --> 00:36:28,960
und das ist das komplizierte 
beim beim verteilten System 

801
00:36:28,960 --> 00:36:32,240
spielt ja das Timing und 
Asynchronität ne ne riesige 

802
00:36:32,480 --> 00:36:34,960
gigantische Rolle. 
Ja im Notfall komme ich in 

803
00:36:34,960 --> 00:36:38,080
irgendein Limit rein, ne memory 
Bandbreite, netzwerkbandbreite, 

804
00:36:38,080 --> 00:36:40,720
CPU Last Storage was ich 
gleichzeitig hier ne auf dem 

805
00:36:40,720 --> 00:36:44,000
Disc schreiben kann aber ich bin
halt einfach immer in der Lage 

806
00:36:44,000 --> 00:36:46,400
wenn ich nicht auf einem 
physikalischen Not bin. 

807
00:36:46,640 --> 00:36:48,760
Sondern hab mehrere 
zusammengesteckt und sag halt 

808
00:36:48,760 --> 00:36:51,520
irgendwie hier ihr 100 ihr 
schickt mir alle wie wild 

809
00:36:51,520 --> 00:36:54,160
Nachrichten auf den einen und 
das sind klassische 

810
00:36:54,160 --> 00:36:55,640
Architekturen. 
Irgendwo hab ich immer mal 

811
00:36:55,640 --> 00:36:59,360
irgendwo ne Stelle wo wo wo wo 
Daten zentral archiviert werden 

812
00:36:59,360 --> 00:37:01,440
müssen, da gibt es natürlich 
1000 patterns in der Software, 

813
00:37:01,920 --> 00:37:05,240
aber das passiert halt und das 
kann ich halt nicht mit Unit 

814
00:37:05,240 --> 00:37:06,960
Tests und auch nicht mit dem 
einfachen Integration Test 

815
00:37:06,960 --> 00:37:09,200
spiegeln. 
Ja da brauch ich halt echt ich 

816
00:37:09,200 --> 00:37:11,920
bring halt die die Hardware und 
die Software damit an ihre 

817
00:37:11,920 --> 00:37:16,240
Grenzen indem ich indem ich 
tatsächlich erstmal 100 Streams 

818
00:37:16,240 --> 00:37:19,120
TCP Streams aufbauen muss von 
Notes, die physikalisch in der 

819
00:37:19,120 --> 00:37:21,200
Lage sind den einen kaputt zu 
Bomben. 

820
00:37:21,200 --> 00:37:23,840
Ja ist gar nicht so einfach 
alles zu simulieren, ne das sind

821
00:37:23,840 --> 00:37:26,240
so das sind Tests wo man sich 
wirklich viel Gedanken machen 

822
00:37:26,240 --> 00:37:29,720
muss, ja dann die dauern halt 
auch ihre Zeit hinzuschreiben. 

823
00:37:29,720 --> 00:37:32,080
Kann man dann so für so 
Performance Tests auch. 

824
00:37:32,240 --> 00:37:35,760
Gibt es da testumgebungen? 
Sag ich mal wo man dann Traffic 

825
00:37:35,760 --> 00:37:38,880
simulieren kann ne bestimmte 
Anzahl von Anfragen oder solche 

826
00:37:38,880 --> 00:37:42,000
Geschichten. 
Ein kurzer Hinweis in eigener 

827
00:37:42,000 --> 00:37:43,600
Sache. 
Kennst du das auch? 

828
00:37:43,600 --> 00:37:45,800
Ihr seid gefangen zwischen 
starrer, veralteter 

829
00:37:45,800 --> 00:37:48,160
Standardsoftware und endlosen 
Individual 

830
00:37:48,160 --> 00:37:50,880
Entwicklungsprojekten. 
Unsere Mission bei Heisenware 

831
00:37:50,880 --> 00:37:54,640
ist es, das zu beenden mit 
unserem App Baukasten geben wir 

832
00:37:54,640 --> 00:37:57,280
dir die Möglichkeit, 
maßgeschneiderte Software für 

833
00:37:57,280 --> 00:38:00,400
den Shopfloor schnell und ohne 
Code zu erstellen. 

834
00:38:00,720 --> 00:38:03,560
Denk an Maschinendatenerfassung 
moderne Visualisierung für die 

835
00:38:03,560 --> 00:38:06,160
Produktionsleiter oder eine 
mobile App zur Buchung von 

836
00:38:06,160 --> 00:38:10,320
Zeiten und das beste du kannst 
deine Lösung ganz einfach ohne 

837
00:38:10,320 --> 00:38:14,080
it Aufwand selbst betreiben. 
Kurz gesagt, günstiger als eine 

838
00:38:14,080 --> 00:38:17,360
externe Entwicklung unendlich 
passender als Software von der 

839
00:38:17,360 --> 00:38:19,160
Stange. 
Weitere Infos und eine 

840
00:38:19,160 --> 00:38:22,640
kostenlose 30 Tage Testphase 
findest du auf heisenware.com. 

841
00:38:22,640 --> 00:38:26,560
Slash einfach minus komplex und 
jetzt viel Spaß mit der weiteren

842
00:38:26,560 --> 00:38:29,600
Folge. 
Ja, es gibt. 

843
00:38:29,600 --> 00:38:31,840
Also es gibt es gibt ganz viele 
Tools noch und nöcher. 

844
00:38:31,880 --> 00:38:34,160
Es gibt auch, also es gibt vor 
allen Dingen auch Frameworks, 

845
00:38:34,160 --> 00:38:36,280
haben wir noch nicht drüber 
gesprochen heute, also für diese

846
00:38:36,280 --> 00:38:38,800
Integration Tests. 
Würde überhaupt für, ich sag mal

847
00:38:38,800 --> 00:38:41,680
das innere Test schreiben. 
Ich sag mal nur 1, was ich halt 

848
00:38:41,680 --> 00:38:44,160
irgendwie ist. 
Daily Bat and Butter ist just 

849
00:38:44,480 --> 00:38:48,120
also JEST, das nimmt man so in 
der Webwelt ist super für Note 

850
00:38:48,120 --> 00:38:51,120
GS und und und und React Tests 
und so weiter ja und dann gibt 

851
00:38:51,840 --> 00:38:54,720
es diese für für diese krasseren
Tests so also für diese End to 

852
00:38:54,720 --> 00:38:56,440
end Test. 
Da muss ich ja quasi irgendwie 

853
00:38:56,440 --> 00:38:58,160
mit dem Browser simulieren und 
alles mögliche ne. 

854
00:38:58,160 --> 00:39:01,120
Also ich muss ja n ich muss ja 
quasi automatisiertes so tun als

855
00:39:01,120 --> 00:39:04,480
hätte ich n Knopf gedrückt. 
Und dann will ich eigentlich, 

856
00:39:04,480 --> 00:39:06,800
auch wenn der Test fehlschlägt, 
Hits mir auch nicht zu sagen, 

857
00:39:06,800 --> 00:39:08,480
der ist jetzt fehlgeschlagen. 
Ich muss ja irgendwie das 

858
00:39:08,800 --> 00:39:11,920
verstehen können als Entwickler,
wann ist da was passiert, also 

859
00:39:11,920 --> 00:39:13,840
hab ich da am liebsten auch so n
Framework, was mir zum Beispiel 

860
00:39:13,840 --> 00:39:16,320
genau aufzeichnen kann, in 
welcher Millisekunde ist da was 

861
00:39:16,320 --> 00:39:18,640
gerendert und warum, da gibt es 
halt auch so Tools. 

862
00:39:18,640 --> 00:39:20,920
Ja das älteste was man da so 
kennt ist Silenium ist so n 

863
00:39:20,920 --> 00:39:24,600
bisschen der bisschen wie wie C 
für für Testing gibt es auch 

864
00:39:24,600 --> 00:39:27,440
immer noch im Markt, gibt aber 
jetzt modernere Tools zum 

865
00:39:27,440 --> 00:39:30,960
Beispiel Cypress oder playright 
ich will den mal hier nennen, 

866
00:39:31,040 --> 00:39:34,920
die sind halt coole Tools wo man
ja die hängen sich quasi in den 

867
00:39:34,920 --> 00:39:37,520
Browser rein, die simulieren 
quasi die ganze Browser Engine 

868
00:39:37,520 --> 00:39:42,720
und mit denen kann ich quasi im 
Test sagen, drück mal jetzt auf 

869
00:39:42,720 --> 00:39:45,480
diesen Knopf, ja und dann drückt
es quasi tatsächlich auf diesen 

870
00:39:45,480 --> 00:39:48,320
Knopf, aber es macht halt der 
Test automatisiert und dann kann

871
00:39:48,320 --> 00:39:50,720
ich mehr oder weniger mit auch 
mit fast englisch Grammatik 

872
00:39:50,720 --> 00:39:53,560
irgendwie sagen und jetzt 
erwarte ich das und das Ergebnis

873
00:39:53,560 --> 00:39:56,480
und so weiter ja die Kunst ist 
das Schwierige für diese 

874
00:39:56,480 --> 00:39:58,320
Produkte ist diese 
Asynchronität. 

875
00:39:58,720 --> 00:40:01,320
Abzukriegen ja, weil weil die 
Sachen nicht gleich lang dauern.

876
00:40:01,320 --> 00:40:04,400
Ne die testen ja quasi dann auch
so viele Komponenten, Netzwerk 

877
00:40:04,400 --> 00:40:08,640
und und Browser, dass du ne 
gewisse wie soll ich sagen ne 

878
00:40:08,640 --> 00:40:12,400
gewisse Grauzone hast wann exakt
was kommt und so weiter ja und 

879
00:40:12,400 --> 00:40:15,920
das nennt sich flakiness ja, 
also wenn dein Test mal 

880
00:40:15,920 --> 00:40:19,560
funktioniert und mal nicht, 
obwohl du nichts geändert hast. 

881
00:40:19,560 --> 00:40:21,400
Also eigentlich, das hat man 
ganz am Anfang ne du willst 

882
00:40:21,400 --> 00:40:24,320
eigentlich genau den gleichen 
State haben und testest was und 

883
00:40:24,320 --> 00:40:27,680
mal ist der Grün und mal ist der
Rot, dann nennt man das Flakey. 

884
00:40:28,080 --> 00:40:30,840
Und das halt ganz gruselig, weil
dann weißt du dann, den kannst 

885
00:40:30,840 --> 00:40:33,160
du lieber gleich streichen den 
Test, weil dann das, damit 

886
00:40:33,160 --> 00:40:35,120
kannst du gar nichts anfangen, 
weißt du nicht was du hast? 

887
00:40:35,120 --> 00:40:39,680
Ja, und und die Tests werden 
umso flakier, je abstrakter sie 

888
00:40:39,680 --> 00:40:41,520
sind. 
Ja, also Ende, Ende zu Ende, 

889
00:40:41,520 --> 00:40:45,440
Test nicht flaky hinzumachen, 
dass sie immer genau gleich sind

890
00:40:45,680 --> 00:40:48,720
und sich gleich verhalten, das 
hat halt auch was mit dazu zu 

891
00:40:48,720 --> 00:40:50,520
tun, wie du deine Architektur 
aufgebaut hast. 

892
00:40:50,520 --> 00:40:52,960
Ja ob die sauber immer gut 
durchläuft, ja oder ob die sich 

893
00:40:52,960 --> 00:40:55,680
irgendwo verschluckt irgendwann.
Das ist halt, das ist ne hohe 

894
00:40:55,680 --> 00:40:56,880
Kunst. 
Aber da helfen dir halt auch 

895
00:40:56,880 --> 00:40:59,440
diese Tools, die sind halt viel,
viel besser geworden als früher,

896
00:41:00,080 --> 00:41:02,720
um das automatisch zu warten und
so weiter gut abzuschätzen und 

897
00:41:02,720 --> 00:41:06,000
so gut. 
Haben wir mal n paar Frameworks 

898
00:41:06,000 --> 00:41:08,600
noch kennengelernt? 
Wie viele kann man vielleicht 

899
00:41:08,600 --> 00:41:10,680
bei uns noch mal n Beispiel 
machen, wie viele so End to end 

900
00:41:10,680 --> 00:41:14,760
Tests haben wir, also kann man 
darüber reden und weil wir haben

901
00:41:14,760 --> 00:41:17,400
ja noch mal ne extra 
Schwierigkeitsstufe bei uns 

902
00:41:17,400 --> 00:41:19,600
drin, weil wir haben ja n 
Produkt mit dem man dann wieder 

903
00:41:19,600 --> 00:41:22,480
Software bauen kann. 
Die kann man ja auch, die kann 

904
00:41:22,480 --> 00:41:24,200
ja sonst wie aussehen, da kann 
man ja gar nicht alles 

905
00:41:24,200 --> 00:41:26,040
durchtesten. 
Ja, und dann haben wir ja alles 

906
00:41:26,040 --> 00:41:28,400
schon erlebt, ja, dann kommt der
eine Kunde hat noch n iphone von

907
00:41:28,400 --> 00:41:32,360
2015 oder so OK ist n bisschen 
übertrieben, aber älteres Modell

908
00:41:32,360 --> 00:41:35,360
ja und hat dann irgendeinen 
Browser drauf und dann sieht das

909
00:41:35,360 --> 00:41:39,360
da n bisschen anders aus als auf
dem neuesten Samsung Galaxy s 25

910
00:41:39,360 --> 00:41:41,840
oder wie es heißt keine Ahnung. 
Ja es ist halt anders. 

911
00:41:43,520 --> 00:41:46,160
Ja, du hast Recht, also das. 
Also das ist genau das ne, also 

912
00:41:46,160 --> 00:41:48,560
man man man kann also man kämpft
gegen Windmühlen, ne also. 

913
00:41:49,400 --> 00:41:51,520
Das schaffst du gar nicht 
abzudecken und meine, meine 

914
00:41:51,520 --> 00:41:53,960
Philosophie ist, wir haben gar 
nicht so viele automatisierte 

915
00:41:53,960 --> 00:41:56,640
Ende zu Ende Tests. 
Ja, ich finde ich finde im 

916
00:41:56,640 --> 00:42:00,800
Moment noch für uns als kleine 
Firma ist es wirtschaftlicher, 

917
00:42:01,600 --> 00:42:03,600
wirtschaftlicher klingt so blöd 
ne, aber es ist einfach 

918
00:42:03,600 --> 00:42:06,880
effizienter und erfolgreicher 
wenn wir uns die Zeit im QA 

919
00:42:06,880 --> 00:42:09,520
nehmen oder wie auch immer man 
das nennen will, manuelles 

920
00:42:09,520 --> 00:42:11,880
Testing ne es ist halt nicht 
automatisiert, aber wir nehmen 

921
00:42:11,880 --> 00:42:14,960
uns halt die Zeit um die Sachen 
selber durchzuklicken und zu 

922
00:42:14,960 --> 00:42:18,880
gucken ob die funktionieren ne 
das kann lange besser sein als. 

923
00:42:19,600 --> 00:42:22,280
Als Auto versuchen, das zu 
automatisieren, weil es echt 

924
00:42:22,280 --> 00:42:24,840
extrem schwierig ist. 
Ich, ich geb dem noch mal ne 

925
00:42:24,840 --> 00:42:26,080
Chance. 
Wir sind tatsächlich auch gerade

926
00:42:26,080 --> 00:42:27,840
am Versuch. 
Es gibt auch Plattformen, also 

927
00:42:27,840 --> 00:42:30,280
Cloud Plattform Cloud Anbieter. 
Ich nenn jetzt hier mal keinen, 

928
00:42:30,280 --> 00:42:33,520
aber ich keine Werbung machen 
will, aber die die auch mit KI 

929
00:42:33,520 --> 00:42:37,320
an Bord quasi dir dir da ganz 
viel erlauben weil da kannst du 

930
00:42:37,320 --> 00:42:39,920
quasi so n Link hinschicken und 
dann nehmen die da quasi du 

931
00:42:39,920 --> 00:42:42,320
spielst das einmal durch, die 
Zeichnen das mehr oder weniger 

932
00:42:42,320 --> 00:42:45,680
auf und dann wird das quasi 
eingebettet in nen Test mit KI 

933
00:42:45,680 --> 00:42:48,240
und dann wird auch quasi nen nen
Cypress oder? 

934
00:42:48,720 --> 00:42:50,920
Oder Play Ride Test quasi 
erstellt im Hintergrund. 

935
00:42:50,920 --> 00:42:52,840
Ja, da gibt es richtig viel 
cooles Krams. 

936
00:42:52,840 --> 00:42:55,600
Ja, da gucken wir immer mal 
wieder drauf, das braucht aber 

937
00:42:55,600 --> 00:42:58,920
auch seine Zeit um sich da um da
quasi am Zahn der Zeit zu 

938
00:42:58,920 --> 00:43:00,160
bleiben. 
Was sind das für Tools und die 

939
00:43:00,160 --> 00:43:02,200
musst du irgendwie integrieren 
und so weiter und sofort, das 

940
00:43:02,200 --> 00:43:04,400
muss immer wieder laufen, ich 
muss sagen da sind wir noch 

941
00:43:04,400 --> 00:43:06,760
nicht ganz fertig, ich 
analysiere da immer noch den 

942
00:43:06,760 --> 00:43:09,840
Markt und solange das irgendwie 
für mich noch nicht so richtig 

943
00:43:09,840 --> 00:43:12,720
ganz klar ist, machen wir auch 
viel beim Ende zu Ende, testen 

944
00:43:12,720 --> 00:43:15,440
einfach viel manuell, ja. 
Ja, ja, kann ich auch n Lied von

945
00:43:15,440 --> 00:43:18,080
singen. 
Ich bin hier regelmäßig 

946
00:43:18,080 --> 00:43:20,560
involviert, ja die Dinge einfach
durch zu testen durch zu 

947
00:43:20,560 --> 00:43:24,240
klicken, hab dann immer auf 
meiner Demo die neueste Version 

948
00:43:24,240 --> 00:43:27,600
ja und darf dann Features auch 
mal live vertesten. 

949
00:43:28,400 --> 00:43:29,440
Das ist so. 
Ja, genau. 

950
00:43:29,440 --> 00:43:32,320
Aber so ist es ja, das ist ja 
cool und man, man schlägt gleich

951
00:43:32,320 --> 00:43:33,920
mehrere Fliegen mit einer 
Klappe, quasi ne. 

952
00:43:34,240 --> 00:43:36,160
Ja, du hast, du hast da. 
Du kannst nicht alles haben, ne,

953
00:43:36,160 --> 00:43:37,800
du kannst. 
Also du kannst natürlich sagen, 

954
00:43:37,800 --> 00:43:40,560
OK ich, aber das ist wie wie wie
wie mit dem mit dem verteilten 

955
00:43:40,560 --> 00:43:42,040
System. 
Du kannst nicht alle Parameter 

956
00:43:42,040 --> 00:43:44,520
optimieren, ja du kannst. 
Kannst irgendwie versuchen 

957
00:43:44,520 --> 00:43:47,920
Kompromiss zu finden zwischen 
wir sind reaktiv und antworten 

958
00:43:47,920 --> 00:43:50,960
Antworten auf User request und 
versuchen Features auch 

959
00:43:50,960 --> 00:43:55,320
reinzubringen versus wir sind 
absolut irgendwie, da passiert 

960
00:43:55,320 --> 00:43:57,080
überhaupt nichts, wenn du das 
nächste Release hast oder aber 

961
00:43:57,080 --> 00:44:00,320
dann, dann haben wir halt NN 
Release Cycle von einem in einem

962
00:44:00,320 --> 00:44:02,080
Jahr haben wir n neues Feature 
draußen oder irgend so was ja 

963
00:44:02,080 --> 00:44:05,520
und bei einer kleinen Firma 
glaub ich kriegst du nicht alles

964
00:44:05,520 --> 00:44:07,840
optimiert ja du und du musst 
halt für dich den Kompromiss 

965
00:44:07,840 --> 00:44:09,200
finden ne. 
Mhm. 

966
00:44:09,760 --> 00:44:11,680
Ja, wir werden auch größere. 
Firmen Verkämpfen haben auf 

967
00:44:11,680 --> 00:44:12,600
anderem Level. 
Glaub ich auch. 

968
00:44:12,720 --> 00:44:14,760
Glaub ich auch. 
OK, haben wir noch was 

969
00:44:14,760 --> 00:44:17,360
vergessen? 
Zum Thema Software Testing. 

970
00:44:18,160 --> 00:44:20,520
Ja, bestimmt und bestimmt gibt 
es auch ganz viel dazu zu 

971
00:44:20,520 --> 00:44:23,040
erzählen. 
Mit anderer Meinung, aber ich 

972
00:44:23,040 --> 00:44:25,360
glaub ich hab so n bisschen was 
rübergebracht, was wie ich das 

973
00:44:25,360 --> 00:44:27,680
so sehe. 
Ich glaube, dass man mit KI sei 

974
00:44:27,680 --> 00:44:30,280
vielleicht mal abschließend, so 
wie man überhaupt seine ganze 

975
00:44:30,280 --> 00:44:32,440
Entwicklung überdenkt, gerade 
und wie alles irgendwie sich auf

976
00:44:32,440 --> 00:44:35,960
den Kopf stellt ist KIN krasser 
gamechanger was das Testing halt

977
00:44:35,960 --> 00:44:38,320
auch angeht und vielleicht auch 
das NTN Testing. 

978
00:44:38,640 --> 00:44:40,600
Und vielleicht haben wir dann 
noch mal ne anderes, ne andere 

979
00:44:40,600 --> 00:44:42,680
geographische Figur, ne 
umgedrehte Pyramide oder 

980
00:44:42,680 --> 00:44:45,680
irgendwas später. 
Weiß es nicht, weil halt einfach

981
00:44:45,680 --> 00:44:49,360
dieser durch das Code generieren
ist halt dieser massive Aufwand.

982
00:44:49,680 --> 00:44:51,280
Das Mantain ist halt nicht mehr 
so krass. 

983
00:44:51,280 --> 00:44:54,360
Ja und wenn KI schafft nicht 
flakey seriöse Ende zu Ende 

984
00:44:54,360 --> 00:44:58,080
Tests zu schreiben die man zügig
Revuen kann, das ist n krasser 

985
00:44:58,080 --> 00:45:00,640
Mehrwert da also wir nutzen es 
für degration Tests zum Beispiel

986
00:45:00,640 --> 00:45:03,120
auch richtig viel da, also es 
funktioniert wunderbar. 

987
00:45:03,600 --> 00:45:05,200
Mhm. 
OK, kann ich nur empfehlen. 

988
00:45:05,360 --> 00:45:07,600
Fand ich ne coole coole Folge. 
Ja, viel. 

989
00:45:08,080 --> 00:45:12,400
Theorie sozusagen, aber komplett
angereichert mit der Praxis und 

990
00:45:12,400 --> 00:45:15,680
der Erfahrung, die du da hast. 
Und wir in unserer Entwicklung 

991
00:45:16,000 --> 00:45:20,080
super das was dabei das was 
dabei mach mal sag zu wie du es 

992
00:45:20,080 --> 00:45:23,200
immer sagst, ja hab ich lang 
nicht gesagt, aber machen wir 

993
00:45:23,200 --> 00:45:27,800
das ja, sag zu genau wir danken 
euch fürs Zuhören und wenn ihr 

994
00:45:27,800 --> 00:45:30,280
Lust habt, dann schreibt uns wie
ihr so testet, vielleicht habt 

995
00:45:30,280 --> 00:45:32,520
ihr noch gute Tipps, die nehmen 
wir immer gerne an würde ich 

996
00:45:32,520 --> 00:45:34,480
sagen und die anderen Hörer 
bestimmt auch. 

997
00:45:35,040 --> 00:45:37,440
Und dann bis in 2 Wochen bei 
einfach komplex macht's gut 

998
00:45:37,440 --> 00:45:39,920
tschau tschau. 
Bis zur Folge 104 Tschüss aus 

999
00:45:39,920 --> 00:45:43,040
Hamburg. 
Einfach komplex wird produziert 

1000
00:45:43,040 --> 00:45:46,320
und präsentiert von Heisenware. 
Heisenware ist deine Low Code 

1001
00:45:46,320 --> 00:45:49,840
Plattform zur Erstellung und zum
Betrieb interaktiver Apps rund 

1002
00:45:49,840 --> 00:45:51,920
um den Shopfloor. 
Starte noch heute deinen Free 

1003
00:45:51,920 --> 00:45:55,680
Twil unterheisenware.com einfach
komplex.

