Frage

Lesen Sie über die Antworten auf diese Frage Nachteile von Test-Driven Development? Ich habe den Eindruck, es ist eine Menge Missverständnisse auf, was TDD ist und wie es durchgeführt werden sollte.Es kann sich als nützlich erweisen, um diese Probleme hier.

War es hilfreich?

Lösung

Ich fühle die akzeptierte Antwort war eine der schwächsten (Nachteile von Test-Driven Development?), und die meisten up-modded Antwort riecht nach jemandem, der vielleicht schreiben über bestimmte tests.

Big time investment:für die einfache Fall Sie verlieren etwa 20% der tatsächlichen Umsetzung, aber für kompliziert Fällen Sie verlieren viel mehr.

TDD ist eine Investition.Ich habe gefunden, dass, wenn ich war voll in TDD, die Zeit, die ich verloren habe, ist sehr, sehr wenig, und was habe ich zu verlieren, wurde mehr als wettgemacht, wenn es kam zu maintence Zeit.

Für komplexe Fälle Ihre Testfälle sind schwieriger zu berechnen, würde ich vorschlagen, in Fälle wie dieser zu versuchen, und verwenden Sie automatische Referenz-code, der ausgeführt wird parallel in der debug-version / test ausführen, anstatt der unit test einfachsten Fällen.

Wenn Ihr test sind immer sehr Komplex, kann es Zeit zu überprüfen Ihre design.TDD sollte Ihnen den Weg zu kleineren, weniger komplexen Einheiten von code arbeiten zusammen

Manchmal hat man das design ist nicht klar, zu Beginn und entwickelt sich wie Sie entlang gehen - das wird Sie zwingen, sich zu wiederholen-test, die erzeugt eine große Zeit verlieren.Ich würde vorschlagen, die Verschiebung von unit-tests in diesem Fall, bis Sie haben einige begreifen das design in den Sinn.

Das ist der Schlimmste Punkt, der Sie alle!TDD wirklich so sein sollte "Test Driven Design".TDD ist über das design, nicht testen.Um voll und ganz verstehen, den Wert der Vorteile von TDD, haben Sie-Spielzeug Laufwerk Ihre design von Ihre tests.So sollten Sie sein redoing Ihre Produktions-code, um Ihren tests gehen, nicht Umgekehrt, wie dieser Punkt schlägt

Nun die derzeit wohl upmodded: Nachteile von Test-Driven Development?

Wenn Sie zu dem Punkt, wo Sie haben eine große Anzahl von tests, die änderung der system erfordert möglicherweise neu schreiben, einige oder alle Ihre tests, je nachdem, welches diejenigen bekam für ungültig erklärt, der durch die änderungen.Dies könnte wiederum eine relativ schnelle änderung in ein sehr aufwändiges.

Wie die akzeptierte Antworten erste Punkt, wie es scheint, über die Spezifikation der tests und einen Allgemeinen Mangel an Verständnis für die TDD-Prozess.Wenn Sie änderungen vornehmen, starten Sie aus dem test.Ändern Sie den test, was der neue code sollte tun, und die änderung vornehmen.Wenn das ändern, bricht andere tests, dann Ihre tests zu tun, was Ihr tun soll, scheitern.Unit-Tests, für mich, sind entworfen, um zu scheitern, weshalb die ROTE Phase ist in Erster und sollte niemals übersehen werden.

Andere Tipps

IMHO Das größte Missverständnis über TDD ist, dass: verbrachte Zeit schreiben und refactoring-tests wäre verlorene Zeit. Das denken geht so: "ja, eine test-suite ist schön, aber die Funktion wäre viel schneller, wenn wir nur kodiert werden".

Wenn es richtig gemacht, Zeit verbringen, zu schreiben und pflegen von tests wird mehrmals gespeichert, über die Laufzeit des Projektes in der Zeit nicht verbrachte das Debuggen und beheben Probleme.Weil der Test Kosten wird, bis-front und die Auszahlung ist im Laufe der Zeit, es ist leicht zu übersehen.

Andere große Missverständnisse gehören zu ignorieren die Auswirkung von TDD auf die design Prozess, und erkennen nicht, dass "schmerzhafte tests" ist eine ernste code smell, dass muss repariert werden schnell.

Ich sehe eine Menge von Menschen Missverständnis, was die tests wirklich nützlich, um TDD.Menschen schreiben einen großen Akzeptanz-tests statt kleine unit-tests und dann verbringen viel zu viel Zeit mit der Pflege Ihrer tests und dann feststellt, dass TDD nicht funktioniert.Ich denke, dass die BDD-Leute haben einen Punkt in der Vermeidung der Verwendung des Wortes test völlig.

Das andere extrem ist, dass die Menschen aufhören, die Abnahme und denken, dass, weil Sie unit-Tests Ihren code getestet wird.Dies ist wieder ein Missverständnis der Funktion des Gerätes testen.Sie müssen noch Akzeptanz-tests von einige Sortieren.

Das Missverständnis, das ich oft sehe, ist, dass TDD sorgt für gute Ergebnisse.

Oft werden tests geschrieben von fehlerhaften Anforderungen, und daher haben die Entwickler produzieren ein Produkt, das nicht zu tun, was der Nutzer erwartet.- Taste, um TDD ist, meiner Meinung nach, arbeiten mit den Anwendern, um Anforderungen zu definieren, während die helfen, verwalten Sie Ihre Erwartungen.

Diese Fragen sind meiner Meinung nach durchaus umstritten und daher anfällig für Missverständnisse:

  • In meiner Erfahrung der größte Vorteil ist die Herstellung viel besser-code auf Kosten der viel Zeit verbrachte das schreiben von tests.Also es ist wirklich lohnt sich für Projekte, die erfordern eine hohe Qualität, aber auch auf einigen anderen, weniger Qualität centric Websites, die zusätzliche Zeit nicht die Mühe Wert sein.

  • Die Leute scheinen zu denken, dass nur eine wichtige Teilmenge der Funktionen müssen getestet werden, aber das ist eigentlich falsch, IMHO.Sie brauchen, um alles zu testen, um für Ihre Prüfung gültig ist, nach der Umgestaltung.

  • Der große Nachteil von TDD ist das falsche Gefühl der Sicherheit gegeben, die durch unvollständige tests:Ich habe gesehen, Seiten gehen, weil die Menschen davon ausgegangen, dass Unit-Tests war genug, um trigger eine Bereitstellung.

  • Es gibt keine Notwendigkeit, von mocking-frameworks zu tun TDD.Es ist nur ein tool für das testen von einigen Fällen in einen einfacheren Weg.Die besten unit-tests sind jedoch ausgelöst, die hoch in den Stapel und sollte Agnostiker auf die Schichten in den code.Testen eine Schicht zu einer Zeit ist bedeutungslos in diesem Zusammenhang.

Gerade spannen eine andere Antwort in den Topf.

Eines der häufigsten Missverständnisse ist, dass Ihre code fixe, ie.Ich habe diesen code nun wie auf der Erde werde ich es testen?Wenn es schwer ist, einen test schreiben, wir sollten uns die Frage stellen:wie ändere ich diesen code, um es einfacher zu testen?

Warum..?

Auch Die Art von code, die ist einfach zu testen ist:

  1. Modular - jede Methode hat eine Sache.
  2. Parametriert - jede Methode akzeptiert alles, was es braucht-und Ausgänge, alles, was es sollte.
  3. Gut Angegeben - jede Methode genau das tut, was es soll, nicht mehr, nicht weniger.

Wenn wir code schreiben, ist das testen ein Kinderspiel.Das interessante ist, dass code, der leicht zu testen ist, zufällig, besserer code.

Besser als in einfacher Lesen, leichter test, leichter verstehen, leichter debug.Dies ist der Grund, warum TDD ist oft beschrieben als eine design-übung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top