Whitebox-Tests: Allgemeines



Ähnliche Dokumente
Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Erwin Grüner

Internet Explorer Version 6

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Testen mit JUnit. Motivation

15.3 Bedingte Wahrscheinlichkeit und Unabhängigkeit

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Glaube an die Existenz von Regeln für Vergleiche und Kenntnis der Regeln

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version:

SJ OFFICE - Update 3.0

GRS SIGNUM Product-Lifecycle-Management

1 topologisches Sortieren

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Programmiersprachen und Übersetzer

Windows 10. Vortrag am Fleckenherbst Bürgertreff Neuhausen.

Erfahrungen mit Hartz IV- Empfängern

Kurzeinstieg in VR-Ident personal

Statuten in leichter Sprache

Professionelle Seminare im Bereich MS-Office

Tagesprogramm

Häufig wiederkehrende Fragen zur mündlichen Ergänzungsprüfung im Einzelnen:

HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN

Updatehinweise für die Version forma 5.5.5

Was meinen die Leute eigentlich mit: Grexit?

Das Schulsystem in Deutschland (Band 2, Lektion 1)

Übungen Programmieren 1 Felix Rohrer. Übungen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

9 Auto. Rund um das Auto. Welche Wörter zum Thema Auto kennst du? Welches Wort passt? Lies die Definitionen und ordne zu.

Test: Sind Sie ein Unternehmertyp?

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Das neue Reisekostenrecht 2014

BSV Ludwigsburg Erstellung einer neuen Internetseite

Text-Zahlen-Formatieren

Kapiteltests zum Leitprogramm Binäre Suchbäume

SEP 114. Design by Contract

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Sie haben das Recht, binnen vierzehn Tagen ohne Angabe von Gründen diesen Vertrag zu widerrufen.

3D-Konstruktion Brückenpfeiler für WinTrack (H0)

Microsoft Update Windows Update

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

Teil 1: IT- und Medientechnik

Anleitung über den Umgang mit Schildern

Vorlesung Dokumentation und Datenbanken Klausur

Stapelverarbeitung Teil 1

Reporting Services und SharePoint 2010 Teil 1

Softwarequalitätssicherung

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Kurzeinführung Moodle

Test-Strategien. Grundsätzliches Blackbox-Testen Whitebox-Testen Graybox-Testen Ablauf von Tests Zusammenfassung. HS Mannheim

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Einen Wiederherstellungspunktes erstellen & Rechner mit Hilfe eines Wiederherstellungspunktes zu einem früheren Zeitpunkt wieder herstellen

Wir machen neue Politik für Baden-Württemberg

Studieren- Erklärungen und Tipps

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Eine Einführung in die Installation und Nutzung von cygwin

Mediator 9 - Lernprogramm

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

Einstellungen für SEPA-Lastschriften in der VR-NetWorld-Software

Die Post hat eine Umfrage gemacht

I. Travel Master CRM Installieren

Säuglingsanfangsnahrung und Folgenahrung Was ändert sich? Was bleibt?

Gussnummern-Lesesystem

Übungen für Woche 10

Meinungen zur Altersvorsorge

Java: Vererbung. Teil 3: super()

Senioren helfen Junioren

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Widerrufsbelehrung der Free-Linked GmbH. Stand: Juni 2014

Weiterbildungen 2014/15

Ein PDF erstellen. aus Adobe InDesign CC. Langner Marketing Unternehmensplanung Metzgerstraße Reutlingen

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Portfolio: "Die Ratten" von Gerhart Hauptmann

Softwaretechnik 1 Tutorium

Hochschule Karlsruhe Klausur EAI Prof. Dr. Christian Pape. Klausur EAI WS 05/06. Note: Bearbeitungszeit 90 Minuten Keine Hilfsmittel

Ein Vorwort, das Sie lesen müssen!

Sollsaldo und Habensaldo

2. Negative Dualzahlen darstellen

Informationen zur Verwendung von Visual Studio und cmake

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Wichtiges Thema: Ihre private Rente und der viel zu wenig beachtete - Rentenfaktor

Installation und Inbetriebnahme von Microsoft Visual C Express

Welche Gedanken wir uns für die Erstellung einer Präsentation machen, sollen Ihnen die folgende Folien zeigen.

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Bearbeiten elektronische Rechnungen (Invoices)

Anlage Portierung. Darstellung Ihrer heutigen Versorgungssituation Antrag zur Rufnummern-Mitnahme Mitteilung zur diesbezüglichen Situation

Ihren Kundendienst effektiver machen

Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt?

Transkript:

-Tests: Allgemeines Andere Bezeichnungen Logic driven, Strukturelles Der Tester entwickelt Testfälle aus einer Betrachtung der Ablauflogik des Programms unter Berücksichtigung der Spezifikation Intuitiv scheint es ausreichend zu sein, jede Programmanweisung mindestens einmal zu durchlaufen um das Programm zu testen (das entspricht Statement Coverage, s. nächste Folien), das reicht jedoch nicht aus Man benötigt eigentlich ein erschöpfendes aller Pfade Folie 16

-Tests: Pfade durch ein Programm Für den -Test betrachtet man Pfade (A E) durch ein Programm a == 3 No Yes b++; b >= 0 c > 0 Yes No println( 4/( b + 2*c ) ); Folie 17

-Tests: Pfade durch ein Programm Für den -Test betrachtet man Pfade (A E) durch ein Programm A a == 3 No B Yes C b++; b >= 0 c > 0 Yes E D No println( 4/( b + 2*c ) ); Folie 18

-Tests: Partner-Diskussion Diskutieren Sie mit einem Partner: Welche und wie viele Fälle muss man bei einem -Test für das nachfolgende Programm testen, um sicher zu sein, dass es korrekt ist? Welcher Fehler kann auftreten (falls überhaupt)? Mit welchem Testfall würden Sie den Fehlen finden? Machen Sie sich Notizen Dauer: 3 Minuten A a == 3 Yes C B No b++; b >= 0 c > 0 Yes E Folie 19 D No println( 4/( b + 2*c ) );

Anforderung an ein Überdeckungskriterium Gesucht ist ein formales Überdeckungskriterium, das garantiert, dass das Programm mit geeigneten Testfällen durchlaufen wird, so dass potenzielle Fehler bemerkt werden (= Fehlverhalten auftreten) Mögliche Überdeckungskriterien (engl.: Coverage Criteria) Statement Coverage Decision Coverage, Branch Coverage Condition Coverage Decision/Condition Coverage Multiple Condition Coverage Folie 22

Programmbeispiel Programmcode in Java int a, b, c;... if ( a == 3 ) b++; if ( b >= 0 c > 0 ) println( 4/( b + 2*c ) ); Folie 23

Abdeckungskriterien für -Tests: Statement Coverage Definition: Jede Anweisung muss mindestens einmal durchlaufen werden Im Beispiel Der folgende Testfall reicht für die vollständige Überdeckung nach dem Kriterium Statement Coverage aus 3, -2, 1 Dieser Test ist nicht ausreichend: der Fehler würde nicht entdeckt werden! Neue Idee: Verzweigungen und deren Auswertungsergebnis anstelle von Anweisungen berücksichtigen -1 >= 0 1 > 0 true Folie 24 4 / 1

Abdeckungstechniken für -Tests: Decision Coverage, Branch Coverage Jede (binäre, Boole'sche) Entscheidung (engl.: Decision) muss einmal mit true und einmal mit false verlassen werden bzw.: Jeder Zweig (engl.: Branch), der auf eine Verzweigung folgt muss mindestens einmal durchlaufen werden Im Beispiel Die folgenden Testfälle reichen für die vollständige Überdeckung nach dem Kriterium Decision Coverage aus 3, -2, 1 2, -1, 0-1 >= 0 1 > 0 true Folie 25 4 / 1

Abdeckungstechniken für -Tests: Decision Coverage, Branch Coverage Jede (binäre, Boole'sche) Entscheidung (engl.: Decision) muss einmal mit true und einmal mit false verlassen werden bzw.: Jeder Zweig (engl.: Branch), der auf eine Verzweigung folgt muss mindestens einmal durchlaufen werden Im Beispiel Die folgenden Testfälle reichen für die vollständige Überdeckung nach dem Kriterium Decision Coverage aus 3, -2, 1 2, -1, 0 Auch dieser Test ist nicht ausreichend: der Fehler würde nicht entdeckt werden! Neue Idee: Teilausdrücke statt des Gesamtergebnisses berücksichtigen -1 >= 0 0 > 0 false Folie 26

Abdeckungskriterien für -Tests: Decision Coverage, Branch Coverage Bemerkung Normalerweise liefert Decision Coverage (DC) eine Obermenge von Statement Coverage (SC), es gibt jedoch Ausnahmen: Ein Programm hat keine Verzweigung, dann gibt es keine Testfälle (ist nicht wirklich relevant) Anweisungen in Exception-Handling-Programmteilen werden nicht zwangsläufig ausgeführt, weil dort häufig keine Verzweigungen existieren Folie 27

Abdeckungstechniken für -Tests: Condition Coverage Jeder Teilausdruck in jeder Bedingung muss alle möglichen Werte mindestens einmal annehmen und das Programm und alle Routinen müssen (wie bei Decision Coverage) mindestens einmal bei jedem Einstiegspunkt gestartet werden Im Beispiel Die folgenden Testwerte reichen für die vollständige Überdeckung nach dem Kriterium Condition Coverage aus 3, -1, 1 2, -1, 0 0 >= 0 1 > 0 true Folie 28 4 / 2

Abdeckungstechniken für -Tests: Condition Coverage Jeder Teilausdruck in jeder Bedingung muss alle möglichen Werte mindestens einmal annehmen und das Programm und alle Routinen müssen (wie bei Decision Coverage) mindestens einmal bei jedem Einstiegspunkt gestartet werden Im Beispiel Die folgenden Testwerte reichen für die vollständige Überdeckung nach dem Kriterium Condition Coverage aus 3, -1, 1 2, -1, 0 Auch dieser Test ist nicht ausreichend: der Fehler würde nicht entdeckt werden! -1 >= 0 0 > 0 false Folie 29

Abdeckungskriterien für -Tests: Condition Coverage Problem bei der Condition Coverage: Das Gesamtergebnis eines Ausdrucks in Verzweigungen wird nicht berücksichtigt, daher werden Zweige eventuell übersprungen Problem-Beispiel if ( a & b ) println(... ); Nach Condition Coverage werden nur zwei Testfälle benötigt, es reichen zum Beispiel: a == true, b == false a == false, b == true In beiden Fällen wird aber nicht die println-anweisung durchlaufen! Neue Idee Teilausdrücke und Gesamtergebnis berücksichtigen Folie 30

Abdeckungstechniken für -Tests: Decision/Condition Coverage Jeder Teilausdruck in jeder Bedingung muss alle möglichen Werte mindestens einmal annehmen, jede Bedingung (als Ganzes) muss alle Ergebnisse mindestens einmal annehmen und das Programm und alle Routinen müssen mindestens einmal bei jedem Einstiegspunkt gestartet werden (wg. Exception-Handling) Im Beispiel In diesem Beispiel reichen die Testwerte der Condition Coverage auch für die vollständige Überdeckung nach dem Kriterium Decision/Condition Coverage aus 3, -1, 1 2, -1, 0 0 >= 0 1 > 0 true Folie 31 4 / 2

Abdeckungstechniken für -Tests: Decision/Condition Coverage Jeder Teilausdruck in jeder Bedingung muss alle möglichen Werte mindestens einmal annehmen, jede Bedingung (als Ganzes) muss alle Ergebnisse mindestens einmal annehmen und das Programm und alle Routinen müssen mindestens einmal bei jedem Einstiegspunkt gestartet werden (wg. Exception-Handling) Im Beispiel In diesem Beispiel reichen die Testwerte der Condition Coverage auch für die vollständige Überdeckung nach dem Kriterium Decision/Condition Coverage aus 3, -1, 1 2, -1, 0-1 >= 0 0 > 0 Der Fehler würde wiederum nicht entdeckt werden! false Neue Idee Kombinationen von Teilausdrücken berücksichtigen Folie 32

Abdeckungskriterien für -Tests: Multiple Condition Coverage Alle möglichen Kombinationen von Teilausdrücken in jeder Bedingung und alle Einstiegspunkte in das Programm und alle Routinen müssen mindestens einmal durchlaufen werden Im Beispiel Die folgenden Testwerte reichen für die vollständige Überdeckung nach dem Kriterium Decision/Condition Coverage aus 3, -1, 1 2, 0, 0 2, -1, 1 2, -1, 0 0 >= 0 1 > 0 true Folie 33 4 / 2

Abdeckungskriterien für -Tests: Multiple Condition Coverage Alle möglichen Kombinationen von Teilausdrücken in jeder Bedingung und alle Einstiegspunkte in das Programm und alle Routinen müssen mindestens einmal durchlaufen werden Im Beispiel Die folgenden Testwerte reichen für die vollständige Überdeckung nach dem Kriterium Decision/Condition Coverage aus 3, -1, 1 2, 0, 0 2, -1, 1 2, -1, 0 Der Fehler wird entdeckt, das Programm wird mit einer ArithmeticException abgebrochen 0 >= 0 0 > 0 true Folie 34 4 / 0 Fehler!

Abdeckungskriterien für -Tests: Multiple Condition Coverage Alle möglichen Kombinationen von Teilausdrücken in jeder Bedingung und alle Einstiegspunkte in das Programm und alle Routinen müssen mindestens einmal durchlaufen werden Im Beispiel Die folgenden Testwerte reichen für die vollständige Überdeckung nach dem Kriterium Decision/Condition Coverage aus 3, -1, 1 2, 0, 0 2, -1, 1 2, -1, 0 Der Fehler wurde entdeckt, das Programm wird mit einer ArithmeticException abgebrochen -1 >= 0 1 > 0 true Folie 35 4 / 1

Abdeckungskriterien für -Tests: Multiple Condition Coverage Alle möglichen Kombinationen von Teilausdrücken in jeder Bedingung und alle Einstiegspunkte in das Programm und alle Routinen müssen mindestens einmal durchlaufen werden Im Beispiel Die folgenden Testwerte reichen für die vollständige Überdeckung nach dem Kriterium Decision/Condition Coverage aus 3, -1, 1 2, 0, 0 2, -1, 1 2, -1, 0 Der Fehler wurde entdeckt, das Programm wird mit einer ArithmeticException abgebrochen -1 >= 0 0 > 0 false Folie 36 Eine Menge von Testfälle, die MCC erfüllt, erfüllt auch SC, DC, CC und D/CC

Abdeckungskriterien in der Übersicht Folie 37

-Tests: Bisherige Erfahrungen Multiple Condition Coverage ist ein minimales Testkriterium für Programme mit Mehrfach-Bedingungen Hoffnung: Nach einem erschöpfenden Pfad-Test ist das Programm vollständig getestet Diskutieren Sie mit einem Partner: Wird die Hoffnung erfüllt? Falls ja, geben Sie eine Begründung an! Falls nein, geben Sie ein Gegenbeispiel an! Dauer: 3 Minuten Folie 38

-Tests Die Anzahl eindeutiger Pfade durch ein Programm ist meistens sehr hoch; Beispiel eines Programm-Ablaufplans Die eindeutigen Pfade durch dieses Programm entspricht der Anzahl der Möglichkeiten von A nach B zu kommen Folie 40 Frage: Wie viele Möglichkeiten gibt es, von A nach B zu kommen?

Folie 42

-Test -Tests versuchen, die Vorteile von - und - Testverfahren zu kombinieren Vorgehen Soll-Überdeckungsgrad festlegen, z.b. Decision Coverage Zunächst -Tests durchführen Zur Überprüfung der Funktionalität Überdeckung wird (im Hintergrund) mitprotokolliert Dann -Test durchführen Analyse der nicht überdeckten Programmteile Korrektur des Programms (Entfernen unnötiger Teile) oder Erstellen zusätzlicher Testfälle, bis der vordefinierte Überdeckungsgrad erreicht ist Folie 43