D3 vs TDD Best Practices

8

Welche bietet mehr Vorteile für eine große Software, sagen wir wie Photoshop?

Auch mit TDD meine ich nicht nur Unit-Tests, weil Sie Unit-Tests auch in D3 verwenden können, nur nicht auf die gleiche Weise wie TDD.

D3: Design Driven Development

TDD: Testgetriebene Entwicklung

    
Joan Venge 28.01.2009, 17:38
quelle

4 Antworten

103

DDD = Domain Driven Design

TDD bedeutet, dass Sie vor dem Schreiben einer beliebigen Verhaltenseinheit einen Test für dieses Verhalten und nur für dieses Verhalten durchführen. Erst nachdem diese Tests fehlgeschlagen sind, implementieren Sie das Verhalten. In jeder Inkarnation, die ich gesehen habe, war TDD auf der Ebene einer Methode oder Klasse - vielleicht ein paar Klassen, die zusammenarbeiten. Das Endergebnis ist, dass Sie hoch testbaren und daher sehr locker gekoppelten Code erhalten. Letztendlich geht es bei TDD darum, Code zu erstellen, der getestet werden kann.

DDD ist eine weit abstraktere Philosophie und eine Reihe von Entwurfsmustern, die sich mit dem Entwurf eines großen, skalierbaren und wartbaren Systems befassen. Letztendlich geht es bei DDD darum, ein Code-Ökosystem zu schaffen, das implizit oder explizit wichtige Teile des Domänenwissens erfasst.

Sie sehen also, sie schließen sich nicht gegenseitig aus. So ziemlich jeder, den ich kenne, der DDD kennt, ist auch ein TDD-Enthusiast.

    
George Mauer 17.03.2009 21:41
quelle
15

TDD ist weder Bottom-Up- noch Schreiben-Tests vor dem Codieren. Bei TDD geht es darum, Tests zu verwenden, um die Entwicklung voranzutreiben, mit dem Ziel, dass der Code vor der Auslieferung getestet wird. Es beginnt mit der Sicherstellung, dass die Benutzeranforderungen in einer Form geschrieben sind, die automatisierte Benutzerabnahmetests ermöglicht. Es geht weiter durch Integration und Funktionstests bis hin zu Komponententests. Stückprüfungen bilden am Ende den Löwenanteil.

Der Grund, warum Tests zuerst geschrieben werden sollten, ist, dass wenn Sie eine Lösung für ein Problem in Betracht ziehen (entwerfen), Sie automatisch Erwartungen haben, was die Lösung tun soll. Jede Erwartung kann als Test ausgedrückt werden, also warum nicht sofort die Erwartung dokumentieren und gleichzeitig einen automatisierten Test dafür durchführen, um sicherzustellen, dass die Lösung dieses Ziel erreicht?

    
Alan Escreet 08.03.2011 14:59
quelle
11

Ich glaube auch nicht, dass sie sich gegenseitig ausschließen. Ich denke, Sie können TDD verwenden, um zu DDD zu gelangen.

    
Perry Neal 28.01.2009 17:47
quelle
0

Meiner Meinung nach entwerfen Sie das System, wenn Sie zuerst Tests (in TDD) schreiben. Wenn wir Tests nicht zuerst schreiben können, zeigt dies, dass es eine Mehrdeutigkeit in der Anforderung gibt. Wir können Story vor Test schreiben und sie als Spezifikation Test As Specification verwenden. Nach Bestehen der Tests können wir Tests als Dokument bekannt Test As Document verwenden. Wenn neue Entwickler zum Projekt hinzugefügt werden, können sie diese Tests verwenden, um das Systemgeschäft zu erlernen.

In DDD verwenden Sie einfach Story zum Erstellen von Beziehungen zwischen Objekten. Was bei DDD wichtig ist, ist, dass Sie sich nur auf die Domain konzentrieren sollten. Wenn Sie zum Beispiel Geschäftslogik für Domänen schreiben, sollten Sie sich keine Sorgen darüber machen, ob Sie Entitäten in der Datenbank speichern. Kurz gesagt, sollten Sie beim Schreiben von Geschäftslogik über nichts außerhalb der Domänen nachdenken.

    
Seyed Morteza Mousavi 10.09.2014 12:23
quelle

Tags und Links