140 likes | 294 Views
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.
E N D
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