Qualitätssicherung von Software

Slides:



Advertisements
Ähnliche Präsentationen
Ziele von EINI I + II Einführen in „Informatik“
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
Prüfung objektorientierter Programme -1
Objektorientierte Programmierung
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Qualitätssicherung von Software Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FIRST.
Modellbasierte Software-Entwicklung eingebetteter Systeme
Frame-Logik Eine Einführung Andreas Glausch.
Qualitätssicherung von Software
Qualitätssicherung von Software (SWQS)
Qualitätssicherung von Software
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Finale Semantik und beobachtbares Verhalten
Kapitel 4 Datenstrukturen
Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FOKUS : Software Model Checking.
Qualitätssicherung von Software Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FIRST.
Qualitätssicherung von Software
Qualitätssicherung von Software
Qualitätssicherung von Software
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Qualitätssicherung von Software
Spezifikation, Verifikation, Testtheorie Prof. Dr. Holger Schlingloff Institut für Informatik und Fraunhofer FIRST.
Management großer Softwareprojekte Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin, Institut für Informatik Fraunhofer Institut für Rechnerarchitektur.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Sprache
Java: Grundlagen der Objektorientierung
Seminar zum pi-Kalkül betreut von Andreas Rossberg
Prinzipien des Algorithmenentwurfs Backtracking Prof. Dr. Th. Ottmann
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Datentyp  Zusammenfassung von Mengen von "Werten" mit auf
Beispiele für Ausdrucksalgebren
Eine (Gleichungs-)Spezifikation ist ein Paar SPEC = (, E),
Einführung Wat jibt´s denn? Mit Computa kenn´ ick mir aus! Guten Tag,
Modellierung komplexer Realität mit Objekten
Explizite und editierbare Metainformationen für Software Muster.
DVG Klassen und Objekte
Stacks Referat im Fach Basisinformationstechnologien von Venelina Koleva.
Unified Modeling Language Repetition / Einführung zu UML
Proseminar an der TU München Martin Levihn
Einführung in die Programmierung
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Dynamische Datentypen
Programmiersprachen Proseminar Grundlagen wissenschaftlichen Arbeitens
EPROG Tutorium #5 Philipp Effenberger
Objektorientierung.
Qualitätssicherung von Software Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FIRST.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Kapitel 5Strukturen Information aus der realen Welt werden in einem informationsverarbeitenden System als Daten abgelegt. Diese stellen also eine (vereinfachte)
Einführung in die Programmierung mit Java
Tutorium Software-Engineering SS14 Florian Manghofer.
Praktische Informatik 1
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
 Präsentation transkript:

Qualitätssicherung von Software Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FIRST

Kapitel 2. Testverfahren 2.1 Testen im SW-Lebenszyklus 2.2 funktionsorientierter Test Modul- oder Komponententest Integrations- und Systemtests 2.3 strukturelle Tests, Überdeckungsmaße 2.4 Test spezieller Systemklassen Test objektorientierter Software Test graphischer Oberflächen Test eingebetteter Realzeitsysteme 2.5 automatische Testfallgenerierung 2.6 Testmanagement und –administration http://qse.ifs.tuwien.ac.at/courses/skriptum/script.htm 2.4 OO-Test 26.11.2004

Übung Entwerfen Sie einen Testplan für die Java-Standard-klasse Stack! 2.4 OO-Test 26.11.2004

Testorakel und Zusicherungen Problematik der Beurteilung eines Testergebnisses Kapselung verhindert direkten Zugriff auf Objektattribute Aufhebung der Kapselung (friendly test class) verlagert das Korrektheitsproblem auf die Testumgebung Kompromiss: nur lesende Zugriffe im Tester Zusicherungen Boole‘sche Ausdrücke, die Aussagen über den Objektzustand formulieren Geben Vor- und Nachbedingung für jede Methode wieder Zur Übersetzungszeit zu- oder abschaltbar Eingriff in zeitliches Ablaufverhalten! 2.4 OO-Test 26.11.2004

OO-Erweiterungen Parametrisierte Klassen Abstrakte Klassen Vererbung Verarbeitung sollte möglichst unabhängig vom Typ der verarbeiteten Objekte sein Review um Abhängigkeiten aufzuzeigen Wahl einer möglichst einfachen Parameterinstanz (z.B. Stack(Int) für Stack(x) ) Abstrakte Klassen Test aller jeweiligen Instanzen abstrakte Klasse für den Test nur „syntaktischer Zucker“ Vererbung Mehrfachvererbung ist zu vermeiden! saubere Klassen- Unterklassenhierarchie für Testbarkeit 2.4 OO-Test 26.11.2004

Vererbung und Unterklassen Für den Test einer Unterklasse für alle neuen Methoden neue Testfälle aufstellen und ausführen für alle redefinierten Methoden neue Testfälle aufstellen und ausführen; selbst semantisch ähnliche Programmteile müssen neuen, unterschiedlichen Tests unterzogen werden (Neuimplementierung) für alle geerbten Methoden alle Testfälle der Oberklasse erneut durchführen (Kontext der Unterklasse ist anders, erneuter Test notwendig) normalerweise wesentlich mehr ererbte als eigene Methoden! ( Testautomatisierung erforderlich) 2.4 OO-Test 26.11.2004

objektorientierte Analyse Beschreibung des Systems durch Klassen- und Interaktionsdiagramme Ableitung von Testfällen aus den Entwurfsdokumenten (nicht aus dem Code!) Abstrakte Datentypen (später) 2.4 OO-Test 26.11.2004

OO-Integration Integrationsstrategien für OO-Systeme Klassen-Integration Klassen, die zu einer Komponente gehören Komponenten-Integration Komponente: Menge von gegenseitig abhängigen Klassen, die zu einer binären, ausführbaren Code-Einheit zusammengefaßt sind. DLL´s, Lib., ... alle Komponenten einer Anwendungsschicht Schichten-Integration Präsentations- / Verarbeitungs- / Zugriffs-Schicht oder Client- / Server-Schicht 2.4 OO-Test 26.11.2004

OO-Integrationstest Im Gegensatz zu modularer Software, wo größtenteils Baumstrukturen der Benutzungsbeziehungen auftreten, sind in objekt-orientierten Programmen oft Graphen mit starken Zusammenhangskomponenten (Cluster) und zyklischen Abhängigkeiten zu beobachten. Objektorientierte Systeme sind eher ereignisgesteuerte Systeme. Integrationsansatz muss dies berücksichtigen. 5 Stufen Methodentest (method test) Nachrichtensequenzen (message sequences) Ereignissequenzen (event sequences) Ablauftest (thread testing) Anwendungstest (thread interaction testing) 2.4 OO-Test 26.11.2004

OO-Systemtest Der Systemtest betrachtet das System als schwarzen Kasten. Es ist prinzipiell unerheblich, ob das System intern objektorientiert oder konventionell aufgebaut ist Auswahl der Testfälle auf Basis der Entwurfsdokumente (z.B. use cases). frühzeitige Überprüfung der Modelle unter Einbeziehung des Auftraggebers 2.4 OO-Test 26.11.2004

Pause! 2.4 OO-Test 26.11.2004

Lotos algebraische Spezifikationssprache (Language of Temporal Ordering Specification) standardisiert (ISO 8807, 1989) viel Theorie, einige praktische Beispiele unterstützt objektorientierten Entwurf Erweiterungen / Varianten (z.B. CSP-CASL) Testtheorie (Forschung!) Literatur: Kenneth J. Turner, The Formal Specification Language LOTOS: A Course for Users. http://www2.cs.uregina.ca/~sadaouis/CS872/lotos-users.pdf Marie-Claude Gaudel und Perry R. James. Testing Algebraic Data Types and Processes: A Unifying Theory. Formal Aspects of Computing, 10(5-6), (1999) Seite 436-451 (lesen!!!) 2.4 OO-Test 26.11.2004

Bestandteile: Abstrakter Datentyp Datentypbezeichnung(en) Funktionen / Operationen mit Typ definierende Gleichungen Prozessalgebraische Verhaltensbeschreibung rekursive Prozessdefinition Parallelität und Synchronisation / Kommunikation 2.4 OO-Test 26.11.2004

Beispiel: ADT Stack type Stack is Boolean formalsorts Element sorts Stack opns empty : Stack - > Bool emptyStack : - > Stack push : Element, Stack - > Stack peek : Stack - > Element pop : Stack - > Stack eqns forall e: Element, s: Stack ofsort Bool empty(emptyStack) = true; empty(push(e,s)) = false; ofsort Element peek(push(e,s)) = e; ofsort Stack pop(push(e,s)) = s; endtype (* Stack *) Frage: Erweiterung um search? 2.4 OO-Test 26.11.2004

Instantiierung Stack entspricht abstrakter Klasse Konkrete Klasse: type NatStack is GenericStack actualizedby NaturalNumber using sortnames Nat for Element NatStack for Stack endtype (* NatStack *) 2.4 OO-Test 26.11.2004

Semantik von Termen Termalgebra: alle wohltypisierten Ausdrücke freie Algebra, („Herbrand-Universum“): keine Gleichungen, jeder Term ist ein eigener Wert Gleichungen implizieren Äquivalenzpartitionierung mehrere Möglichkeiten der Semantik initiale Semantik: kleinste Äquivalenzpartitionierung der freien Algebra (alles was nicht beweisbar gleich ist, ist ungleich) lose Semantik: irgendeine Partitionierung 2.4 OO-Test 26.11.2004

weitere Möglichkeiten bedingte Gleichungen Parametrisierte Typen (abstrakte Klassen) Überladen von Funktionen (Polymorphie) z.B. Gleichheit ofsort zur Kennzeichnung des Typs Renaming und Subtypisierung type B is A renamedby sortnames ... for ... 2.4 OO-Test 26.11.2004