Gliederung

Werbung
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)
Herunterladen