1 / 14

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

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.

drea
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 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

  4. 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

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

  6. 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.

  7. 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.

  8. TTD Prinzip • Unit Test UML • Was sind TestSuits ?

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

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

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

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

  13. 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

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

More Related