E-Book, Deutsch, 254 Seiten
Reihe: Xpert.press
Hubertz Softwaretests mit Python
1. Auflage 2016
ISBN: 978-3-662-48603-0
Verlag: Springer
Format: PDF
Kopierschutz: 1 - PDF Watermark
E-Book, Deutsch, 254 Seiten
Reihe: Xpert.press
ISBN: 978-3-662-48603-0
Verlag: Springer
Format: PDF
Kopierschutz: 1 - PDF Watermark
Der Autor erläutert, wie Qualität Vertrauen in die Schutzmaßnahmen schafft: Neu entwickelte Software kann durch Test-Driven Development kontinuierlich auf die Einhaltung der Anforderungen überprüft werden, diese sind dank explizit formulierter Tests stets nachvollziehbar. Software zuverlässig zu machen, ist das Ziel von Softwaretests. Qualitätssicherung kann durch Testen mit verschiedenen Werkzeugen, die durch Python bereitgestellt werden, bei der Software-Entwicklung Risiken vermeiden. Nur gut getestete Software kann verlässlich die ständig vorhandene Anforderung nach Vertraulichkeit, Verfügbarkeit und Datenintegrität sicherstellen.
Johannes Hubertz, geboren 1954 in Köln, studierte in Aachen Elektrotechnik. Danach arbeitete er bei einem großen europäischen Computerhersteller zunächst in der Hardwarereparatur, ab 1984 in der Softwareentwicklung mit Assembler, PLM und C an Sonderprodukten im Kundenauftrag. Ab 1996 verlagerte sich der Schwerpunkt auf den Betrieb von Kundenservern am Internet, stets im Zusammenhang mit Hochverfügbarkeit, Internetsicherheit, Anwendung der Kryptographie, Firewalls und VPNs. Seit 2005 ist er selbständig im Internet und Kundennetzen in Sachen Informationssicherheit und Datenschutz unterwegs. Seit 2007 ist er von Python begeistert, besonders vom gut lesbaren Quellcode unter dem Leitsatz: Readability counts. Softwaretests dienen der Zuverlässigkeit von Produkten, Python stellt gut handhabbare Werkzeuge dazu bereit. Für ihn schließt sich damit der Kreis zum Thema Informationssicherheit: Nur gut getestete Software kann verlässlich die ständig vorhandene Anforderung nach Vertraulichkeit, Verfügbarkeit und Datenintegrität sicherstellen, Qualität schafft Vertrauen in die Schutzmaßnahmen.
Autoren/Hrsg.
Weitere Infos & Material
1;Vorwort;6
2;Inhalt;7
3;1 Einleitung;11
3.1;1.1 Die Softwarekrise;13
3.2;1.2 Motivation für Softwaretests;15
3.2.1;1.2.1 Vor- und Nachteile;16
3.2.2;1.2.2 Varianten in der Namensgebung für Tests;17
3.2.3;1.2.3 Methodik: Wie kommen die Tests zustande?;19
3.2.4;1.2.4 Mathematik;20
3.3;1.3 Python;23
3.3.1;1.3.1 Schreibstil;24
3.3.2;1.3.2 Verzeichnisstruktur;26
3.3.3;1.3.3 Versionierung;27
3.3.4;1.3.4 Versionskontrollsysteme;28
3.3.5;1.3.5 Klinisch reine Umgebung;29
3.3.6;1.3.6 Dokumentation;30
3.3.7;1.3.7 Projektschnellstart;35
3.4;1.4 Interview: Dr. Mike Müller;36
4;2 Doctest;41
4.1;2.1 Definition: Docstring;41
4.2;2.2 Einfaches Beispiel;42
4.3;2.3 Der Interpreter;43
4.4;2.4 Eine Python-Datei;44
4.5;2.5 Dokumentierte Python-Datei;47
4.6;2.6 Tricks und Kniffe;52
4.6.1;2.6.1 Leerzeichen verbessern die Lesbarkeit;52
4.6.2;2.6.2 Variable Ergebnisse;53
4.6.3;2.6.3 Eine leere Zeile;54
4.6.4;2.6.4 Ausnahmebehandlung;56
4.6.5;2.6.5 Ausnahmebehandlung mit Details;58
4.6.6;2.6.6 Direkter Aufruf;59
4.6.7;2.6.7 Einen Test auslassen;61
4.7;2.7 Automatische Dokumentation;61
4.8;2.8 Interview: Dr. Stefan Schwarzer;62
5;3 Unittests machen Freude;67
5.1;3.1 Begriffe;68
5.1.1;3.1.1 Testfall;68
5.1.2;3.1.2 Testvorrichtung, test fixture;69
5.1.3;3.1.3 Testgruppe;70
5.1.4;3.1.4 Teststarter;70
5.1.5;3.1.5 Teststarter im Python-Modul;71
5.2;3.2 unittest Modul auf der Kommandozeile;72
5.2.1;3.2.1 Optionale Argumente;72
5.2.2;3.2.2 unittest in der Kommandozeile;73
5.2.3;3.2.3 Ablaufvereinfachung mit nosetests;73
5.2.4;3.2.4 Akzeptanz erwünscht;75
5.2.5;3.2.5 Fallunterscheidung;77
5.2.6;3.2.6 Ausnahmebehandlung;79
5.2.7;3.2.7 Vergleichsmöglichkeiten im Testfall;83
5.2.8;3.2.8 Assertions;83
5.2.9;3.2.9 Tests auslassen;85
5.3;3.3 Erweiterungen;87
5.3.1;3.3.1 Fixtures;87
5.3.2;3.3.2 Testabdeckung;88
5.3.3;3.3.3 Testabdeckung als HTML-Ausgabe;90
5.4;3.4 Vortäuschen falscher Tatsachen;92
5.4.1;3.4.1 Mock als Dekorator;92
5.4.2;3.4.2 Mock im Zusammenhang mit Kontextmanagern;92
5.4.3;3.4.3 Mock und die Nutzung im Testfall;94
5.4.4;3.4.4 Lern- und Spielwiese;95
5.5;3.5 Fingerübung I: Testgetriebene Entwicklung;96
5.5.1;3.5.1 Erster Testcode;97
5.5.2;3.5.2 Gültige Eingaben;99
5.5.3;3.5.3 Ungültige Eingaben;102
5.5.4;3.5.4 Tests erfolgreich?;105
5.5.5;3.5.5 Vollständige Testabdeckung?;107
5.6;3.6 Interview: Christian Theune;108
6;4 Nose;111
6.1;4.1 Hilfestellung;111
6.2;4.2 Konfiguration;112
6.3;4.3 Plugins;113
6.3.1;4.3.1 Plugin Beispiel: Test-Laufzeiten ermitteln;113
6.3.2;4.3.2 Plugin Integration in nosetests;122
6.3.3;4.3.3 Nur ein getestetes Plugin ist ein gutes Plugin;124
6.4;4.4 Interview: Stefan Hagen;125
7;5 pytest;127
7.1;5.1 Hilfestellung;127
7.2;5.2 Konfiguration;130
7.2.1;5.2.1 Markierungen;131
7.2.2;5.2.2 Testvorrichtungen;138
7.3;5.3 Testbeispiele;142
7.3.1;5.3.1 Aussagekräftige Fehlermeldungen;144
7.3.2;5.3.2 Ausnahmebehandlung;146
7.3.3;5.3.3 py.test mit unittests;150
7.4;5.4 Plugins;151
7.4.1;5.4.1 Plugin Beispiel: Bericht als csv-Datei erzeugen;152
7.4.2;5.4.2 Plugin Integration in py.test;156
7.4.3;5.4.3 Nur ein getestetes Plugin ist ein gutes Plugin;158
7.4.4;5.4.4 Die Benutzung des neuen Plugins;166
7.5;5.5 Fingerübung II: sign(x), csign(z);169
7.5.1;5.5.1 Teilung vor der Erweiterung;170
7.5.2;5.5.2 Signum für komplexe Zahlen;171
7.5.3;5.5.3 Der erste Testfall;173
7.5.4;5.5.4 Ungültige Eingabewerte;174
7.5.5;5.5.5 Doctests mit py.test;176
7.6;5.6 Interview: Holger Krekel;178
8;6 tox;180
8.1;6.1 Einstellungen;180
8.2;6.2 Ein Beispiel;181
8.3;6.3 Ein Testlauf;183
8.4;6.4 Interview: Bastian Ballmann;188
9;7 GUI Tests;191
9.1;7.1 PyQt4;191
9.1.1;7.1.1 Beispiel GUI;191
9.1.2;7.1.2 GUI Ansicht;194
9.1.3;7.1.3 GUI Test;194
9.1.4;7.1.4 Testabdeckung;195
9.2;7.2 Django: Testgetriebene Webentwicklung;196
9.2.1;7.2.1 Unittests und Funktionale Tests;197
9.2.2;7.2.2 Django Start;200
9.2.3;7.2.3 Django Entwicklungsserver;202
9.2.4;7.2.4 Eine Kurzgeschichte;204
9.2.5;7.2.5 Django Unittests;207
9.2.6;7.2.6 Unittest für eine View;211
9.2.7;7.2.7 View aus der Vorlage;214
9.2.8;7.2.8 Wo bleiben die Daten?;221
9.2.9;7.2.9 ORM und Persistenz;222
9.3;7.3 Interview: Guido Günther;229
10;8 Großes Python-Kino;231
10.1;8.1 SaltStack;231
10.1.1;8.1.1 Quellen und Unittests;232
10.1.2;8.1.2 Integrationstests;234
10.1.3;8.1.3 Dokumentation;236
10.2;8.2 OpenStack;236
10.2.1;8.2.1 Dokumentation, der Schlüssel zur Wolke;237
10.2.2;8.2.2 Keystone Tests;239
10.3;8.3 Interview: Julien Danjou;241
11;Anhang;245
12;Abbildungsverzeichnis;245
13;Literaturhinweise;255
14;Stichwortverzeichnis;257




