Test-Driven Development

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

der Universität Oldenburg
Integrations- und Funktionstests im Rahmen des V-Modelles
Vorgehensmodell & Wasserfallmodell in der Programmierung
Phasen und ihre Workflows
mit Entwicklungsumgebungen (Eclipse) Software verbessern
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Von David Keß, Heinrich Wölk, Daniel Hauck
Das „Vorgehensmodell“
Kapselung , toString , equals , Java API
Agiles Software- Projektmanagement mit XP Dipl.-Ing. F. Papenfuß Prof. Dr. H. Pfüller Universität Rostock.
Projektplanung für Softwareprojekte
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
Beispiel: Wasserfallmodell als einfaches Phasenmodell
Prozessmodelle Inhalt Prozessmodell im Management Prozess
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Das Test-Framework JUnit
Das Test-Framework JUnit
Automatisches Testen und Bewerten von Java-Klassen
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 Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
eXtreme Programming (XP)
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Software Design Patterns Extreme Programming (XP).
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Vorgehensmodelle: Schwergewichtige Modelle
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering WS 2006 / 2007Folie 1 Agile Vorgehensweisen Hintergrund –in den letzten Jahren hat.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Testgetriebene Entwicklung (TDD)
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
IT-Projektmanagement SS 2013 Prof. Dr. Herrad Schmidt
Fachhochschule München, Projektstudium Chipkarten SS 2002 Qualitätssicherung/Tester Wozu braucht man Tester? Vorbereitung Durchführung Ergebnisse Resumée.
Projektmanagement Ziel und Umfang eines Softwareprojektes definieren
Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung 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:
Rational Unified Process
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Testvorbereitungen, Unit Test
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Unified Process Historisch-Kulturwissenschaftliche Informationsverarbeitung Übung: Planung von Softwareprojekten Dozent: Christoph Stollwerk WS 2014/2015.
Unified Modeling Language UML
Unit Testing Universität zu Köln Historisch-kulturwissenschaftliche Informationsverarbeitung Planung von Softwareprojekten WS 2014/15 Christoph Stollwerk.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Software - Testung ETIS SS05.
M adlmayr B ernhard S oftware E ngineering - WS 12 P rojektvorschlag M eilian A hmad R izal K aiser D aniel G ruppe 3 – T eam 7.
Tests mit Junit und DBUnit Warum Tests? Verhindert weitreichende Auswirkung bei großen Projekten Änderung kosten viel Geld und Zeit Führt oft zu einem.
SEMINARVORTRAG Von Jonas Robers METHODEN UND TOOLS ZUR ERFASSUNG VON TESTFÄLLEN.
C++ FÜR cOMPUTERSPIELENTWICKLER
Zwei Denkansätze zur Klasse Schlange
Ein Referat von Sabrina Vissel, darleen paul und yannick fuchs
 Präsentation transkript:

Test-Driven Development Historisch-Kulturwissenschaftliche Informationsverarbeitung Übung: Planung von Softwareprojekten Dozent: Christoph Stollwerk WS 2014/2015 Referent: Dennis Peker

Gliederung Was ist TDD? Ablauf Testen mit xUnit Testbeispiel Warum TDD?

1. Was ist TDD? alternative Entwicklungsmethode von Computerprogrammen erst Test, dann Produktivcode inkrementell Kerntechnik von Extreme Programming, damit Teil der agilen Softwareentwicklung

2. Ablauf Test wird erstellt, der scheitert Pruduktcode wird bearbeitet, damit Test positiv ausfällt Refaktorisieren Erstellen neuer Tests

2. Ablauf Implementierung von neuem Code erst, wenn Test vorliegt zu viel Code lässt nicht getestete Stellen entstehen, die beim Refaktorisieren Fehler erzeugen können Refaktorisierung: Strukturierung des Codes Ziel: Software einfach, redundanzfrei und verständlich machen  Voraussetzung für neuen Test jede Aktivität lässt sich genau einer Phase zuordnen

2. Ablauf Prinzipien: kontinuierliche Designverbesserungen, einfaches Design und Test- First wenn Tests bereits geschrieben sind, ist Code auch testbar höchstsäuberliche strukturierte Codebasis ist erforderlich  Design muss fortlaufend überarbeitet werden  entwickeln, was wir brauchen, wenn wir es brauchen

3. Testen mit xUnit Tests häufig mit xUnit-Framework implementiert grün = bestanden, rot = fehlgeschlagen  Red-Green-Refactor- Zyklus Kent Beck (etablierte TDD in eXtreme Programming): erst neuer Code, wenn Test fehlschlägt Duplikationen müssen entfernt werden (Refaktorisierung)

3. Testen mit xUnit weitere Grundlagen: eng mit Code zusammenarbeiten (develop organically) eigene Tests schreiben Entwicklungsumgebung muss schnell auf kleine Veränderungen reagieren Produkt muss aus zusammenhängenden, jedoch einfach verbundenen Komponenten bestehen, um Testen zu erleichtern

3. Testen mit xUnit Entwickler muss lernen effektive Unit-Tests zu schreiben: schnell ausführbar einzeln ausführbar einfach, verständlich benannt Verwendung „echter“ Daten Tests müssen Entwicklung vorantreiben

4. Beispiel Programm, um sich Namen von Kunden zu merken: public class CustomerTest... public void testCustomerName() { Customer customer = new Customer("Bent Keck"); assertEquals("Bent Keck", customer.getName()); }

4. Beispiel lassen Klasse erst leer, damit Test fehlschlägt: public class Customer... public Customer(String name) { } public String getName() { return null;

4. Beispiel junit.framework.AssertionFailedError: Fehlermeldung: junit.framework.AssertionFailedError: expected:<Bent Keck> but was:<null> at CustomerTest.testCustomerName(CustomerTest.java:14)

4. Beispiel public class Customer... public String getName() { als nächstes wird Code geschrieben, der Testfall erfüllt  Testfall abgeschlossen public class Customer... public String getName() { return "Bent Keck"; }

4. Beispiel public class Customer... Namen in ein eigenes Feld extrahieren:  wieder grüner Balken public class Customer... private String name = "Bent Keck"; public String getName() { return name; }

5. Warum TDD? ermöglicht es kleine Schritte bei Entwicklung zu machen weniger Bugs, einfachere Behebung für große Projekte geeignet schnelle Entwicklung, jeder Zyklus dauert meist wenige Minuten eigentlich keine Test- sondern Just-in-time-Designstrategie:  gibt frühestmöglich Feedback, ob Design verwendbar sein wird

Vielen Dank!

Quellen http://www.it-agile.de/wissen/praktiken/agiles-testen/testgetriebene- entwicklung-tdd/ http://www.frankwestphal.de/TestgetriebeneEntwicklung.html http://agiledata.org/essays/tdd.html http://www.eecs.yorku.ca/course_archive/2003- 04/W/3311/sectionM/case_studies/money/KentBeck_TDD_byexample.pdf