Post on 04-Jan-2016
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
• 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
TTD Prinzip
Danke fürIhre Aufmerksamkeit.
Jetzt gehts zu Live-demo :)