Vortrag: Testen Frank Rogin Warum testet man? Was ist Testen? Wogegen wird getestet? Der Tester Testen im Software-Entwicklungsprozess Korrektheit, Zuverlässigkeit, Fehler Klassifikation analytischer Verfahren Kontrollflussgraph Strukturtests • Zweigüberdeckungstest • Boundary interior-Pfadtest Softwarezuverlässigkeit SS 2000 • • • • • • • • • Gliederung 1 Softwarezuverlässigkeit SS 2000 • • Vortrag: Testen Frank Rogin fehlerfreie Funktionieren von SW-Systemen angewiesen → fehlerhafte SW oder Ausfall von SW kann zu grossem materiellen, finanziellen Schaden führen oder sogar Menschenleben gefährden → Ziel: ein möglichst fehlerfreies Produkt entwerfen kein Produkt ist fehlerfrei, Testen soll Fehler finden Testen versucht Fragen zu klären: Erzeuge ich das richtige Produkt? und Erzeuge ich das Produkt richtig? • in vielen Lebensbereichen der heutigen Gesellschaft auf Warum testet man? 2 Softwarezuverlässigkeit SS 2000 Vortrag: Testen Frank Rogin 3 beinhaltet: • Planung • Durchführung • Dokumentation der Testfällen • Erstellung von Testberichten • Testen ist ein integraler Bestandteil des SoftwareEntwicklungsprozesses • Messen des Grades der Funktionserfüllung (Korrektheit von Schnittstellen und Modulen, Anwenderfreundlichkeit, Flexibilität) • Versuch des Nachweises der Fehlerfreiheit einer SW-Komponente • Testen ist ein komplexer Prozess Was ist Testen? Softwarezuverlässigkeit SS 2000 Aussagen Vortrag: Testen Frank Rogin • Exkurs: Systemrequirements • enthält alle Anforderungen, die Produkt erfüllen muss • Was soll erfüllt werden? und Wie soll es erfüllt werden? • legt offen, wie genau Kunde weiss, was er will • klare, einfache, kurze, eindeutige und ausreichend detaillierte - unverzichtbare Voraussetzungen für systematisches Testen - Maßstab an dem Programm und Programmfunktionen als korrekt oder inkorrekt beurteilt werden • gegen Standards - eingehalten oder nicht eingehalten? • gegen Systemrequirements Wogegen wird getestet? 4 Softwarezuverlässigkeit SS 2000 Vortrag: Testen Frank Rogin vorbereitet ist • muss Fachgebiet kennen, in dem Produkt eingesetzt wird • ausreichende Kenntnisse über Produkt haben • solide Kenntnisse über Testverfahren bzw. Testmethoden • Muss bzw. sollte... • ohne Rücksicht auf Verluste Fehler finden • zielstrebig sein • Höchstmaß an Kreativität besitzen • Person sein, die immer die Fragen stellt, auf die man nicht • Darf nicht... • der Programmierer selbst sein • zu viel Nähe zum Entwicklerteam haben • zu viel Nähe zum Vertrieb haben Der Tester 5 Softwarezuverlässigkeit SS 2000 Vortrag: Testen Frank Rogin integriert sein, um frühzeitige Fehlererkennung zu realisieren • Testen muss Softwareentwicklung begleiten und in Entwicklungsprozess 6 Qualitätsziele zu sichern • Schwerpunkte der Qualitätssicherung: Produktdefinition, Produktentwurf, Produktimplementierung • Testen ist Teil der analytischen Qualitätssicherung • bei konventionellen Vorgehensweise, Testen erst relativ spät am Ende des Entwicklungsprozesses • Qualität von Software durch Testen im SW-Entwicklungsprozess Softwarezuverlässigkeit SS 2000 Verhalten verursacht Vortrag: Testen Frank Rogin 7 • Fehler ist ... • ein Fehlschuss = Ziel verfehlt = Anforderungen nicht erfüllt • jede Abweichung von den Anforderungen des Auftraggebers • jede Inkonsistenz der Implementierung zur Spezifikation • jedes strukturelle Merkmal des Programmtextes, das ein fehlerhaftes auf externe Ereignisse sinnvolle Reaktionen zu liefern und in extremen Situationen definiert zu arbeiten • Zuverlässigkeit und Robustheit: Eigenschaften eines Programmes, Spezifikation und Programm, Grad der Erfüllung der Benutzererwartung (ANSI) • Korrektheit: Fehlerfreiheit, Grad der Konsistenz zwischen Korrektheit, Zuverlässigkeit, Fehler Softwarezuverlässigkeit SS 2000 Vortrag: Testen Frank Rogin • Metriken, Grafiken, Tabellen, Anomalienanalyse • Analysierende Verfahren • Verifizierende Verfahren • Verifikation, Symbolische Ausführung • manuelle Prüfmethoden (Inspektion, Reviews) • statistische Analysatoren • statische Testverfahren • - Kontrollflussorientierter Test - Datenflussorientierter Test Funktionaler Test (Black Box-Test) - Äquivalenzklassenbildung, Grenzwertanalyse, Zufallstest • Strukturtest (White Box-Test) • Testende Verfahren • dynamische Testverfahren Klassifikation analytischer Verfahren 8 cin >> c; vokale++; if ((c == ‚A‘) || (c == ‚E‘) || (c == ‚I‘) || (c == ‚O‘) || (c == ‚U‘)) gesamt++; while((c >= ‚A‘) && (c <= ‚Z‘) && gesamt < INT_MAX)) cin >> c; Softwarezuverlässigkeit SS 2000 n6 n5 n4 n3 n2 n1 Vortrag: Testen Frank Rogin 9 - gerichteter Graph G = (N, E, nstart, nfinal) - N endliche Menge der Knoten - E ⊆ N x N: Menge der gerichteten Kanten - nstart ∈ Startknoten, nfinal ∈ Endknoten • jeder Knoten = ausführbare Anweisung • Zweig: gerichtete Kante von Knoten i zu j, die möglichen Kontrollfluss von i nach j beschreibt • Pfad: abwechselnde Folge von Kanten und Knoten die mit Startknoten beginnt und mit Endknoten endet • Kontrollflussgraph: Kontrollflussgraph gesamt++; n3 cin >> c; n6 Softwarezuverlässigkeit SS 2000 vokale++; n5 if ((c == ‚A‘) || (c == ‚E‘) || (c == ‚I‘) || (c == ‚O‘) || (c == ‚U‘)) while((c >= ‚A‘) && (c <= ‚Z‘) && gesamt < INT_MAX)) n2 n4 cin >> c; n1 Vortrag: Testen Frank Rogin 10 Gesamtanzahl der vorhandenen Zweige • Eigenschaften: - 100% prozentige Zweigüberdeckung stellt sicher, dass alle Zweige laufen wurden - weder Kombination von Zweigen noch komplexe Bedingungen berücksichtigt - Schleifen nicht ausreichend getestet - fehlende Zweige nicht zu entdecken • Beispiel: eingelesene Zeichen: ‘A‘,‘B‘,‘1‘, Pfad (nstart , n1,n2,n3 ,n4 ,n5 ,n6 ,n2 ,n3 ,n4 ,n6 ,n2 ,nfinal) • kontrollflussorientiertes Testverfahren • Ziel: Überdeckung aller Zweige • Metrik: CZweig = # ausgeführter Zweige/ Zweigüberdeckungstest(1) Vortrag: Testen Frank Rogin das minimale Testkriterium nicht ausführbare Programmzweige können gefunden werden Korrektheit des Kontrollflusses an Verzweigungsstellen überprüfbar oft durchlaufene Programmteile erkennbar und gezielt optimierbar Softwarezuverlässigkeit SS 2000 - • Bewertung: - findet 79% Kontrollflussfehler und 20% Berechnungsfehler - Leistungsfähigkeit schwankt zwischen 25% - 75% oder 67% - 100% (Infotech Vol.I 79) - Erfolgsquote höher als bei statischen Analyse (Gannon 79) - gute Leistungsfähigkeit bei Behandlung von logischen Fehlern und Fehlern bei Berechnungen - Erkennung von Datenfehlern fast unmöglich • Leistungsfähigkeit: Zweigüberdeckungstest(2) 11 Softwarezuverlässigkeit SS 2000 Vortrag: Testen Frank Rogin 12 existieren zwei Pfadgruppen: - Grenztest Gruppe (boundary test): alle Pfade, die Schleife betreten, aber nicht wiederholen, alle Pfade ausgeführt, die unterschiedliche Pfade innerhalb des Schleifenkörpers verfolgen - Gruppe zum Test des Schleifeninneren (interior test): alle Pfade mit mindestens einer Schleifenwiederholung., Testfälle verfolgen alle unterschiedlichen Pfade während der ersten beiden Ausführungen des Schleifenkörpers • Eigenschaften: durch mehr als einmalige Schleifenwiederholung erzeugt werden • Ziel: beim Test von Schleifen auf Überprüfung von Pfaden verzichtet, die unterschiedlichen Pfade des zu testenden Programmes • boundary interior-Pfadtest: schwächere Version des Pfadüberdeckungstests • Pfadüberdeckungstest: ausreichender Test von Schleifen → Ausführung aller boundary interior-Pfadtest(1) gesamt++; n3 cin >> c; n6 Softwarezuverlässigkeit SS 2000 vokale++; n5 if ((c == ‚A‘) || (c == ‚E‘) || (c == ‚I‘) || (c == ‚O‘) || (c == ‚U‘)) while((c >= ‚A‘) && (c <= ‚Z‘) && gesamt < INT_MAX)) n2 n4 cin >> c; n1 Vortrag: Testen Frank Rogin 13 - Testfall für Pfad ausserhalb der Schleife: gesamt = INT_MAX - Grenztest: gesamt = 0, c = ‚A‘, ‚1‘, Schleife einmal durchlaufen + THEN Zweig gesamt = 0, c = ‚B‘, ‚1‘ Schleife einmal durchlaufen + nicht THEN Zweig - Testfälle für Schleifenkörper: z.B.: c = ‘E‘,‘I‘,‘N‘,‘*‘ • Beispiel-Testfälle: - gezielte Überprüfung von Schleifen - gegenüber Pfadüberdeckungstest praktikabel • Bewertung: boundary interior-Pfadtest(2)