3: Systematisches Testen



Ähnliche Dokumente
6 Systematisches Testen von Programmen

3: Systematisches Testen

Beheben von verlorenen Verknüpfungen

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

Übungen Programmieren 1 Felix Rohrer. Übungen

Windows XP Jugendschutz einrichten. Monika Pross Molberger PC-Kurse

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Was ist Sozial-Raum-Orientierung?

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Whitebox-Tests: Allgemeines

Lehrer: Einschreibemethoden

Datensicherung. Beschreibung der Datensicherung

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

1. Weniger Steuern zahlen

Professionelle Seminare im Bereich MS-Office

Anlegen eines DLRG Accounts

Regeln für das Qualitäts-Siegel

YouTube: Video-Untertitel übersetzen

Summenbildung in Bauteiltabellen mit If Then Abfrage

Der große VideoClip- Wettbewerb von Media Markt.

ALEMÃO. Text 1. Lernen, lernen, lernen

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Erfahrungen mit Hartz IV- Empfängern

AZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

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

Alle gehören dazu. Vorwort

Informationsblatt Induktionsbeweis

Statuten in leichter Sprache

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle:

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

proles-login. Inhalt [Dokument: L / v1.0 vom ]

Anleitung: Einrichtung der Fritz!Box 7272 mit VoIP Telefonanschluss

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Schnittstelle DIGI-Zeiterfassung

Programmierkurs Java

Die Post hat eine Umfrage gemacht

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

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

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

Dokumentation von Ük Modul 302

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

DAUERHAFTE ÄNDERUNG VON SCHRIFTART, SCHRIFTGRÖßE

Änderung des Portals zur MesseCard-Abrechnung

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

EASYINSTALLER Ⅲ SuSE Linux Installation

Die Industrie- und Handelskammer arbeitet dafür, dass Menschen überall mit machen können

1 Vom Problem zum Programm

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

ANLEITUNG ZUR ERSTANMELDUNG ONLINE AN DER UNIVERSITÄT WIEN (FÜR ERASMUS-STUDIERENDE)

WINDOWS 10 Upgrade. Beispiel: Desktop-Ausschnitt von vorhandenem WIN 8.1 (rechte Ecke der Taskleiste)

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Text-Zahlen-Formatieren

Kapitalerhöhung - Verbuchung

a) Bis zu welchem Datum müssen sie spätestens ihre jetzigen Wohnungen gekündigt haben, wenn sie selber keine Nachmieter suchen wollen?

tentoinfinity Apps 1.0 EINFÜHRUNG

Bedienungsanleitung Rückabwicklungsrechner

Anleitung über den Umgang mit Schildern

Grundbegriffe der Informatik

Erste Schritte mit CVP 9.0

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

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

teischl.com Software Design & Services e.u. office@teischl.com

Impulse Inklusion Selbst-bestimmtes Wohnen und Nachbarschaft

Urlaubsregel in David

Was meinen die Leute eigentlich mit: Grexit?

Windows 10 activation errors & their fixes.

Kleines Handbuch zur Fotogalerie der Pixel AG

Internet Explorer Version 6

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Inventur. Bemerkung. / Inventur

ecaros2 - Accountmanager

Gratis Excel SVERWEIS Funktions-Anleitung, Tutorial, ebook, PDF-E-Book

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Die integrierte Zeiterfassung. Das innovative Softwarekonzept

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote

Arbeit zur Lebens-Geschichte mit Menschen mit Behinderung Ein Papier des Bundesverbands evangelische Behindertenhilfe e.v.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Kulturelle Evolution 12

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Step by Step VPN unter Windows Server von Christian Bartl

1. Konfiguration Outlook 2007 MAPI (mit Autodiscover).

GeoPilot (Android) die App

Primzahlen und RSA-Verschlüsselung

SMS-Versand in MACS Einrichtung des SMS-Versand Verwendung des SMS-Versandes Der SMS-Versand Empfängerfeld Empfänger-Rufnummer Inhalt der SMS

infach Geld FBV Ihr Weg zum finanzellen Erfolg Florian Mock

3. LINEARE GLEICHUNGSSYSTEME

BERECHNUNG DER FRIST ZUR STELLUNGNAHME DES BETRIEBSRATES BEI KÜNDIGUNG

Umstellung für EBICS in StarMoney Business 4.0 / 5.0 mit EBICS-Modul

Merkblatt für Schiedsrichter zum Spielbetrieb 2014

Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9

TeamSpeak3 Einrichten

PRÜFUNG FÜR ELEKTROINGENIEURE. Softwaretechnik I. Musterlösung SS Ohne Gewähr -

Hauptseminar Automotive Software Engineering Testen, Rapid Prototyping und x in the loop

2.1 Präsentieren wozu eigentlich?

Studieren- Erklärungen und Tipps

Transkript:

Stefan Lucks 3: Systematisches Testen 70 E für Sichere Vert. Systeme (2007) 3: Systematisches Testen Testen ist ein Prozess, ein Programm mit der Absicht auszuführen, Fehler zu finden. Man muss destruktiv denken! Testen ist ungeeignet, die Fehlerfreiheit eines Programms nachzuweisen! Testen ist keine Form des Debuggens! Die systematische Auswahl von Testfällen ist eine schwierige kreative Arbeit. Testergebnisse sollen reproduzierbar sein. Das Durchführen von Tests kann man oft automatisieren. Und man sollte es automatisieren, wenn möglich.

Stefan Lucks 3: Systematisches Testen 71 E für Sichere Vert. Systeme (2007) Kein Testen, aber auch nützlich: Untersuchung des Source-Codes Code-Inspectionen (strenge Regeln, Entscheidung über die Freigabe des Source-Codes) Eine Anomalie wie if ((options == ( WCLONE WALL)) && (current->uid = 0)) retval = -EINVAL; hat in dem Source-Code für ein sicheres System nichts zu suchen! Walk-Throughs (weniger strikte Regeln) Programming in Pairs Formale Verifikation ( in ein paar Wochen)

Stefan Lucks 3: Systematisches Testen 72 E für Sichere Vert. Systeme (2007) Testpsychologie Man muss die Fehler finden wollen! Idealerweise Trennung zwischen Programmautoren und Testern. Auch hilfreich: Test-Driven Developement (zuerst die Black-Box-Tests, danach die Implementation). Es ist gut, wenn ein Test einen Fehler findet. Erfolg = Fehler gefunden!

Stefan Lucks 3: Systematisches Testen 73 E für Sichere Vert. Systeme (2007) Regressionstest Batterie von Blackboxtests und ggf. Tests, um Fehler zu erkennen, die schon einmal aufgetreten sind Änderungen werden nur nach einem Bestehen des Regressionstests freigegeben. Wenn ein neuer Fehler gefunden wird: Zuerst neuer Testfall für den Regressionstest. Dann Behebung des Fehlers. Denn: Fehler neigen dazu, wiederholt zu werden! Vermutlich die wichtigste Art von Tests.

Stefan Lucks 3: Systematisches Testen 74 E für Sichere Vert. Systeme (2007) Testfall Beschreibung einer Eingabe(-Bedingung) mit einem erwarteten Ergebnis Zweck Vorbedingung Erwartetes Ergebnis Aufräumarbeiten Bei der Durchführung des Tests: Vergleich des tatsächlichem mit dem Erwarteten Ergebnis, Protokollierung. Ggf. Verknüpfung mehrerer Testfälle zu einer Kette.

Stefan Lucks 3: Systematisches Testen 75 E für Sichere Vert. Systeme (2007) Beispiel: Wie sollte man diese Funktion testen? function Fibonacci(X: Positive) return Positive is Kind, Vater, Opa: Positive; begin if X <= 2 then return 1; else Vater := 1 Opa := 1; for Generation in 3.. X loop Kind := Vater + Opa; Opa := Vater; Vater := Kind; end loop; return Kind; end if; end Fibonacci;

Stefan Lucks 3: Systematisches Testen 76 E für Sichere Vert. Systeme (2007) 3.1: White-Box Tests 3.1: White-Box Tests Tests, die mit Hilfe der Kenntnis eines (Unter-)Programms definiert werden, mit Hilfe des Kokntrollflussgraphen: Knoten: Ausführbare Anweisung (Zuweisung, Prozeduraufruf) zusätzlich je ein Start- und Zielknoten ggf. Zusammenfassung mehrerer zusammenhängender Anweisungen zu einem Knoten Kante: möglicher Programmfluss zwischen zwei Anweisungen Pfad: Kombination von Kanten, die vom Start- zum Zielknoten laufen

Stefan Lucks 3: Systematisches Testen 77 E für Sichere Vert. Systeme (2007) 3.1: White-Box Tests Kriterien für White-Box Tests Anweisungsüberdeckung: Jeder Knoten des Kontrollflussgraphen wird mindestens einmal ausgeführt. Zweigabdeckung: Jede Kante des Kontrollflussgraphen wird mindestens einmal ausgeführt. Pfadabdeckung: Jeder Pfad im Kontrollflussgraphen wird mindestens einmal ausgeführt (theoretisches Kriterium, da meistens unendlich viele Pfade).

Stefan Lucks 3: Systematisches Testen 78 E für Sichere Vert. Systeme (2007) 3.1: White-Box Tests Mutationstesten Etwas unsystematische, aber wirkungsvolle Methode, die Vollständigkeit der Testbatterie zu testen. Grundlage: Kleine Änderungen ( Mutationen ) am Quelltext. Jeder Mutant enthält nur eine Abweichung, z.b. Ersetzen eines durch ein <, eines and durch ein or,... Vorzeichenfehler, Auskommentieren einzelner Statements, Vertauschen der Reihenfolge einzelner Statements,... Kriterium: Wenn irgend eine Mutation den Test besteht, hat man vermutlich nicht genug Testfälle, oder die falschen Testfälle.

Stefan Lucks 3: Systematisches Testen 79 E für Sichere Vert. Systeme (2007) 3.2: Black-Box Tests 3.2: Black-Box Tests Tests, die anhand der Spezifikation eines (Unter-)Programms definiert, werden, ohne das Programm selbst zu kennen. Techniken zur Erzeugung von Testfällen: Äquivalenzklassenbildung (sowohl für gültige, als auch für ungültige Eingaben) Grenzwertanalyse Beispiel: Wie testet man die ein (Unter-)Programm, das ein Datum in der Form (Tag, Monat, Jahr) einlesen und bei ungültigen Daten eine Ausnahme auslösen soll:

Stefan Lucks 3: Systematisches Testen 80 E für Sichere Vert. Systeme (2007) 3.2: Black-Box Tests Beispiel Kaffeeautomat package Kaffee_Automat is type Zustand is private; type Benutzer_Handlung is (Cent10, Cent20, Knopf); type Aktionen is (Muenze_Angenommen, Muenze_Abgelehnt, Alle_Muenzen_Zurueck, Gib_Kaffee_Aus);

Stefan Lucks 3: Systematisches Testen 81 E für Sichere Vert. Systeme (2007) 3.2: Black-Box Tests Kaffeeautomat (2) procedure Initialisiere (X: in out Zustand); procedure Agiere(X: in out Zustand; Eingabe: Benutzer_Handlung; Aktion: out Aktionen); private type Zustand is range 0.. 50; end Kaffee_Automat;

Stefan Lucks 3: Systematisches Testen 82 E für Sichere Vert. Systeme (2007) 3.2: Black-Box Tests Wie testen wir den Kaffeeautomaten? Spezifikationen, wie für derartige Automaten üblich. Insbesondere: Eingabe 10-Cent und 20-Cent Münzen Kaffee für 50 Cent, kein Überbezahlen Geldrückgabeknopf Gibt es Äquivalenzklassen, die wir hier nutzen können?

Stefan Lucks 3: Systematisches Testen 83 E für Sichere Vert. Systeme (2007) 3.3: Automatisches Testen 3.3: Automatisches Testen Manuelles Testen ist arbeitsaufwändig, langweilig und... fehlerträchtig. Und wer will nach jeder (kleinen) Änderung den kompletten Regressionstrest durchführen... Um die Reproduzierbarkeit der Test zu gewährleisten, muss bei jeder Wiederholung des Tests (z.b. Regressionstest), der gleiche Input eingegeben werden.

Stefan Lucks 3: Systematisches Testen 84 E für Sichere Vert. Systeme (2007) 3.3: Automatisches Testen Der Test-Driver Generator testgen Ein einfach zu handhabendes Werkzeug, um Test-Driver zu erzeugen ist der Test-Driver Generator testgen (eine Weiterentwicklung von tg. Er dient als Beispiel für ein Werkzeug beim Testen. Für anspruchsvollere Aufgaben würde man z.b. AUnit verwenden.

Stefan Lucks 3: Systematisches Testen 85 E für Sichere Vert. Systeme (2007) 3.3: Automatisches Testen Arbeitsweise von testgen Eingabe von testgen ist ein Test-Script (z.b. beispiel.ts), Ausgabe der Quelltest eines Ada-Programms (z.b. beispiel.adb). Typische Test-Scripts bestehen aus 1. Einer globalen Kontext-Vereinbarung, bestehend aus with und use -Klauseln für Ada.Text_IO und dem getesteten Modul, und 2. einzelnen Testfällen.

Stefan Lucks 3: Systematisches Testen 86 E für Sichere Vert. Systeme (2007) 3.3: Automatisches Testen Die Syntax eines Test-Scripts Context with Ada.Text_IO; use Ada.Text_IO; with Datum_Manager; use Datum_Manager; ***** 30. Juni 2003 (kein Schaltjahr) Define Dat: Datum; Test Dat := Setze(30, Juni, 2003); Pass (Tag(Dat)=30) and (Monat(Dat)=Juni) and (Jahr(Dat)=2003) ***** 31. Juni 2003 (kein Schaltjahr) Define Dat: Datum; Test Dat := Setze(31, Juni, 2003); Pass exception Falsches_Datum

Stefan Lucks 3: Systematisches Testen 87 E für Sichere Vert. Systeme (2007) 3.3: Automatisches Testen Die Syntax eines Testfalls Testfall-Name, Define-, Test- und Pass-Vereinbarungen: ***** Mai, alle Tage, 2003 (kein Schaltjahr) Define Fehler: Natural := 0; Dat: Datum; Test for T in Tag_Typ loop Dat := Setze(T, Mai, 2003); if (Tag(Dat) /= T) or (Monat(Dat) /= Mai) or (Jahr(Dat) /= 2003) then Fehler := Fehler + 1; end if; end loop; Pass Fehler = 0

Stefan Lucks 3: Systematisches Testen 88 E für Sichere Vert. Systeme (2007) 3.3: Automatisches Testen Verhalten eines Test-Scripts (1) pass. (2) pass. (3) pass. (4) Februar, 1..28, 2003 (kein Schaltjahr) Script name: dat_man.ts ; Line:34... FAIL. (path => was taken, but predicate is FALSE) (5) pass. (6) pass. (7) pass. Script name dat_man.ts ; total test result: FAIL. Hurra! Der Test war erfolgreich Fehler gefunden!