ebook img

Qualitätssicherung durch Softwaretests: Vorgehensweisen und Werkzeuge zum Testen von Java-Programmen PDF

416 Pages·2019·14.015 MB·German
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Qualitätssicherung durch Softwaretests: Vorgehensweisen und Werkzeuge zum Testen von Java-Programmen

Stephan Kleuker Qualitätssicherung durch Softwaretests Vorgehensweisen und Werkzeuge zum Testen von Java-Programmen 2. Auflage Qualitätssicherung durch Softwaretests Stephan Kleuker Qualitätssicherung durch Softwaretests Vorgehensweisen und Werkzeuge zum Testen von Java-Programmen 2., Erweiterte und aktualisierte Auflage Prof. Dr. Stephan Kleuker Fak. Ingenieurwiss. und Informatik Hochschule Osnabrück Osnabrück, Deutschland Ergänzendes Material zu diesem Buch finden Sie auf http://extras.springer.com ISBN 978-3-658-24885-7 ISBN 978-3-658-24886-4 (eBook) https://doi.org/10.1007/978-3-658-24886-4 Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. Springer Vieweg © Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2013, 2019 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung, die nicht ausdrücklich vom Urheberrechtsgesetz zugelassen ist, bedarf der vorherigen Zustimmung des Verlags. Das gilt insbesondere für Vervielfältigungen, Bearbeitungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verar- beitung in elektronischen Systemen. Die Wiedergabe von allgemein beschreibenden Bezeichnungen, Marken, Unternehmensnamen etc. in diesem Werk bedeutet nicht, dass diese frei durch jedermann benutzt werden dürfen. Die Berechtigung zur Benutzung unterliegt, auch ohne gesonderten Hinweis hierzu, den Regeln des Markenrechts. Die Rechte des jeweiligen Zeicheninhabers sind zu beachten. Der Verlag, die Autoren und die Herausgeber gehen davon aus, dass die Angaben und Informationen in diesem Werk zum Zeitpunkt der Veröffentlichung vollständig und korrekt sind. Weder der Verlag, noch die Autoren oder die Herausgeber übernehmen, ausdrücklich oder implizit, Gewähr für den Inhalt des Werkes, etwaige Fehler oder Äußerungen. Der Verlag bleibt im Hinblick auf geografische Zuordnungen und Gebietsbezeichnungen in veröf- fentlichten Karten und Institutionsadressen neutral. Springer Vieweg ist ein Imprint der eingetragenen Gesellschaft Springer Fachmedien Wiesbaden GmbH und ist ein Teil von Springer Nature. Die Anschrift der Gesellschaft ist: Abraham-Lincoln-Str. 46, 65189 Wiesbaden, Germany Vorwort Das Ziel dieses Buches ist es, den Spaß an der systematischen Qualitätssicherung (QS), hier mit dem Schwerpunkt Testen in Java, zu vermitteln. Durch die kontinuierlich stei- gende Anzahl von Werkzeugen wird das Testen zu einer spannenden Herausforderung. Ziel ist es dabei, mit möglichst wenig Mitteln, eine größtmögliche Anzahl von für das untersuchte Software-Produkt relevanten Fehlern zu finden. Die monotone Arbeit von Testbeschreibungen wird durch den kreativen Prozess der Testerstellung und die Umset- zung mit flexiblen Werkzeugen zur Automatisierung der Tests ersetzt. Durch die Motiva- tion und systematische Einführung verschiedener für das Testen elementarer Ansätze an- hand von kleinen Beispielen wird so der Einstieg in das Thema QS ermöglicht. Durch die Vorstellung passender Beispielwerkzeuge mit einfach zu wiederholenden Experimenten, kann man selbst unmittelbar aktiv werden. Das Buch wendet sich zunächst an Personen mit Java-Programmiererfahrung, die über- legen, wie sie ihre Software systematisch testen können. Dazu werden in den ersten Kapi- teln des Buches nach einem Überblick grundlegende Begriffe des Testens, genauer die Erstellung von Testfällen mit Äquivalenzklassen und der Grenzwertanalyse, die Bewer- tung des mit Testfällen Erreichten mit Überdeckungen und der systematische Aufbau einer Testarchitektur, erklärt. Alle Begriffe werden an konkreten kurzen Beispielen erläutert, die mit vorgestellten Werkzeugen analysiert werden. Die weiteren Kapitel dieses Buches beschäftigen sich mit typischen Spezialthemen des Testens und umfassen die Tests von Nutzungsoberflächen, Datenbanknutzungen und Web-Applikationen. Die Grundlagen werden mit Hilfe eines oder mehrerer Werkzeuge vorgestellt, für die es jeweils eine kurze Einführung gibt. Die ersten beiden Kapitel beinhalten einen Überblick über das weite Feld der Qualitäts- sicherung und machen auch deutlich, welche Themengebiete nicht im Detail behandelt werden. Dies umfasst unter anderem die Organisation der Qualitätssicherung als Teilpro- zess der Software-Entwicklung. Solche Prozessideen und Begriffspräzisierungen werden u. a. in Schulungen vermittelt, die mit einem ISTQB- Zertifikat (International Software Testing Qualifications Board) abschließen. Dieses Buch hat nicht unmittelbar die Zertifi- zierung im Fokus, kann aber sehr gut als Grundlage für diverse Ideen genutzt werden, die V VI Vorwort in ersten Zertifizierungskursen nur angerissen werden können. Eine Nutzung des Buches, ohne die sicherlich sinnvolle ISTQB-Zertifizierung im Hinterkopf, ist natürlich auch mög- lich. Ein wichtiger Schwerpunkt des Buches beschäftigt sich mit der Wiederverwendbarkeit und Erweiterbarkeit von Tests. Dazu wird der Begriff der Testarchitektur eingeführt, der ähnlich zur Software-Architektur die systematische Entwicklung unterstützen kann. Ziel ist es, Tests so zu strukturieren, dass Änderungen der zu testenden Software leicht in Än- derungen der Tests übertragen werden können. Dazu werden häufig Möglichkeiten von Spezialwerkzeugen und Frameworks so gekapselt, dass sie auch von Testern ohne Spezial- wissen genutzt werden können. Alle Arbeitsschritte werden durch interessante, frei nutzbare Werkzeuge unterstützt, die jeweils exemplarisch in diesem Buch vorgestellt werden. Dabei werden grundlegende Informationen zur Installation und Nutzung so ergänzt, dass Leser ohne weitere Doku- mentation die Beispiele nachvollziehen können. Da die meisten gezeigten Werkzeuge sehr viel mehr Möglichkeiten bieten, als in diesem Buch in einer kurzen Einführung gezeigt werden kann, ist es die Hoffnung, dass die ersten Experimente den Leser neugierig auf die weiteren Möglichkeiten machen, die man sich mit den zugehörigen Dokumentationen selbst erarbeitet. Für die zum Test von Datenbank-Tabellenstrukturen, Webservices, Web-Applikationen und zum Lasttest eingesetzten Werkzeuge sei angemerkt, dass mit ihnen auch Software getestet werden kann, die nicht in Java geschrieben wurde. Die dort vorgestellten Kon- zepte und Umsetzungen mit Werkzeugen können damit auf eine große Anzahl von Projek- ten übertragen werden. Die Abbildungen und Programme dieses Buches sowie weitere Information können von der Web-Seite http://home.edvsz.hs-osnabrueck.de/skleuker/Testbuch.html oder den Informationsseiten des Verlages zum Buch herunter geladen und unter Be- rücksichtigung des Copyrights und der jeweiligen Lizenz genutzt werden. In diesem Buch benutze ich verkürzend, ohne Hintergedanken, bei der Einzahl wie Leser oder Entwickler die männliche Form. Natürlich möchte ich mit diesem Buch auch die weiblichen Leser Leserinnen ansprechen. Zum Abschluss wünsche ich Ihnen viel Spaß beim Lesen. Konstruktive Kritik wird im- mer angenommen. Bedenken Sie, dass das Lesen nur ein Teil des Lernens ist. Ähnlich wie in diesem Buch kleine Beispiele eingestreut sind, um einzelne Details zu klären, sollten Sie sich mit den hier vorgestellten Ideen hinsetzen und meine, aber vor allem selbst konstruierte Beispiele durchspielen. Sie runden das Verständnis des Themas wesentlich ab. Osnabrück, August 2012 Stephan Kleuker Vorwort zur zweiten Auflage Die erste Auflage des Buches hat sich bei Lesern und Veranstaltungsteilnehmern bewährt. Der Wunsch, Interesse an den Möglichkeiten der Testwerkzeuge zu wecken, wird erfüllt. Natürlich gibt es neue Entwicklungen und Erweiterungen existierender Werkzeuge, die eine überarbeitete Neuauflage sinnvoll machen. Dabei bleiben die generellen Konzepte, wie die Betonung einer modularen Testarchitektur, die flexibel auf Veränderungen reagie- ren kann, bestehen. Eine wesentliche Erweiterung findet durch JUnit 5 statt, das die Möglichkeiten von JUnit 4 z. B. durch die Nutzung von Lambda-Ausdrücken und wesentlich flexiblere para- metrisierte Tests erweitert. Dabei wird zunächst JUnit 4 betrachtet, da es noch einige Zeit der Standard in großen Projekten bleiben wird und es keine funktionale Notwendigkeit zum Wechseln gibt. Weiterhin wirkt JUnit 5 noch nicht ganz ausgereift. Ursache hierfür sind späte Änderungen sowie die Ergänzung von Funktionalität, die nur selten benötigt wird, da sie von anderen Werkzeugen der Prozesskette übernommen werden kann. Das Kapitel zu JUnit 5 gibt weiterhin die Möglichkeit die elementaren Begriffe des Testens, die jeder Software-Entwickler kennen muss und die in den vorhergehenden Kapiteln be- handelt werden, auf Basis der neuen Technologie zusammenzufassen. In einem weiteren neuen Kapitel wird Behaviour Driven Development als ein in der Praxis eingesetztes interessantes Vorgehensmodell vorgestellt, bei dem die Spezifikation der zu erstellenden Software in Form von ausführbaren Abnahmetests formuliert wird. Dabei werden diese Tests von Fachleuten des Anwendungsgebiets der neuen Software ge- schrieben. Dieses sehr interessante Konzept ist auch für Qualitätssicherer mit anderen Vorgehensmodellen spannend, da einige der Ideen und der Werkzeuge leicht in die klassi- sche Qualitätssicherung zu übernehmen sind. Abschließend sei der Wunsch verstärkt: Experimentieren Sie, verbessern Sie Ihre ei- gene Qualitätssicherung und geben Sie Feedback zu diesem Buch. Osnabrück, Oktober 2018 Stephan Kleuker VII Danksagung Ein Buch kann nicht von einer Person alleine verwirklicht werden. Zu einer gelungenen Entstehung tragen viele Personen in unterschiedlichen Rollen bei, denen ich hier danken möchte. Mein erster Dank geht an meine Ehefrau Frau Dr. Cheryl Kleuker, die nicht nur die erste Kontrolle der Inhalte und Texte vorgenommen hat, sondern mir erlaubte, einen Teil der ohnehin zu geringen Zeit für die Familie in dieses Buchprojekt zu stecken. Dank gilt meinem Kollegen Prof. Dr. Frank Thiesing von der Hochschule Osnabrück, der sich Teile einer Vorversion dieses Buches kritisch durchgelesen hat und interessante Anregungen lieferte. Viele Studierende, die Veranstaltungen zum Thema Software- Entwicklung und Qualitätssicherung bei mir gehört haben, trugen durch ihre Fragen und Probleme wesentlich zu der Herangehensweise an die Themen des Buches bei. Besonders möchte ich den Studierenden danken, die mich in Forschungsprojekten und Hausarbeiten bei der Evaluation von Werkzeugen unterstützt haben, dies sind: Steffen Blome, Alexan- der Busse, Engin Cetinkaya, Julia Dreier, Max Felinger, Martin Filusch, Alexander Frase, Adrian Gehrke, Stefan Gommer, Andre Heidt, Dan Helmvoigt, André Himmighofen, Ju- lian Horn, Bernd Kleine-Börger, Daniel Knott, Walter Laurito, Klaus Lipka, Andreas Lind, Philipp Lulay, Peter Mentz, Tobias Müller, Katharina Rakebrand, Saskia Rensing- hoff, Marco Schaarschmidt, Alexander Schunk, David Sondermann, Jonas Tenberg, Mar- cel Teuber, Henry Trobisch, Daniel Wegener, Maxim Wiens, Torsten Windoffer, Sergej Wilzer, Jens Wuttke. Abschließend sei den Mitarbeitern des Verlags Springer Vieweg für die konstruktive Mitarbeit gedankt, die dieses Buchprojekt erst ermöglichten. IX Inhaltsverzeichnis 1 E inleitung ...................................................... 1 1.1 Wichtige QS-Dinge, die in diesem Buch stehen . . . . . . . . . . . . . . . . . . . . . 2 1.2 Wichtige QS-Dinge, die (fast) nicht in diesem Buch stehen . . . . . . . . . . . . 4 1.3 QS in kleinen und mittleren Unternehmen . . . . . . . . . . . . . . . . . . . . . . . . . 7 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2 Grundbegriffe der Qualitätssicherung ............................... 11 2.1 E lementare QS-Werkzeuge der Entwicklung . . . . . . . . . . . . . . . . . . . . . . . 12 2.2 Konstruktive und analytische Qualitätssicherung . . . . . . . . . . . . . . . . . . . . 19 2.3 Was ist ein Testfall? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.4 Testebenen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.5 Testautomatisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.6 Zentrales Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3 JUnit .......................................................... 47 3.1 Einfache Tests in JUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.2 Aufbau von Test-Fixtures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.3 T esten von Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.4 Verwaltung von Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.5 Fortgeschrittene Testerstellungskonzepte . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.6 Testen von privaten Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 3.7 Erweiterungen von JUnit 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.8 Weitere Unit-Testwerkzeuge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 3.9 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4 Testfallerstellung mit Äquivalenzklassen ............................. 81 4.1 Testarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.2 Äquivalenzklassenanalyse und Grenzwertbetrachtungen . . . . . . . . . . . . . . 83 4.3 Analyse abhängiger Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 4.4 Äquivalenzklassen und Objektorientierung . . . . . . . . . . . . . . . . . . . . . . . . . 91 XI XII Inhaltsverzeichnis 4.5 A nalyse der Fallstudie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.6 Testfallermittlung für nicht-funktionale Anforderungen . . . . . . . . . . . . . . . 97 4.7 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5 Überdeckungsmaße .............................................. 105 5.1 Kontrollflussgraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.2 Anweisungsüberdeckung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 5.3 Zweigüberdeckung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 5.4 Einfache Bedingungsüberdeckung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 5.5 Minimale Mehrfachüberdeckung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 5.6 Datenflussorientierte Überdeckungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.7 W erkzeugunterstützung von Überdeckungen . . . . . . . . . . . . . . . . . . . . . . . 127 5.8 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 6 Testarchitektur und Mocking ...................................... 133 6.1 Wann was wie testen? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 6.2 Manuelle Mock-Erstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 6.3 Mock-Werkzeuge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 6.4 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 7 Technologien von Testwerkzeugen am Beispiel von JUnit 5 .............. 155 7.1 Annotationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 7.2 Reflection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.3 Lambda-Ausdrücke in Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 7.4 Überblick JUnit 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 7.5 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 8 Behaviour-Driven Development .................................... 185 8.1 Einschub: Erinnerung an reguläre Ausdrücke in Java . . . . . . . . . . . . . . . . . 185 8.2 Test-Driven Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 8.3 Genereller Ansatz von BDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 8.4 Weitere Möglichkeiten mit Cucumber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 8.5 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 9 Test von Nutzungsoberflächen ...................................... 215 9.1 GUI-Steuerung durch Testsoftware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 9.2 Kombination von Entwicklung und Testentwicklung . . . . . . . . . . . . . . . . . 230 9.3 C apture & Replay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.