Gibt es einen Unterschied zwischen TDD und Test Erster Entwicklung (oder Test-First-Programmierung)?

StackOverflow https://stackoverflow.com/questions/334779

Frage

Beide Ideen mir sehr ähnlich klingen, aber es könnte feine Unterschiede oder genau die gleiche Sache, erklärt auf unterschiedliche Weise. Wie ist das Verhältnis zwischen TDD und Test-Erste-Entwicklung / Programmierung?

War es hilfreich?

Lösung

Es gibt einen Unterschied in Hinblick darauf, was der entscheidende Faktor ist.

Haben Sie eine vage Vorstellung davon, was die Klasse (oder System - das auf verschiedenen Ebenen, natürlich passieren kann) aussehen sollte, dann Tests ausdenken, die sie die tatsächliche Form geben? Das ist TDD.

Wissen Sie, genau das, was die öffentliche API der Klasse sein sollte, und schreiben Sie nur die Tests vor der Umsetzung? Das ist Test-First-Entwicklung.

Mein Stil neigt dazu, eine Mischung aus beiden zu sein. Manchmal ist es offensichtlich, was die API vor dem Schreiben irgendwelche Tests sein sollte -. In anderen Fällen Testbarkeit wirklich das Design treibt

Um es anders auszudrücken, beginnt TDD mit „Welche Fragen will ich fragen?“ während nicht-TDD (ob Test erste oder nicht) beginnt mit „Welche Antwort kann ich geben?“

Andere Tipps

Sie sind im Grunde verschiedene Namen, die gleiche Sache zu beschreiben - na ja, in der Tat fünf Namen, als der letzte D for Design stehen kann als auch für Entwicklung

.

Test Zunächst war der Begriff ursprünglich, vor allem im Zusammenhang mit den Extremen Programming, für den Test-Code-Refactoring Zyklus verwendet. Der Name Test Driven Development vorgeschlagen worden - und zwar schnell angenommen - später, um die Tatsache zu betonen, dass TFD ist - und immer war -. Eher eine Design-Strategie als eine Teststrategie

Offensichtlich heute einige Leute haben unterschiedliche Konnotationen für diese beiden Begriffe, aber das war nicht die Absicht hinter ihren existance, und ich würde sich nicht darauf verlassen allgemein bekannt ist (weil es nicht). In der Tat, würde ich eher den Begriff TFD sieht als veraltet zu werden.

Das ist eine Menge ähnlicher Begriffe wie Test-First-Programmierung, Test-First-Entwicklung, Test-Driven Development oder auch Test-Driven Design. Es ist wichtig, ein paar Punkte zu klären:

1. Test First-Programmierung (TFP)

Der Begriff Test-First-Programmierung ist ein Programmier Best Practice. Es wurde wieder eingeführt (wenn nicht geprägt) von Kent Beck in seinem Buch „Extreme Programming Explained“: „Unit-Tests vor der Programmierung schreiben und alle Tests jederzeit am Laufen halten“. Also, wenn es um Test-First-Programmierung wir über das Schreiben von automatisierten Unit-Tests durch die sehr Entwickler sprechen, die den Code schreiben, wird sich diese Tests zu erfüllen. Die Unit-Tests häufen sich und bauen eine automatisierte Regressionstestsuite, die in regelmäßigen Abständen durchgeführt werden konnte.

2. Test Driven Development (TDD)

Testgetriebene Entwicklung (TDD) ist der Name einer Methode, die von Kent Beck in seinem Buch "Test Driven Development by Example" eingeführt. Es ist ein Software-Entwicklungsprozess, ist es nicht nur um die Tests vor dem Code zu schreiben. Das ganze Buch versucht, es durch Muster zu erklären, Workflows, Kultur und so weiter. Ein wichtiger Aspekt ist die Betonung auf Refactoring.

Manche Leute benutzen die Begriffe Test-First-Entwicklung, Test-Driven Design oder Testgesteuerte Programmierung und ... Eines ist sicher: Die bewährte Methodik ist testgetriebene Entwicklung und die Programmiertechnik sind Test-First Programmierung. Der Rest ist entweder allgemein unter Bezugnahme auf die Idee, das Schreiben von Tests, bevor Code oder fälschlicherweise mit Bezug auf dem testgetriebene Entwicklung oder Test-First-Programmierung.

TDD = TFD + Refactoring.

Wenn Sie TFD tun, wenden Sie einige Refaktorierungscode allgemeineren und robuster zu machen.

Historisch Genauen: Test-First-Programmierung und Testgetriebene Entwicklung bedeuten die gleiche Sache mit einem verbesserten Namen

Im Rahmen von XP (Extreme Programming), die die Software-Entwicklungsprozess ist die Test-First-Programmierung und Testgetriebene Entwicklung populär, Test-First-Programmierung zu Testgetriebene Entwicklung umbenannt wurde und dann Test Driven Design folgende die Erkenntnis, dass Tests erste hat einen enorm positiven Einfluss auf die Software-Architektur und das Design eines Softwaresystems.

Schreiben

Dieser Einfluss auf Architektur und Design ist eine Folge von mehr oder weniger überraschend Synonyme:

  • Prüfbar
  • Die entkoppelten
  • Wiederverwendbare
  • Unabhängig Bereitstellbar
  • Unabhängig Abwickelbare
  • Unabhängig Vernünftige

Software Entitäten können nur unabhängig leicht wiederverwendet werden, getestet, eingesetzt werden, unabhängig entwickelt oder leicht mit Gründen getrennt, wenn sie entkoppelt sind. Schreiben von Tests vor der eigentlichen Implementierung ist eine fast kugelsichere Methode kontinuierliche Entkopplung zu gewährleisten.

Dieser Einfluss auf Software-Design und Architektur wurde so wichtig, neben den anderen positiven Auswirkungen, dass die Schöpfer es sich lohnt, fand es von Test-First-Programmierung zu Testgetriebene Entwicklung umbenennen.

Der Name Testgetriebene Entwicklung hilft auch, die Methode der Vermarktung besser in Bezug auf die Akzeptanz sowie Verständnis, weil der Name Testgetriebene Entwicklung besser betont die ganzheitliche Aspekte des Verfahrens als Test-First-Programmierung.

nicht historisch korrekt, aber nützliche

Während historisch nicht korrekt ist, finde ich die folgende Unterscheidung sehr nützlich:

Test-First-Programmierung ...

... ist jedes Verfahren, bei dem für die im Test befindlichen Code-Tests werden vor dem im Test befindlichen Code geschrieben.

Testgetriebene Entwicklung ...

... ist eine spezifische Untergruppe von Test-First-Programmierung, die die drei Gesetzen der Testgetriebene Entwicklung folgt, wie von Robert C. Martin beschrieben:

  
      
  1. Sie können keinen Produktionscode schreiben, bis Sie zum ersten Mal eines versagende Unit-Test geschrieben.
  2.   
  3. Sie können nicht mehr von einem Unit-Test schreiben als ausreichend ist zum Scheitern verurteilt, und nicht kompilieren versagt.
  4.   
  5. Sie können nicht mehr Produktionscode schreiben als ausreichend ist, um den derzeit fehlerhafte Einheit Test zu bestehen.   - Robert C. Martin,

    Sie sind genau das Gleiche. Beiden Referenz Schreiben von Tests zuerst, dann den Code zu schreiben, die den Test bestehen werden

TDD (Test Driven Development) ist Test First-Entwicklung / Programmierung, obwohl ich gesehen und gehört habe TDD persistent, wiederholbare Unit-Tests bedeutet, die verwendet zu schaffen (auch nach dem Code), aber wirklich bedeutet es die Tests vor dem Code geschrieben werden, sie testen.

In Test Driven Development: By Example , der Autor, Kent Beck , klar besagt, dass "Test first" (TF) ist die Regel. So TF ist das Prinzip, die TDD-Regeln. Je später ist der Prozess.

scroll top