Agile Modellierung mit
UML
Loading

6 Grundlagen des Testens

Die Durchführung von Tests ist eine wesentlichen Maßnahme zur Softwarequalitätssicherung für alle Teile des Produktionssystems. Das Testen der Implementierung auf Robustheit, Konformität zur Spezifikation, Korrektheit gegenüber den Anforderungen muss daher essentieller Bestandteil jeder qualitätsorientierten Softwareentwicklungsmethode sein. In diesem Kapitel werden die dazu notwendigen Grundlagen geklärt.

6.1 Einführung in die Testproblematik
6.1.1 Testbegriffe
6.1.2 Ziele der Testaktivitäten
6.1.3 Fehlerkategorien
6.1.4 Begriffsbestimmung für Testverfahren
6.1.5 Suche geeigneter Testdaten
6.1.6 Sprachspezifische Fehlerquellen
6.1.7 UML/P als Test- und Implementierungssprache
6.1.8 Eine Notation für die Testfalldefinition
6.2 Definition von Testfällen
6.2.1 Operative Umsetzung eines Testfalls
6.2.2 Vergleich der Testergebnisse
6.2.3 Werkzeug JUnit

Ein System, das den Anwender erfolgreich in seiner Tätigkeit unterstützt, muss möglichst frei von Fehlern sein. Da Softwaresysteme meist eine große Komplexität besitzen, ist davon auszugehen, dass praktisch relevante Systeme nie vollständig fehlerfrei sein werden. Wesentliche Aufgabe der Entwicklung ist es daher, die Fehlerrate und ihre Auswirkungen unter den vorhandenen zeitlichen und personellen Ressourcen so weit wie möglich zu minimieren und die für die Anwendungsdomäne notwendige Qualität zu erreichen. Das Testen des Softwaresystems ist dabei ein wesentliches Hilfsmittel zur Erkennung von Fehlern. Allgemein anerkannt ist, dass der Testaufwand im Durchschnitt ca. 40-50% des Gesamtaufwands der Softwareentwicklung betragen kann [Kru03Mye01].

Tests wurden sowohl in traditionellen als auch agilen Vorgehensweisen als wesentliches Kriterium zur Qualitätssicherung erkannt. Deshalb sind die in diesem Kapitel diskutierten Techniken nicht auf agile Methoden beschränkt, sondern werden in der einen oder anderen Form seit längerem eingesetzt. Durch die intensive Integration der Testentwicklung in die Methodik, dem Wunsch nach möglichst einfacher und effektiver Definition von Tests und dem durchgängigen Einsatz der UML für Test- und Codegenerierung sind aber Anpassungen und Erweiterungen vorhandener Vorgehensweisen zur Testdefinition sinnvoll.

Die große Anzahl verfügbarer Literatur zum Thema Testen allgemein und objektorientierter Systeme insbesondere zeigt, dass es sehr viele unterschiedliche Herangehensweisen und Techniken zur Testentwicklung gibt. Es wäre jenseits der Kapazität dieses Kapitels, das darin entwickelte Wissen zur Entwicklung und zum Management von Tests wiedergeben zu wollen. Stattdessen wird an den jeweils relevanten Stellen auf geeignete weiterführende Literatur verwiesen. Der Inhalt dieses Kapitels richtet sich in der Terminologie weitgehend nach [Bin99], [Mye01], [Bal98] beziehungsweise [Lig90].

Der Inhalt dieses Kapitels ist deshalb keine allgemeine Einführung in Testverfahren und -technologien, sondern nimmt eine kompakte Begriffsbestimmung für Tests und eine Diskussion relevanter technischer Grundlagen vor. Im folgenden Kapitel 7 werden diese Grundlagen dann mit der UML/P umgesetzt.

Für ergänzende Vorgehensweisen zur Testentwicklung kann das pragmatische Buch [LF02] zum Thema „Test-First“, die ausführliche Sammlung an Testtechniken in [Bei04Bei95], das umfassende Buch für objektorientierte Tests [Bin99], [RBGW10] für modellbasierte Tests, und die kompakte Übersicht zur Testtheorie [Bal98] empfohlen werden. In seinen Grundlagen nach wie vor gültig ist [Mye79] (deutsche Fassung [Mye01]). Bücher zum Thema Testen in einzelnen Domänen sind ebenfalls empfehlenswert z.B. für Embedded Systems [Vig10] oder in der Automobilindustrie [Sax08].


Bernhard Rumpe. Agile Modellierung mit UML. Springer 2012