19
Testen 1/20 Analytische Qualitätssicheru ng 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 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

Embed Size (px)

Citation preview

Page 1: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

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.

Page 2: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

Testen

Klassifikation der Verfahrender analytischen Qualitätssicherung

Page 3: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

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.

Page 4: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

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.

Page 5: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

Testen 5/20

Kontrollflußgraph

Page 6: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

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.

Page 7: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

Testen 7/20

Vollständige Anweisungsüberdeckung

Page 8: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

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.

Page 9: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

Testen 9/20

Vollständige Zweigüberdeckung

Page 10: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

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.

Page 11: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

Testen 11/20

Minimale Mehrfach-Bedingungsüberdeckung

Page 12: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

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.

Page 13: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

Boundary interior-Pfadtest:interior-Pfade

Page 14: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

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

Page 15: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

Testen 15/20

Kontrollflußgraph in Datenflußdarstellung

Page 16: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

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.

Page 17: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

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

Page 18: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

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.

Page 19: Testen 1/20 Analytische Qualitätssicherung Die analytische Qualitätssicherung ist eine alle Phasen der Software-Entwicklung begleitende Tätigkeit, die

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).