Testphase VIS Projekt Freie Universität Berlin N.Ardet - 17.4.2001 Das Testen Testen ist das Ausführen eines Software- (Teil)systems in einer definierten Umgebung und das Vergleichen der erzielten mit den erwarteten Ergebnisse. (Istdatum vs. Solldatum) Die Solldaten werden von einem Testorakel aus den Anforderungen abgeleitet. 1
Prinzip der unklaren Ziele: Projekte ohne klare Ziele werden ihre Ziele nie klar erreichen! Teststrategie Regeln nach denen Test ausgeführt werden Welche Arten von Phasenergebnisse unbedingt Prüfungen zu unterziehen sind Wie Prüfergebnisse zu dokumentieren sind Hilfsmittel und Werkzeuge 2
Inkrementeller Test Komponententest: Komponenten individuell und unabhängig prüfen. Integrationstest: Schnittstellen der Komponenten prüfen Zusammenspiel der Komponenten überprüfen Systemtest: Prüfen gegen funktionale und nicht funktionale Benutzer-Anforderungen Vorbereitung: Der Testzyklus Testfälle festlegen für jeden Testfall, Testdaten festlegen Testrahmenerstellung Durchführung Auswertung Soll-Ist-Vergleich 3
Regressionstest Tritt ein Fehlverhalten auf, so muß der verursachende Fehler lokalisiert und behoben werden. Nach der Fehlerkorrektur wir der Test erneut ausgeführt und ausgewertet. Test-Aktivitäten Anforderungen Teststrategie Software Sollwertbestimmung Testfall-Ermittlung Testvorbereitung Testdaten -Ermittlung Testrahmen Inspektion Inspektion Testdurchführung Testauswertung Freigabe des Testlings Fehlersuche und Fehlerbehebung 4
Testphase im VIS Projekt (1) Klassentest Spezifikationsorientierter Test (Äquivalenzklassen, Grenzwerte, Spezialfälle) Implementationsorientierter Test (z.b. Pfadüberdeckung) Schichtentest Treiber für DB-Schicht-Test Treiber und Stellvertreter für Logikschicht-Test Stellvertreter für Präsentationsschicht-Test Testphase im VIS Projekt (2) Inkrementeller Integrationstest aufsteigender Test für DB und Log. Schichten: Treiber für Pr.-Schicht notwendig Mängel im unteren Modul (DB) werden frühzeitig entdeckt absteigender Test für Pr. und Log. Schichten: Stellvertreter für DB-Schicht notwendig Mängel im oberen Modul (Pr.) werden frühzeitig erkannt 5
Testphase im VIS Projekt (3) Systemtest: anhand von Testplan, Benutzeranforderungen und Benutzerhandbuch Leistungsmessung Testgegenstand Testprotokoll Durchführender des Tests Testfall und -daten unter Angabe der Auswahlkriterien Testumgebung Solldatum Istdatum 6
Fehlererfassung, -analyse und - behebung Die Fehlererfassung geschieht mit geeigneten Hilfsmittel Aus der Fehleranalyse sollen Entscheidungen abgeleitet werden Für festgestellte Fehler sind Behebung sowie Änderungs- und Freigabedienst einzuleiten Klassifikation von Fehlern Unvollständigkeit (U) Falsche Information (F) Überspezifikation und irrelevante Informationen (R) Inkonsistenzen und Widersprüche (I) sonstige Fehler (S) 7
Voraussetzungen eines erfolgreichen Integrationstests Niedrige Kopplung Hohe Kohäsion Keine (bzw. sparsame) Verwendung von globalen Variablen Keine Zugriffe über mehrere Schichten Werkzeugunterstütztes Testen 8
JUnit (1) Java-Rahmenwerk für Regressionstests Durchführung komplexer Testabläufe möglich Auswahl zwischen grafische und textuelle Benutzungsoberfläche möglich JUnit - Anwendungsbeispiel(2) Tests A und B auf Java-Klasse XY durchführen. Klasse Z von Rahmenwerk-Klasse Testcase ableiten, und jedentestablauf in eine Methode der Klasse Z beschreiben ggf. Initialisierung die vor jedem Test geschehen soll beschreiben (bzw. Aufräumarbeiten) 9
JUnit-Anwendungsbeispiel (3) public class MeinTest extends Testcase { // Attribute... public void setup() { // Initialisierung... } public void teardown() { // Aufräumarbeit... } JUnit-Anwendungsbeispiel(4) // Beschreibung der Testfälle public void testfalla() {... } public void testfallb() {... } 10
JUnit-Anwendungsbeispiel (5) //Beschreibung der Testsuite public static Test suite() { Testsuite suite = new Testsuite(); suite.addtest( new MeinTest ( testfalla ) ); suite.addtest( new MeinTest( testfallb ) ); //... } JUnit/Together JUnit kann in Together integriert werden Erweiterung von JUnit für IDE s: JUnitX Modul für die Einbindung in Together: XPTest 11
Testwerkzeuge im Web JUnit : http://www.junit.org JUnitX: http://www.extreme-java.de/junitx XPTest: http://www.extreme-java.de/xptools Weiterführende Literatur [Tra 93] Trauboth H., Software-Qualitäts- Sicherung, R.Oldenbourg, 1993 [Rie 97] Riedemann E.H., Testmethoden für sequentielle und nebenläufige Software- Systeme, B.G.Teubner, 1997 [VDI 93] VDI-GIS, Software- Zuverlässigkeit, VDI Verlag, 1993 12