Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Zusammenfassung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Objektrelationales Mapping mit JPA Testing Jonas Bandi Simon Martinelli.
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Ein Beispiel in Java.
Sebastian Grahn Sebastian Kühn
Das Test-Framework JUnit
Das Test-Framework JUnit
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Remote Methode Invocation (RMI)
Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
Entwurfsmuster EDV Entwurfsmuster.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Klassen 02 - Klassen.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Die Persistenzschicht
Einführung in die Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link.
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
Testtechniken-Praktikum WS 2005/06 1 Besprechung Java-Test/Aufgabe 1 Andreas Höfer Dr. Matthias Müller.
Testtechniken-Praktikum WS 2005/06 1 Performanztests mit JUnitPerf Andreas Höfer Dr. Matthias Müller.
Blackbox-Testverfahren
Das Command Muster Deimbacher, Gölles.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Testtechniken-Praktikum WS 2005/06 1 Arbeiten mit JUnit Andreas Höfer Dr. Matthias Müller Mit Beiträgen von Johannes Link.
JUnit Grundkonzept Gruppe Markt. JUnit: Ziele Einfachheit: –Leicht erlernbare, bekannte Tools –Möglichst wenig Aufwand für die Implementierung von Testfällen.
TDD mit MSTest Stefan Lieser Web:
TDD mit MSTest Stefan Lieser
Stefan Lieser Web:
Programmiervorkurs WS 2014/15 Instanzmethoden
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Vererbung Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
TDD mit MSTest Stefan Lieser Web:
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Benutzerdefinierte Tags
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Objektorientierte Programmierung (OOP)
Java Programme nur ein bisschen objektorientiert.
C++ FÜR cOMPUTERSPIELENTWICKLER
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Grundkurs Informatik 11-13
Grundkurs Informatik 11-13
 Präsentation transkript:

Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller

Testtechniken-Praktikum WS 2005/06 Andreas Höfer – Dr. Matthias Müller 2 Mockdummystub-Objekt? Ein Stub ersetzt geplante, noch nicht implementierte Funktionalität. Ein Stub ersetzt geplante, noch nicht implementierte Funktionalität. Ein Dummy-Objekt ersetzt eine echte Implementierung für Testzwecke. Ein Dummy-Objekt ersetzt eine echte Implementierung für Testzwecke. Ein Mock-Objekt ersetzt eine echte Implementierung und verifiziert korrektes Verhalten des Klienten. Ein Mock-Objekt ersetzt eine echte Implementierung und verifiziert korrektes Verhalten des Klienten. Oft wird in der Literatur nicht sauber unterschieden. Oft wird in der Literatur nicht sauber unterschieden.

Testtechniken-Praktikum WS 2005/06 Andreas Höfer – Dr. Matthias Müller 3 Vorteile von Mock- Objekten Gut zum Testen von Protokollen, der richtigen Reihenfolge von Methodenaufrufen und den dabei übergebenen Parametern Gut zum Testen von Protokollen, der richtigen Reihenfolge von Methodenaufrufen und den dabei übergebenen Parametern Reduzieren Abhängigkeiten Reduzieren Abhängigkeiten Reduzieren Wartezeiten Reduzieren Wartezeiten Kapseln/beschreiben erwartetes Verhalten Kapseln/beschreiben erwartetes Verhalten Fördern Programmierung gegen Schnittstellen Fördern Programmierung gegen Schnittstellen

Testtechniken-Praktikum WS 2005/06 Andreas Höfer – Dr. Matthias Müller 4 Indikatoren gegen das Testen mit Mock-Objekten Mock-Objekt enthält viel Logik statt fest verdrahteter Werte Mock-Objekt enthält viel Logik statt fest verdrahteter Werte Mock-Objekt dupliziert Anwendungslogik Mock-Objekt dupliziert Anwendungslogik Echte Objekte leicht(er) verwendbar Echte Objekte leicht(er) verwendbar Mock-Objekt ruft andere Mock-Objekte auf Mock-Objekt ruft andere Mock-Objekte auf

Testtechniken-Praktikum WS 2005/06 Andreas Höfer – Dr. Matthias Müller 5 Testmuster für Mock- Objekte Instanzen der Mock-Objekte erstellen Instanzen der Mock-Objekte erstellen Zustände der Mock-Objekte setzen Zustände der Mock-Objekte setzen Erwartete Werte der Mock-Objekte setzen Erwartete Werte der Mock-Objekte setzen Anwendungscode mit Mock-Objekten als Parameter aufrufen Anwendungscode mit Mock-Objekten als Parameter aufrufen Verifizieren der erwarteten Werte in den Mock- Objekten Verifizieren der erwarteten Werte in den Mock- Objekten

Testtechniken-Praktikum WS 2005/06 Andreas Höfer – Dr. Matthias Müller 6 Tank public interface Tank { public void open(); public void close(); public void refuel(double amount) throws TankOverflowException; public double getFreeCapacity(); }

Testtechniken-Praktikum WS 2005/06 Andreas Höfer – Dr. Matthias Müller 7 MockTank (1/2) public class MockTank implements Tank { private final static double FREE_CAPACITY = 1; private final static double FREE_CAPACITY = 1; private final static String EXPECTED_ORDER = "open()\ngetFreeCapacity()\nrefuel()\nclose()\n"; private final static String EXPECTED_ORDER = "open()\ngetFreeCapacity()\nrefuel()\nclose()\n"; private String order = ""; private String order = ""; public void open() { order += "open()\n"; } public void open() { order += "open()\n"; } public void close() { order += "close()\n"; } public void close() { order += "close()\n"; } public double getFreeCapacity() { public double getFreeCapacity() { order += "getFreeCapacity()\n"; order += "getFreeCapacity()\n"; return FREE_CAPACITY; } return FREE_CAPACITY; } …

Testtechniken-Praktikum WS 2005/06 Andreas Höfer – Dr. Matthias Müller 8 MockTank (2/2) public double getFreeCapacity() { order += "getFreeCapacity()\n"; return FREE_CAPACITY; } public void refuel(double amount) throws TankOverflowException { order += "refuel()\n"; Assert.assertTrue( Assert.assertTrue( "Tanker must avoid spillage.", amount <= FREE_CAPACITY); } public void verify() { Assert.assertEquals(EXPECTED_ORDER, order); }}

Testtechniken-Praktikum WS 2005/06 Andreas Höfer – Dr. Matthias Müller 9 OilTankerTest public class OilTankerTest extends TestCase { public void testCompleteRefueling() throws Exception { MockTank mock = new MockTank(); OilTanker.refuelCompletely(mock);mock.verify();}}

Testtechniken-Praktikum WS 2005/06 Andreas Höfer – Dr. Matthias Müller 10 OilTanker public class OilTanker { public static void refuelCompletely(Tank tank) throws TankOverflowException { tank.open(); double amount = tank.getFreeCapacity(); tank.refuel(amount);tank.close();}}

Testtechniken-Praktikum WS 2005/06 Andreas Höfer – Dr. Matthias Müller 11 Besucher-Entwurfsmuster KlientObjektStruktur > Besucher besucheElementA(ElementA) besucheElementB(ElementB) Besucher1 besucheElementA(ElementA) besucheElementB(ElementB) Besucher2 besucheElementA(ElementA) besucheElementB(ElementB) > Element akzeptiere(Besucher) ElementA operationA() akzeptiere(Besucher b) ElementB operationB() akzeptiere(Besucher b) b.besucheElementA(this)b.besucheElementB(this)

Testtechniken-Praktikum WS 2005/06 Andreas Höfer – Dr. Matthias Müller 12 Referenzen Johannes Link Softwaretests mit JUnit 2. Auflage, dpunkt.verlag, 2005 Johannes Link Softwaretests mit JUnit 2. Auflage, dpunkt.verlag, 2005 Tim Mackinnon, Steve Freeman, Philip Craig Endo-Testing: Unit-Testing with Mock Objects XP2000 Konferenz, 2000 Tim Mackinnon, Steve Freeman, Philip Craig Endo-Testing: Unit-Testing with Mock Objects XP2000 Konferenz, 2000 Erich Gamma et al. Design Patterns Addison-Wesley, 1995 Erich Gamma et al. Design Patterns Addison-Wesley, 1995