Software Engeniering II

Slides:



Advertisements
Ähnliche Präsentationen
Objektorientierte Programmierung
Advertisements

der Universität Oldenburg
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Eine Testumgebung für Java
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
DI Christian Donner cd (at) donners.com
Kapselung , toString , equals , Java API
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Prof. Dr. Holger Schlingloff
Ausnahmen HS Merseburg (FH) WS 06/07.
FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Ein Beispiel in Java.
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Das Test-Framework JUnit
Das Test-Framework JUnit
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
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.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
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 6. Story Driven Modeling 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.
Wasserfallmodel Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
1 WS 2012 Software-Engineering II Aspektorientierung.
1 WS 2012 Software-Engineering II Objektorientiertes Testen.
Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
© 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.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Unit Testing Roger Boesch Technology Solution Professional Developer Tools Microsoft Schweiz GmbH blogs.msdn.com/rogerboesch © 2004 Microsoft Corporation.
Automated Software Testing
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
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:
Robuste Programme durch Ausnahmebehandlung
TDD mit MSTest Stefan Lieser Web:
Test-Driven Development
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Annette Bieniusa Sommersemester 2015
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
Grundkurs Informatik 11-13
 Präsentation transkript:

Software Engeniering II Auftrageber: Prof. Dr. Wolfgang Streng Vortrag: Kulyk Nazar

Agenda Was is Test Driven Development Vorgehensweise beim TDD Unit Tests Lebenszyklus eines Testfalls TTD Illustriert Zusammenfassung Live Demo

Test Driven Development (TTD) ist eine Entwicklungsmethode. TTD hilft besseren Code schneller zu schreiben. Klassischerweise werden Tests nach oder parallel unabhängig zum zu testenden System entwickelt. Gründe: Akuter Zeitmangel Mangelhafte Testbarkeit Faulheit bzw. mangelnde Disziplin der Programmierer Firmenpolitik verbietet Investition nicht-funktionaler Programmteile

TTD Prinzip Unit Test und Systemwide Tests White and Black Box Tests Testautomatisierung TTD Prinzip Schreibe einen kleinen Test für den nächsten zu implementierenden Funktionalitätshappen. Dieser Test sollte nicht funktionieren. Erfülle den Test mit möglichst wenig Code Räume den Code auf. Refaktoring Diese drei Schritte werden so lang wiederholt bis dem Entwickler keine sinnvollen Tests mehr einfallen. TTD ist Test First Development plus Refactoring

TTD Prinzip Unit Tests dienen zur Validierung der Korrektheit von Modulen einer Software, z.B. von einzelnen Klassen.

TTD Prinzip Unit Tests "Assert" Wie testen wir mit Unit? assertTrue(boolean condition) verifiziert, ob eine Bedingung wahr ist. assertEquals(Object expected, Object actual) verifiziert, ob zwei Objekte gleich sind. Der Vergleich der Objekte erfolgt in JUnit über die equals Methode. assertNull(Object object) verifiziert, ob eine Objektreferenz null ist. assertNotNull(Object object) verifiziert, ob eine Objektreferenz nicht null ist. assertSame(Object expected, Object actual) verifiziert, ob zwei Referenzen auf das gleiche Objekt verweisen.

TTD Prinzip Lebenszyklus eines Testfalls Das Test-Framework sucht nach Tests Test-Framework sammelt diese Testfallmethoden in einer Testsuite und führt sie voneinander isoliert aus. für jeden Testfall wird ein neues Exemplar der Testklasse erzeugt und damit eine frische Test-Fixture. die setUp Methode wird aufgerufen. einer der Test Methoden wird ausgeführt. Nach der Ausführung des Testfalls ruft das Framework die tearDown Methode. Dieser Zyklus wird vereinfacht erklärt ab Schritt 3 solange wiederholt, bis alle Testfälle jeweils einmal ausgeführt wurden.

TTD Prinzip Unit Test UML Was sind TestSuits ?

TTD Prinzip Erster Schritt: Erschtellung des Testfalls Ein Testfall für Äpfeln: public class AppleTest extends TestCase { public void testTaste() { Apple apple = new Apple (“golden”); assertEquals (“Should taste sweet”,”SWEET”, apple.getTaste()); }

TTD Prinzip Zweiter Schritt: Erschtellung der Fachklasse Nach erstem Testlauf: public class Apple { private String type; public Apple ( String type ) { this.type = type; } public String getTaste () { return “”;

TTD Prinzip Zweiter Schritt: Erschtellung der Fachklasse Test Fails Fix class: public class Apple { private String type; public Apple ( String type ) { this.type = type; } public String getTaste () { if (“golden” == type) return “SWEET”; return “”;

TTD Prinzip Dritter Schritt: Refaktorierung Anpassung von dem Testfall: Apple apple = new GoldenApple(); Implämentierung von den Klassen: public interface Apple { public String getTaste () ; } public class GoldenApple implements Apple { private static final String TASTE = “SWEET”; public String getTaste () { return TASTE;

TTD Prinzip Zusammenfassung TTD hilft besseren Code schneller zu entwickeln Debuging ist überflüssig TTD führt zu einer benutzerorientierten Programmierung TTD ist einfach zu erlernen (geringer Investitionsaufwand) Es gibt verschiedene Test Frameworks Für verschiedene Sprachen Um verschiedene Functionalitäten zu testen TTD Community - www.testdriven.com

Danke für Ihre Aufmerksamkeit. Jetzt gehts zu Live-demo :) TTD Prinzip Danke für Ihre Aufmerksamkeit. Jetzt gehts zu Live-demo :)