Softwaretests mit Python

von: Johannes Hubertz

Springer Vieweg, 2016

ISBN: 9783662486030 , 254 Seiten

Format: PDF

Kopierschutz: Wasserzeichen

Windows PC,Mac OSX geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's

Preis: 42,99 EUR

Mehr zum Inhalt

Softwaretests mit Python


 

Vorwort

6

Inhalt

7

1 Einleitung

11

1.1 Die Softwarekrise

13

1.2 Motivation für Softwaretests

15

1.2.1 Vor- und Nachteile

16

1.2.2 Varianten in der Namensgebung für Tests

17

1.2.3 Methodik: Wie kommen die Tests zustande?

19

1.2.4 Mathematik

20

1.3 Python

23

1.3.1 Schreibstil

24

1.3.2 Verzeichnisstruktur

26

1.3.3 Versionierung

27

1.3.4 Versionskontrollsysteme

28

1.3.5 Klinisch reine Umgebung

29

1.3.6 Dokumentation

30

1.3.7 Projektschnellstart

35

1.4 Interview: Dr. Mike Müller

36

2 Doctest

41

2.1 Definition: Docstring

41

2.2 Einfaches Beispiel

42

2.3 Der Interpreter

43

2.4 Eine Python-Datei

44

2.5 Dokumentierte Python-Datei

47

2.6 Tricks und Kniffe

52

2.6.1 Leerzeichen verbessern die Lesbarkeit

52

2.6.2 Variable Ergebnisse

53

2.6.3 Eine leere Zeile

54

2.6.4 Ausnahmebehandlung

56

2.6.5 Ausnahmebehandlung mit Details

58

2.6.6 Direkter Aufruf

59

2.6.7 Einen Test auslassen

61

2.7 Automatische Dokumentation

61

2.8 Interview: Dr. Stefan Schwarzer

62

3 Unittests machen Freude

67

3.1 Begriffe

68

3.1.1 Testfall

68

3.1.2 Testvorrichtung, test fixture

69

3.1.3 Testgruppe

70

3.1.4 Teststarter

70

3.1.5 Teststarter im Python-Modul

71

3.2 unittest Modul auf der Kommandozeile

72

3.2.1 Optionale Argumente

72

3.2.2 unittest in der Kommandozeile

73

3.2.3 Ablaufvereinfachung mit nosetests

73

3.2.4 Akzeptanz erwünscht

75

3.2.5 Fallunterscheidung

77

3.2.6 Ausnahmebehandlung

79

3.2.7 Vergleichsmöglichkeiten im Testfall

83

3.2.8 Assertions

83

3.2.9 Tests auslassen

85

3.3 Erweiterungen

87

3.3.1 Fixtures

87

3.3.2 Testabdeckung

88

3.3.3 Testabdeckung als HTML-Ausgabe

90

3.4 Vortäuschen falscher Tatsachen

92

3.4.1 Mock als Dekorator

92

3.4.2 Mock im Zusammenhang mit Kontextmanagern

92

3.4.3 Mock und die Nutzung im Testfall

94

3.4.4 Lern- und Spielwiese

95

3.5 Fingerübung I: Testgetriebene Entwicklung

96

3.5.1 Erster Testcode

97

3.5.2 Gültige Eingaben

99

3.5.3 Ungültige Eingaben

102

3.5.4 Tests erfolgreich?

105

3.5.5 Vollständige Testabdeckung?

107

3.6 Interview: Christian Theune

108

4 Nose

111

4.1 Hilfestellung

111

4.2 Konfiguration

112

4.3 Plugins

113

4.3.1 Plugin Beispiel: Test-Laufzeiten ermitteln

113

4.3.2 Plugin Integration in nosetests

122

4.3.3 Nur ein getestetes Plugin ist ein gutes Plugin

124

4.4 Interview: Stefan Hagen

125

5 pytest

127

5.1 Hilfestellung

127

5.2 Konfiguration

130

5.2.1 Markierungen

131

5.2.2 Testvorrichtungen

138

5.3 Testbeispiele

142

5.3.1 Aussagekräftige Fehlermeldungen

144

5.3.2 Ausnahmebehandlung

146

5.3.3 py.test mit unittests

150

5.4 Plugins

151

5.4.1 Plugin Beispiel: Bericht als csv-Datei erzeugen

152

5.4.2 Plugin Integration in py.test

156

5.4.3 Nur ein getestetes Plugin ist ein gutes Plugin

158

5.4.4 Die Benutzung des neuen Plugins

166

5.5 Fingerübung II: sign(x), csign(z)

169

5.5.1 Teilung vor der Erweiterung

170

5.5.2 Signum für komplexe Zahlen

171

5.5.3 Der erste Testfall

173

5.5.4 Ungültige Eingabewerte

174

5.5.5 Doctests mit py.test

176

5.6 Interview: Holger Krekel

178

6 tox

180

6.1 Einstellungen

180

6.2 Ein Beispiel

181

6.3 Ein Testlauf

183

6.4 Interview: Bastian Ballmann

188

7 GUI Tests

191

7.1 PyQt4

191

7.1.1 Beispiel GUI

191

7.1.2 GUI Ansicht

194

7.1.3 GUI Test

194

7.1.4 Testabdeckung

195

7.2 Django: Testgetriebene Webentwicklung

196

7.2.1 Unittests und Funktionale Tests

197

7.2.2 Django Start

200

7.2.3 Django Entwicklungsserver

202

7.2.4 Eine Kurzgeschichte

204

7.2.5 Django Unittests

207

7.2.6 Unittest für eine View

211

7.2.7 View aus der Vorlage

214

7.2.8 Wo bleiben die Daten?

221

7.2.9 ORM und Persistenz

222

7.3 Interview: Guido Günther

229

8 Großes Python-Kino

231

8.1 SaltStack

231

8.1.1 Quellen und Unittests

232

8.1.2 Integrationstests

234

8.1.3 Dokumentation

236

8.2 OpenStack

236

8.2.1 Dokumentation, der Schlüssel zur Wolke

237

8.2.2 Keystone Tests

239

8.3 Interview: Julien Danjou

241

Anhang

245

Abbildungsverzeichnis

245

Literaturhinweise

255

Stichwortverzeichnis

257