Software-Test: Funktionstest



Ähnliche Dokumente
Software-Test: Funktionstest

Funktionale Testverfahren. Black Box-Tests. Unsystematisches Testen. Unsystematisches Testen (2) Überblick:

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

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

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

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Professionelle Seminare im Bereich MS-Office

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Whitebox-Tests: Allgemeines

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Theoretische Grundlagen der Informatik

Testen - Konzepte und Techniken

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche

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

Gründe für fehlende Vorsorgemaßnahmen gegen Krankheit

Typisierung des Replikationsplan Wirries, Denis Datenbankspezialist

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Reporting Services und SharePoint 2010 Teil 1

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

Programmiertechnik II

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Melanie Kaspar, Prof. Dr. B. Grabowski 1

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Saldo-Konto eines Mitarbeiters korrigieren

1 topologisches Sortieren

Leichte-Sprache-Bilder

Ein Vorwort, das Sie lesen müssen!

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Korrelation (II) Korrelation und Kausalität

Einführung in. Logische Schaltungen

Grundlagen der Theoretischen Informatik, SoSe 2008

Die Post hat eine Umfrage gemacht

impact ordering Info Produktkonfigurator

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Zählen von Objekten einer bestimmten Klasse

Excel Pivot-Tabellen 2010 effektiv

Zeichen bei Zahlen entschlüsseln

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

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

Geben Sie in dem offenen Suchfeld den Namen Ihrer Einrichtung ein und klicken Sie auf Suchen.

Windows XP Jugendschutz einrichten. Monika Pross Molberger PC-Kurse

Testen Prinzipien und Methoden

Vgl. Kapitel 4 aus Systematisches Requirements Engineering, Christoph Ebert

5.2 Neue Projekte erstellen

Programmierkurs Java

2 Funktionsorientierter Test

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Platinen mit dem HP CLJ 1600 direkt bedrucken ohne Tonertransferverfahren

Die integrierte Zeiterfassung. Das innovative Softwarekonzept

Änderung des Portals zur MesseCard-Abrechnung

Java: Vererbung. Teil 3: super()

Grammatiken. Einführung

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

AUF LETZTER SEITE DIESER ANLEITUNG!!!

Vorstellung Microsoft Mathematics 4.0

Grenzwertanalyse. Domain-Testing. Ronny Schwierzinski, Bernd Rabe, Anna Bartwicki

Programmiersprachen und Übersetzer

2 Wie sicher ist mein Passwort? *

Grundbegriffe der Informatik

15 Optimales Kodieren

mit dem TeXnicCenter von Andreas Both

Mediator 9 - Lernprogramm

kleines keyword brevier Keywords sind das Salz in der Suppe des Online Marketing Gordian Hense

Kapitalerhöhung - Verbuchung

Funktion Erläuterung Beispiel

Aktivieren des Anti-SPAM Filters

Deutsches Rotes Kreuz. Kopfschmerztagebuch von:

Informatik-Sommercamp Mastermind mit dem Android SDK

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

Erstellen von x-y-diagrammen in OpenOffice.calc

SEP 114. Design by Contract

Beispiel(unten ist der Spielfeldrand):

Bilder zum Upload verkleinern

Übungsaufgaben Tilgungsrechnung

Software Engineering Klassendiagramme Assoziationen

1. Einführung. 2. Die Abschlagsdefinition

Schritte 4. Lesetexte 13. Kosten für ein Girokonto vergleichen. 1. Was passt? Ordnen Sie zu.

P = U eff I eff. I eff = = 1 kw 120 V = 1000 W

SUDOKU - Strategien zur Lösung

Einlesen einer neuen Chipkarte in der VR-NetWorld Software Seccos 6 gültig bis 2013

Kurze Anleitung zum Guthaben-Aufladen bei.

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

ARCO Software - Anleitung zur Umstellung der MWSt

Seminar Trends beim Softwaretest. Einführung

Dow Jones am im 1-min Chat

Analysis I für Studierende der Ingenieurwissenschaften

Standard XPersonenstand - Version Verbindliche Handlungsanweisungen

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

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Schumacher, Chris Druckdatum :11:00

Dialognetze. Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Bearbeiten elektronische Rechnungen (Invoices)

Microsoft Update Windows Update

Robot Karol für Delphi

Transkript:

Software-Test: Funktionstest Andreas Zeller Lehrstuhl für Softwaretechnik Universität des Saarlandes, Saarbrücken 2006-02-06 Funktionale Testverfahren Funktionale Testverfahren testen gegen die Spezifikation und lassen die interne Programmstruktur unberücksichtigt. Komplementär zu white-box-verfahren Benötigen vollständige und widerspruchsfreie Spezifikation Problem: Testvollständigkeit schwierig zu messen Funktionale Äquivalenzklassenbildung Wertebereiche von Ein- und Ausgaben werden in Äquivalenzklassen eingeteilt Bildung der Äquivalenzklassen nur an der Spezifikation orientiert ( black box ) Äquivalenzklassen für gültige und ungültige Werte Getestet wird nur noch für jeweils einen Repräsentanten der Klasse

Regeln zur Äquivalenzklassenbildung Jeder spezifizierte Eingabebereich induziert mindestens eine gültige und mindestens eine ungültige Klasse Beispiel: i muss kleiner oder gleich 0 sein. Gültige Klasse: i <= 0 Ungültige Klasse: i > 0. Jede Eingabebedingung der Spezifikation induziert eine gültige Klasse (= Bedingung erfüllt) und eine ungültige Klasse (= Bedingung nicht erfüllt) Beispiel: Das erste Zeichen muss ein Buchstabe sein. Gültige Klasse: Das erste Zeichen ist ein Buchstabe ungültige Klasse: Das erste Zeichen ist kein Buchstabe Regeln zur Äquivalenzklassenbildung (2) Bildet eine Eingabebedingung eine Menge von Werten, die unterschiedlich behandelt werden, ist für jeden Fall eine eigene gültige Äquivalenzklasse zu bilden und eine ungültige. Für Ausgaben werden analog Äquivalenzklassen gebildet Zum Testen wird irgendein Element der Äquivalenzklasse gewählt (am besten zufällig) Beispiel: ZaehleZchn Wir betrachten die Spezifikation von ZaehleZchn: void ZaehleZchn(int& VokalAnzahl, int& Gesamtzahl); // Lese Zeichen von der Tastatur, bis ein Zeichen // gelesen wird, das kein Großbuchstabe ist, oder // Gesamtzahl erreicht. // Ist das eingelesene Zeichen ein Großbuchstabe, // wird Gesamtzahl um erhöht; // ist der Großbuchstabe ein Vokal, // wird auch VokalAnzahl um erhöht. 2

Beispiel: ZaehleZchn (2) ZaehleZchn verhält sich in den folgenden Äquivalenzklassen unterschiedlich: Klasse 0 Gesamtzahl < Klasse 2 Gesamtzahl = Klasse 3 0 VokalAnzahl Gesamtzahl Für das eingelesene Zeichen Zchn gilt außerdem: Klasse 4 Zchn ist kein Großbuchstabe (Zchn < A oder Zchn > Z ) Klasse 5 Zchn ist ein Großbuchstabe Klasse 6 Zchn ist ein großer Vokal ( A, E,, U ) Beispiel: ZaehleZchn (3) Die Äquivalenzklassen können noch weiter verfeinert werden: Eingaben Gültige Äquivalenzklassen Gesamtzahl 0 Gesamtzahl < 2 Gesamtzahl = VokalAnzahl 3 0 VokalAnzahl Gesamtzahl Zchn 4a Zchn < A 4b Zchn > Z 5 A Zchn Z 6a Zchn = A 6b Zchn = E 6c Zchn = I 6d Zchn = O 6e Zchn = U Beispiel: ZaehleZchn (4) Mit drei Repräsentanten decken wir alle Äquivalenzklassen ab: Testfall Getestete Äquivalenzklasse Gesamtzahl VokalAnzahl Zchn Soll-Ergebnisse: Gesamtzahl VokalAnzahl, 3, 4a, 5, 6a 6e 00 X, A, E, I, O, U, 5 06 5 2, 3, 4b a 3 2, 3 3

Grenzwertanalyse Grundidee: Repräsentanten sollen am Rand der Äquivalenzklasse gewählt werden Beispiel: Gegeben seien drei Äquivalenzklassen <= aktuellermonat <= 2 (gültig), aktuellermonat < (ungültig), 3 <= aktuellermonat (ungültig). Dann sind 0,, 2 und 3 geeignete Repräsentanten. Hintergrund: Grenzbereiche werden besonders häufig fehlerhaft verarbeitet Beispiel: ZaehleZchn Mit vier Repräsentanten decken wir alle Grenzwerte ab (U = untere Grenze, O = obere Grenze) Testfall Getestete Äquivalenzklasse Gesamtzahl VokalAnzahl Zchn Soll-Ergebnisse: Gesamtzahl VokalAnzahl U, 3U, 4aO, 5U, 5O, 6a 6e 0 0 A, E, I, O, U, Z, @ 6 5 2 2, 3O 3, 3, 4bU 00 [ 00 Zufallstest Füttern des Programms mit zufälligen Werten Einfachstes funktionales Testverfahren Erreicht Gleichbehandlung aller Eingabedaten ohne Beachtung menschlicher Präferenzen Bietet sich an in Ergänzung zu anderen Verfahren (z.b. zur Auswahl von zufälligen Repräsentanten aus einer Äquivalenzklasse) Test von Zustandsautomaten Ist das Verhalten durch einen Zustandsautomaten spezifiziert, können daraus Testfälle abgeleitet werden 4

Ziel: Abdeckung aller Zustandsübergänge (z.b. mindestens ) Beispiel: Parkhaus Geld eingeworfen [reicht aus]/ Karte ausgeben bereit wartet auf Geld Geld eingeworfen [reicht nicht]/ Restbetrag anzeigen Karte eingeschoben/ Betrag anzeigen Der Testfall Karte eingeschoben Geld eingeworfen [reicht nicht] Geld eingeworfen [reicht aus] deckt alle Zustände und Übergänge ab Der Testprozess Nur ein Testverfahren alleine reicht nicht aus: Strukturtests können keine fehlende Funktionalität entdecken Funktionstests berücksichtigen die vorliegende Implementierung nur unzureichend (z.b. Zweigabdeckung < 70%) Daher kombiniertes Vorgehen:. Funktionstest (mit Grenzwertanalyse + Zufallstests) 2. Strukturtest (der Abschnitte, die noch nicht im Funktionstest abgedeckt wurden) 3. Regressionstest (nach Fehlerkorrektur) 5

Mutationstesten Mutationstesten ist ein weiteres Verfahren, die Güte von Testdatensätzen zu bestimmen: Annahme: Programme sind fast richtig (competent programmer hypothesis) Kleine Änderungen am Programm sollten bei hinreichend umfassenden Testdatensätzen zu beobachtbaren Verhaltensänderungen führen Die möglichen kleinen Änderungen (Mutationen) kann man systematisch erzeugen und die Mutanten mit den Testdatensätzen füttern Mutationstesten (2) Anteil aufgedeckter Mutanten kann als Testgütemaß verwendet werden: Der Testdatensatz hat nur 60% aller Mutanten gekillt. Wir brauchen also noch mehr Testfälle Ein perfekter Testdatensatz sollte alle Mutanten erkennen Mutationsoperatoren 2 beschreiben Erzeugung semantisch veränderter, aber syntaktisch korrekter Programmversionen Für jede Fehlerklasse gibt es spezielle Operatoren Jeder Mutant enthält nur eine Abweichung R. A. DeMillo, J. L. Lipton, F. G. Sayward: Program mutation: A new approach to program testing, in: Software Testing, Infotech State of the Art Report Vol. 2, S.07-28, Maidenhead 979 2 nach: K. N. King, A. J. Offutt: A FORTRAN Language System for Mutation-based Software Testing, Software Practice & Experience 2(7), S.685-78, 99. 6

Mutationsoperatoren (2) Berechnungsfehler Ändern von arithmetischen Operatoren (+ statt ) Löschen von arithmetischen (Teil-) Ausdrücken Ändern von Konstanten Schnittstellenfehler Vertauschen / Ändern von Parametern Aufruf anderer Prozeduren eines Moduls Kontrollflussfehler Ersetzen von logischen (Teil-) Ausdrücken durch T und F Ändern von logischen und relationalen Operatoren (AND statt OR, statt <) Aufruf anderer Prozeduren Löschen von Anweisungen Mutationsoperatoren (3) Initialisierungsfehler Ändern von Konstanten Löschen von Zuweisungen / Initialisierungsanweisungen Datenflussfehler Durchtauschen von Variablen in einem Sichtbarkeitsbereich Änderungen in der Indexberechnung Validierung des Testdatensatzes Bestimmung der Mutantenkillquote zu vorgegebener Mutantenzahl Schon bei kleiner Mutantenzahl muss ein hoher Prozentsatz Mutanten (>90%) entdeckt werden, ansonsten ist die Testsuite zu klein (= zu wenig Testfälle) 7

Schätzung der Restfehlerzahl Gesucht: Restfehlerzahl E Es werden N Mutationen eingeführt und M Fehler entdeckt Davon seien X Mutanten. Mithin gilt ungefähr also X M = N E + N E = (M X) N X Analogie: Ich setze in einem Teich N = 00 markierte Forellen aus. Später fische ich M = 0 Forellen; davon sind X = 2 markiert. Also schätze ich die Zahl der nicht-markierten Forellen auf E = (0 2) 00/2 = 400. Aber: mit Vorsicht zu genießen, da die Werte stark von N abhängen. Fazit: Mutationstesten! Verfahren zur Beurteilung von Testdatensätzen! weitgehend automatisierbar! explizite Fehlerorientierung! Modellierung anderer Verfahren möglich (z.b. Anweisungsüberdeckung, special value testing) " es werden nur einfache Fehler erzeugt " es wird angenommen, dass komplexe Fehler Kombinationen einfacher Fehler sind " diese Hypothese ist nicht bewiesen Zusammenfassung Die wichtigsten funktionalen Testverfahren sind Funktionale Äquivalenzklassenbildung Grenzwertanalyse Zufallstest Test von Zustandsautomaten Da sowohl Funktionstest als auch Strukturtest Nachteile haben, empfiehlt sich ein kombiniertes Vorgehen. Mutationstesten hilft, die Güte von Testdatensätzen zu bestimmen 8

Literatur Lehrbuch der Softwaretechnik, Band 2 (Balzert) Wissensbasierte Qualitätsassistenz zur Konstruktion von Prüfstrategien für Software-Komponenten (P. Liggesmeyer, 993) 9