Frage

ich mit einer Gruppe von Fachleuten bin gemeinsam an einer Veranstaltung zu setzen, die Praxis der TDD, um Menschen zu helfen, zu lehren, die interessiert sind, haben aber keine Erfahrung (Anfänger).

Wir versuchen, mit Labors zu kommen, Workshops, etc. und ich versuche, die einzigen, größte Sache zu denken, dass wir auf diesen Personen vermitteln müssen sie bei der praktischen Umsetzung TDD für die Zukunft erfolgreich sein zu helfen.

Was würden Sie sagen, dass wir unsere Priorität für das Lernen machen sollte? Welcher Aspekt des Lehrens TDD ist die am wichtigsten. Wenn Sie zwei Dinge zu tun haben, das ist in Ordnung, werde ich nicht halten Sie die SINGLE Teil:)

War es hilfreich?

Lösung

Es geht um Design . Es ist nicht über die Tests.

Andere Tipps

Sie keine Schritte im Prozess überspringen. Es dauert länger in die Vornut von TDD zu bekommen, aber wenn es an seinem Platz ist das gesamte SDLC ist schneller und viel mehr fehlerfrei.

Rot - Grün - Umgestalten -> tun Sie es einfach

.

Nur weil Ihre Tests bestehen es bedeutet nicht, dass der Code korrekt ist.

Abgesehen davon, ich würde sagen, dass es wichtig ist, Tests in Ihrem Design zu berücksichtigen. Wenn Ihr Code schwer ist, ohne genaue Kenntnis der internen Umsetzung der im Test befindlichen Einheit zu testen, sollten Sie das Design zu überdenken. Andernfalls Refactoring mehr Risiko anfällig wird, weil die Tests wahrscheinlich mit dem Code geändert werden müssen.

Ich weiß nicht, ob dies als das wichtigstes, was zählen würde - aber es war etwas, das mir einige Zeit in Anspruch nahm „bekommen“, wenn ich zum ersten Mal erforschte TDD mit

.

Sie den Code in Ihrem Kopf nicht schreiben, bevor Sie den Test schreiben.

Als ich das erste TDD damit angefangen ich „wusste“, was sollte das Design sein. Ich „wusste“, was Code, den ich schreiben wollte. Also schrieb ich einen Test, den ich das Stück Code schreiben lassen würde.

Als ich das tat, war ich nicht wirklich TDD tun - da ich den Code zuerst Schreiben wurde (auch wenn der Code war nur in meinem Kopf: -)

Es dauerte einige Zeit (und einige Stossen durch geschickte folk) zu erkennen, dass Sie auf den Test konzentrieren müssen. Schreiben Sie den Test für das Verhalten Sie wollen - schreiben Sie dann den minimalen Code benötigt, um es passieren - dann lassen Sie das Design durch Refactoring entstehen. Wiederholen, bis getan.

Ich schlage vor, "etwas Geduld." Es fühlt sich komisch am Anfang. Für mich war es wahrscheinlich drei Projekte, bevor es begann natürlich zu fühlen.

Ich bin damit einverstanden mit dem, was , ist aber nur ein Indikator, Ihr Design in am Ziel.

TDD, in meinem Kopf, dreht sich alles um den Rhythmus (rot, grün, Refactoring). Erster den Rhythmus nach unten bekommt man über den „Buckel“ von „nicht immer“. Und wenn Sie Sie wahrscheinlich nicht den Rhythmus runter wird nicht sehr lange mit TDD-Stick. Das Wesen des Rhythmus Schritt Baby, das wurde bereits erwähnt. Schreiben Sie so wenig Code wie möglich, und Refactoring gnadenlos.

Eine Sache, die betonen ist, dass TDD einige kurzfristige Gewinne für langfristige diejenigen handelt. Beginnend mit TDD aus wird unweigerlich Ihre Produktivität senken. Aber sobald man den Rhythmus lernt, ist es ähnlich wie in eine Nut bekommen, und es kann tatsächlich helfen, schneller zu arbeiten. Ganz zu schweigen von der Nebenwirkung von TDD ist eine ständig wachsende Zahl von Unit-Tests, die Regressionstests bieten. Eine Zwangsläufigkeit von Software ist, dass Systeme (ohne eine Suite von automatisierten Regressionstests) gehalten wird, zersetzen sich mit der Zeit.

Betonen Sie, dass TDD ein Paradigmenwechsel für Entwickler s. Wenn Sie ein neues Team im Stehen sind, erkennt, dass es bis zu sechs Monate in Anspruch nehmen wird das Team voll wirksam wie TDD Praktiker zu erhalten. Sobald Sie ein reifes agiles Team effektiv zu üben TDD hat, wird Paarung einen neuen Entwickler ermöglichen, in die Schaukel eineine Dinge nach ein paar Iteration zu erhalten. Darüber hinaus kann durch Paare von einem Team mit einer neuen Linie auf Seed-, können Sie die neue Linie bis zu Geschwindigkeit auf TDD viel schneller als die erste Linie bekommen.

Bei den Projekten, die wir gemessen haben, haben wir einen sechsfache Rückgang der Defekte während der automatisierten Funktions / Regressionstest, sobald das Team gelernt zu tun TDD gefunden gesehen. Das ist eine signifikante Einsparungen. Darüber hinaus reflektiert der Code eine sauberere Design, mit weniger Codezeilen für jede Funktion. TDD sondern ein virtueller Anschlag Vergoldung. TDD ist am effektivsten, wenn Sie Geschichte Karten Akzeptanzkriterien haben.

TDD ermöglicht auch eine nachhaltige Tempo. Das Team wird feststellen, dass sie weiterhin die gleiche Anzahl von Funktionen mit jeder Iteration erhalten erfolgt, da der Code mit wenigen Defekten sauber bleibt. Sowohl mit TDD und automatisierte Funktions- / Regressionstests, sehen wir oft Null während User Acceptance Tests festgestellten Mängel.

Der Umgang mit dem pressue von TDD Notwasserung bei knappen Terminen bekommen. Dies ist eines der größten Probleme, kam ich habe aross Menschen und Teams mit TDD zu helfen. Sie haben ein Problem, Anspiel Tests zu höheren Management kennzeichnete die Bedeutung und den Wert zum Ausdruck fallen zu lassen.

Gehen Sie in Baby-Schritte.

Stellen Sie sicher, dass Ihre Tests decken nur einen sehr geringen Umfang und wie PhlipCPP sagt: '. Führen Sie die MINIMAL EDIT benötigt, um den Testlauf zu machen

Auch so gibt es eine Menge zu TDD, so dass Sie immer noch sicher, müssen Sie nichts verpassen werden.

Nach meiner Erfahrung mit TDD ermöglicht es mir und meinem Team gnadenlos unseren Code Refactoring, ohne sich Sorgen, dass es etwas irgendwo unerwartet brechen.

Also habe ich für mich denke, der wichtigste Aspekt von TDD ist Berichterstattung, da eine gute Abdeckung mir das Vertrauen gibt, Refactoring, wenn ich einen Platz in der Code-Basis zu sehen, dass sie verwenden können.

Betonen verschiedene Arten von Tests. Sowohl Black-Box-Tests und White-Box-Tests sind wichtig und dienen unterschiedlichen Zwecken. White-Box-Test gibt es nicht Korrektheit zu überprüfen, weil es nicht das Gesamtsystem testen. Es ist dort zu machen Code riecht sogar stinkt und damit eine bessere Refactoring Richtung liefern. Black-Box-Tests ist es Richtigkeit zu prüfen. Jede Funktion soll Black-Box getestet werden.

Auch betonen Unterschiede in der Testabdeckung. Durch kombinatorische und Wiederholbarkeit Probleme, ist es unmöglich, Test Black-Box in der Anwendung jeder Codepfad. Meine Regel ist, dass ein Merkmal nicht abgeschlossen ist, bis es schwarz-Box getestet ist. Sie sollten die Schüler ihre eigenen Regeln helfen herauszufinden. Allerdings sollten White-Box-Tests haben keine externe Klasse Abhängigkeiten; daher jede Zeile jeder Klasse sollte White-Box getestet werden.

scroll top