Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Test-Driven Development
Historisch-Kulturwissenschaftliche Informationsverarbeitung Übung: Planung von Softwareprojekten Dozent: Christoph Stollwerk WS 2014/2015 Referent: Dennis Peker
2
Gliederung Was ist TDD? Ablauf Testen mit xUnit Testbeispiel
Warum TDD?
3
1. Was ist TDD? alternative Entwicklungsmethode von Computerprogrammen
erst Test, dann Produktivcode inkrementell Kerntechnik von Extreme Programming, damit Teil der agilen Softwareentwicklung
4
2. Ablauf Test wird erstellt, der scheitert
Pruduktcode wird bearbeitet, damit Test positiv ausfällt Refaktorisieren Erstellen neuer Tests
5
2. Ablauf Implementierung von neuem Code erst, wenn Test vorliegt
zu viel Code lässt nicht getestete Stellen entstehen, die beim Refaktorisieren Fehler erzeugen können Refaktorisierung: Strukturierung des Codes Ziel: Software einfach, redundanzfrei und verständlich machen Voraussetzung für neuen Test jede Aktivität lässt sich genau einer Phase zuordnen
6
2. Ablauf Prinzipien: kontinuierliche Designverbesserungen, einfaches Design und Test- First wenn Tests bereits geschrieben sind, ist Code auch testbar höchstsäuberliche strukturierte Codebasis ist erforderlich Design muss fortlaufend überarbeitet werden entwickeln, was wir brauchen, wenn wir es brauchen
7
3. Testen mit xUnit Tests häufig mit xUnit-Framework implementiert
grün = bestanden, rot = fehlgeschlagen Red-Green-Refactor- Zyklus Kent Beck (etablierte TDD in eXtreme Programming): erst neuer Code, wenn Test fehlschlägt Duplikationen müssen entfernt werden (Refaktorisierung)
8
3. Testen mit xUnit weitere Grundlagen:
eng mit Code zusammenarbeiten (develop organically) eigene Tests schreiben Entwicklungsumgebung muss schnell auf kleine Veränderungen reagieren Produkt muss aus zusammenhängenden, jedoch einfach verbundenen Komponenten bestehen, um Testen zu erleichtern
9
3. Testen mit xUnit Entwickler muss lernen effektive Unit-Tests zu schreiben: schnell ausführbar einzeln ausführbar einfach, verständlich benannt Verwendung „echter“ Daten Tests müssen Entwicklung vorantreiben
10
4. Beispiel Programm, um sich Namen von Kunden zu merken:
public class CustomerTest... public void testCustomerName() { Customer customer = new Customer("Bent Keck"); assertEquals("Bent Keck", customer.getName()); }
11
4. Beispiel lassen Klasse erst leer, damit Test fehlschlägt:
public class Customer... public Customer(String name) { } public String getName() { return null;
12
4. Beispiel junit.framework.AssertionFailedError:
Fehlermeldung: junit.framework.AssertionFailedError: expected:<Bent Keck> but was:<null> at CustomerTest.testCustomerName(CustomerTest.java:14)
13
4. Beispiel public class Customer... public String getName() {
als nächstes wird Code geschrieben, der Testfall erfüllt Testfall abgeschlossen public class Customer... public String getName() { return "Bent Keck"; }
14
4. Beispiel public class Customer...
Namen in ein eigenes Feld extrahieren: wieder grüner Balken public class Customer... private String name = "Bent Keck"; public String getName() { return name; }
15
5. Warum TDD? ermöglicht es kleine Schritte bei Entwicklung zu machen
weniger Bugs, einfachere Behebung für große Projekte geeignet schnelle Entwicklung, jeder Zyklus dauert meist wenige Minuten eigentlich keine Test- sondern Just-in-time-Designstrategie: gibt frühestmöglich Feedback, ob Design verwendbar sein wird
16
Vielen Dank!
17
Quellen entwicklung-tdd/ 04/W/3311/sectionM/case_studies/money/KentBeck_TDD_byexample.pdf
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.