Upload
magdalene-aerni
View
104
Download
0
Embed Size (px)
Citation preview
Testen 1/20
Analytische Qualitätssicherung
Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die außer den zur Fehlersuche und -behebung notwendigen Aktivitäten auch die zugehörigen organisatorischen Maßnahmen umfaßt.
Testen
Klassifikation der Verfahrender analytischen Qualitätssicherung
Testen 3/20
Kontrollflußbezogenes Testen
• Anhand der Kontrollstruktur des Prüflings werden Testfälle bestimmt. Testen „gegen sich selbst“.
• Zielt darauf ab, bestimmte Menge von Programmpfaden beim Test zu durchlaufen.
Kontrollfluß bestimmt durch:• Anweisungsfolgen• Selektion• Iteration
Der Kontrollflußgraph eines Programms P ist ein gerichteter Graph G= (N, E, nstart, nfinal) mit:N = Menge der Anweisungen eines Programms,E N x N Menge der gerichteten Kanten; beschreiben statischen Kontrollfluß von einem Knoten ni zu nj ,nstart N Startanweisung,nfinal N Endanweisung.
Testen 4/20
Problembeschreibung: Benötigt wird eine Prozedur, der als Parameter ein Ziffernstring übergeben wird, die den Wert derdadurch definierten (positiven) Zahl errechnet und diesenzurückliefert.
Testen 5/20
Kontrollflußgraph
Testen 6/20
Anweisungsüberdeckung(C0-Test)
• Ziel: Alle Anweisungen des Programms mindestens einmal auszuführen, d.h. alle Knoten des Kontrollflußgraphen mindestens einmal besuchen.
• Anweisungsüberdeckungsgrad :=
Anzahl der besuchten Knoten
Anzahl aller Knoten
• Vollständige Anweisungsüberdeckung Anweisungsüberdeckungsgrad=1.
• Gefunden werden nicht-ausführbare Programmteile.• Empirisch belegt: Bei Überdeckungsgrad von 100%
weniger als 20% der Programmfehler gefunden.
Testen 7/20
Vollständige Anweisungsüberdeckung
Testen 8/20
Zweigüberdeckung(C1-Test)
• Ziel: Alle Pfade des Programms mindestens einmal auszuführen, d.h. alle Kanten des Kontrollflußgraphen mindestens einmal besuchen.
• Zweigüberdeckungsgrad :=
Anzahl der besuchten Zweige
Anzahl aller Zweige
• Vollständige Zweigüberdeckung Zweigüberdeckungsgrad=1.
• Vollständige Zweigüberdeckung impliziert vollständige Anweisungsüberdeckung.
• Gefunden werden nicht-ausführbare Programmzweige.
• Empirisch belegt: Bei Überdeckungsgrad von 100% durchschnittlich 25% der Programmfehler gefunden.
Testen 9/20
Vollständige Zweigüberdeckung
Testen 10/20
Bedingungsüberdeckung• Zweigüberdeckung ignoriert Struktur einer
Bedingung: Atomare Zusammengesetzte Prädikate. Deren Berücksichtigung führt zu Bedingungsüberdeckungstests
• Minimale Bedingungsüberdeckung (C2-Test):Alle atomaren Prädikate müssen einmal zu TRUE und einmal zu FALSE ausgewertet werden.
• Mehrfach-Bedingungsüberdeckung (C3-Test):Alle atomaren Prädikate müssen zu allen Werte-kombinationen ausgewertet werden.
• Minimale Mehrfach-Bedingungsüberdeckung:Kompromiß zwischen minimaler Bedingungsüber-deckung und Mehrfach-Bedingungsüberdeckung:Jedes Prädikat, ob atomar oder nicht atomar, wird einmal zu TRUE und einmal zu FALSE ausgewertet.Berücksichtigung der hierarchischen Struktur von Bedingungen.
Testen 11/20
Minimale Mehrfach-Bedingungsüberdeckung
Testen 12/20
Vollständige Pfadüberdeckung(C4-Test)
• Analyse aller möglichen Pfade des Programms, d.h. aller Kantenfolgen, die mit dem Startknoten des Kontrollflußgraphen beginnen und dem Knoten nfinal enden.
Boundary interior-Pfadtest• Gezieltes Testen von Schleifen
• Für jede Schleife zwei Klassen von Testfällen: Boundary-Test: Alle Pfade, die den Schleifenrumpf
genau einmal durchlaufen. Interior-Test: Alle Pfade, die genau eine Schleifen-
wiederholung enthalten.
• Außerhalb von Schleifen werden alle Pfade unter- sucht.
Umfaßt Zweigüberdeckungstest, Effektivität liegt aber um 100% darüber.
Boundary interior-Pfadtest:interior-Pfade
Testen 14/20
Datenflußbezogene Testverfahren
• Neben Kontrollflußfehlern auch Datenfehler möglich wie z.B. Variablenbenutzung vor Initialisierung, nicht benutzte aber definierte Variablen ...
• Datenflußorientierte Testverfahren verwenden die Zugriffe auf Variablen zur Erzeugung von Testfällen
• Drei Zugriffe werden unterschieden:- zur Definition einer Variablen (def)- zur Werteberechnung (computational-use , c-use)- zur Prädikatsauswertung (predicate-use, p-use)
• Datenflußdarstellung eines Kontrollflußgraphen entsteht durch Ergänzen der def-, c-use und p-use-Informationen: def- und c-uses an Knoten p-uses an alle von Knoten ausgehenden Kanten
Testen 15/20
Kontrollflußgraph in Datenflußdarstellung
Testen 16/20
Test nach dem all uses-Kriterium
Das all uses-Kriterium fordert für jede Definition einer Variablen den vollständigen Test der von ihr erreichbaren prädikativen und berechnenden Variablenzugriffe.
Wird in einem Knoten ni des Kontrollflußgraphen eine Variable v definiert, so ist die Mengedu (v, ni) definiert als:
du (v, ni) enthält alle Knoten nk für die gilt:• v c-use(nk) oder v p-use( (nl, nk) ),• nk ist ohne Neudefinition von v per Pfad erreichbar.
Ein dynamischer Test nach dem all uses-Kriterium bedeutet, daß für jeden Knoten ni und jeder darin definierten Variable mindestens ein definitionsfreier Pfad von ni zu allen Elementen in du(v, ni) ausgeführt wird.
Umfaßt Zweigüberdeckungstest.
Testen 17/20
Funktionale Verfahren
• Strukturorientierte Verfahren betrachten nicht die Spezifikation.• Hier: Programm als black-box: Überprüfung der in der Spezifikation festgelegten Funktionalität.
Zwei Stufen:1) Definitionsbereiche der Eingaben bzw. die Werte- bereiche der Ausgaben in Äquivalenzklassen zer- legen. 2) Aus jeder Äquivalenzklasse nach bestimmter Strategie Testfälle auswählen.
Äquivalenzklassenbildung:• Jede Klasse repräsentiert eine spezifizierte Teil- funktionalität.• Alle Werte einer Äquivalenzklasse verursachen identisches, funktionales Verhalten.
Testdatenselektion:• Zufallstest• Grenzwertanalyse
Testen 18/20
Diversifizierende Verfahren
Test verschiedener Programmversionen gegeneinander.
• Mutationentest: In Ursprungsprogramm typische, einfache Fehler einbauen Mutanten. Für jeden Mutanten Testfälle bestimmen, die eine Unterscheidung vom Original erlauben.
• Back to Back-Test: Verschiedene Versionen werden unabhängig voneinander aus der Spezifikation gewonnen identische Funktionalität.
Testen 19/20
Statische Verfahren• A review is a process or meeting during which a
work product, or a set of work products, is presented to project personnel, managers, users, customers, or other interested parties for comment or approval. (IEEE, 1990)
Als spezielle Reviews werden unterschieden:
• A walkthrough is a static analysis technique in which a designer or programmer leads members of the development team and other interested parties through a segment of documentation or code, and the participants ask questions and make comments about possible errors, violation of development standards, and other problems. (IEEE, 1990)
• An inspection is a static analysis technique that relies on visual examination of development products to detect errors, violations of developing standards, and other problems. (IEEE, 1990)
• An audit is an independent examination of a work product or set of work products to assess compliance with specifications, standards, contractual agreements, or other criteria.
(IEEE, 1990).