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

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

  • Upload
    drea

  • View
    48

  • Download
    2

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

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

Software Engeniering II

Auftrageber: Prof. Dr. Wolfgang Streng

Vortrag: Kulyk Nazar

Page 2: 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

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

• 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

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

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

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

TTD Prinzip

• Unit Tests– dienen zur Validierung der Korrektheit von Modulen einer

Software, z.B. von einzelnen Klassen.

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

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.

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

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.

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

TTD Prinzip

• Unit Test UML

• Was sind TestSuits ?

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

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());}

}

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

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 “”; }

}

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

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 “”; }

}

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

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; }

}

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

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

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

TTD Prinzip

Danke fürIhre Aufmerksamkeit.

Jetzt gehts zu Live-demo :)