Test Driven Development Code Order

8

Ich entwickle mein erstes Projekt mit testgetriebener Entwicklung. Ich benutze Zend Framework und PHPUnit.

Derzeit ist mein Projekt zu 100% von Code abgedeckt, aber ich bin nicht sicher, ob ich verstehe, in welcher Reihenfolge ich meinen Code schreiben soll.

Soll ich meinen Test ZUERST mit dem schreiben, was von meinen Objekten erwartet wird, oder meine Objekte schreiben und sie dann testen?

Ich habe daran gearbeitet, einen Controller / ein Modell fertigzustellen und dann einen Test dafür zu schreiben, bin mir aber nicht sicher, ob es sich bei TDD darum handelt.

Irgendein Rat?

Zum Beispiel habe ich mein Auth-Plugin und meinen Auth-Controller geschrieben und getestet, ob sie in meinem Browser ordnungsgemäß funktionieren. Dann setzte ich mich hin, um die Tests für sie zu schreiben, die bewiesen, dass der Code, der im Browser funktionierte, einige logische Fehler aufwies.

Bobby Kostadinov
quelle

Antworten:

20

Zuerst testen. TDD wird auch als "Test-First-Entwicklung" bezeichnet.

Was Sie gearbeitet haben, ist nicht TDD.

TDD ist 1-2-3:

  1. Schreiben Sie einen fehlgeschlagenen Test.
  2. Lass es passieren (während des Weges Sünden und Abkürzungen begehen).
  3. Entfernen Sie Duplikate (logisch, nicht nur physisch).

In kürzeren Worten wird dies auch als "Lass es scheitern / lass es funktionieren / mach es richtig" beworben.

Mehr in Kent Becks großartigem Buch Test-Driven Development By Example.

herby
quelle
11
+1 Diese drei Schritte werden auch als "Rot-Grün-Refaktor" bezeichnet.
Fenton
2
Pass machen heißt: Schreibe nur so viel Code, dass es passt, nicht mehr! Das ist ziemlich wichtig.
Ollins
2
Es verwendet werden Test-First - Entwicklung genannt, aber das ist irreführend: Es geht nicht darum , zuerst die Tests zu schreiben, es geht um Ihre Tests lassen das Design und die Entwicklung treiben. Das erste Schreiben Ihrer Tests ist einfach eine Voraussetzung dafür - wie können Ihre Tests Sie antreiben, wenn sie noch nicht existieren? Aber Sie können Ihre Tests zuerst schreiben und sich trotzdem nicht von ihnen fahren lassen, und dann machen Sie kein TDD.
Jörg W Mittag
3
@deltree ähm ... Ich bin nicht einverstanden mit jeder Aussage, die Sie gemacht haben!
Froome
2
außer "Code Coverage! = TDD": p
Froome