Press enter to see results or esc to cancel.

TDD – Testgetriebene Entwicklung

Egal ob du ein kleines Projekt oder ein grosses Projekt entwickelst, ist das Testen des Codes heutzutage ein Muss. Wenn man sein Code ohne zu Testen veröffentlicht, erhält man vielleicht sofort kein Problem, aber die schlimmste Probleme sind die jenige, die man übersehen hat. Mit der TDD (Test Driven Development) respektive Testgetriebene Entwicklung wird die Wahrscheinlichkeit ein potenzielles/zukünftiges Problem verhindert. 

Was ist TDD, Testgetriebene Entwicklung? 

Kurz und bündig: Bei der Testgetriebene Entwicklung werden die Tests zuerst danach die Codes erstellt. Der Code wird anhand von diesen Tests Schritt für Schritt entwickelt. Somit werden unnötige Codes/Funktionen/Klassen vermieden. 

Testgetriebe Entwicklung TDD
Testgetriebe Entwicklung TDD, Test Driven Development

TDD nach Kent Beck

Unit-Tests und mit ihnen getestete Units werden stets parallel entwickelt. Die eigentliche Programmierung erfolgt in kleinen, wiederholten Mikroiterationen. Eine solche Iteration, die nur wenige Minuten dauern sollte, hat drei Hauptteile, die man im englischen Red-Green-Refactor nennt.

Red: Schreibe einen Test, der ein neues zu programmierendes Verhalten (Funktionalität) prüfen soll. Dabei fängt man mit dem einfachsten Beispiel an. Dieser Test wird vom vorhandenen Programmcode erst einmal nicht erfüllt, muss also fehlschlagen.
Green: Ändere den Programmcode mit möglichst wenig Aufwand ab und ergänze ihn, bis er nach dem anschliessend angestossenen Testdurchlauf alle Tests besteht.
Räume dann im Code auf (Refactoring): Entferne Wiederholungen (Code-Duplizierung), abstrahiere wo nötig, richte ihn nach den verbindlichen Code-Konventionen aus etc. Nach jeder Änderung werden die Tests ausgeführt, ihr Fehlschlag verbietet es, die offenbar fehlerhafte Änderung schon in den genutzten Code zu übernehmen. Ziel des Aufräumens ist es, den Code schlicht und verständlich zu machen.

 

Stub Objekte

Die Stub Objekte sind die Test-Dummys (externe Dateien, Json, XML usw.) Zum Beispiel wenn eine Klasse die Kunden-Daten von einer externen Schnittstelle (andere Klasse, Datenbank, externe App) benötigt, kann man mit Stub-Objekte diese benötigte Daten simulieren.

Mock Objekte

Die Mock Objekte sind die interne Codes. Damit der Projekt in der lokalen Umgebung unabhängig von externen Schnittstellen funktioniert, werden die bestehende Codes, die mit externen Schnittstellen kommunizieren, mit eigenen Test-Codes simuliert.

Vorteile von der Testgetriebene Entwicklung

  • kein ungetesteter Code, somit können Sie ruhig schlafen 🙂
  • saubere Code-Architektur durch TDD
  • keine Redundanzen durch Refactoring

Testgetriebene Entwicklung konzentiert sich meistens auf Unit-Test. Es gibt andere Arten von Testing sowie Behavior Driven Development. Aber die Grundidee aller Testing-Konzepten ist das Testing 🙂

In dem nächsten Artikel werde ich einen Unit-Test und einen Acceptance Test mit Codeception erstellen. Bis dann…

Rating: 5.0/5. From 2 votes.
Please wait...
Comments

Leave a Comment

Aziz Ozbek

WordPress Expert from Zürich

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close