Frage

Wenn tun TDD , wie Sie sagen, „das ist genug Tests für diese Klasse / Merkmal“ ?

d. wenn könnten Sie sagen, dass Sie alle Grenzfälle abgeschlossen testen?

War es hilfreich?

Lösung

Mit Test Driven Development, werden Sie einen Test schreiben, bevor Sie den Code testet schreiben. Sobald Sie den Code geschrieben sind und der Test bestanden wird, dann ist es Zeit, einen weiteren Test zu schreiben. Wenn Sie TDD richtig folgen, haben Sie genug Tests geschrieben, wenn Sie Code tut alles, was erforderlich ist.

Wie für Grenzfälle, lassen Sie sich ein Beispiel nehmen, wie beispielsweise einen Parameter in einer Methode zu validieren. Bevor Sie den Parameter auf Sie Code hinzufügen, erstellen Sie Tests, die der Code überprüfen wird jeden Fall richtig handhaben. Dann können Sie die Parameter und die zugehörige Logik hinzufügen und sicherstellen, übergeben die Tests. Wenn Sie mehr Grenzfälle ausdenken, dann weitere Tests hinzugefügt werden können.

Mit dem es einen Schritt zu einer Zeit, Sie müssen nicht über Grenzfälle kümmern, wenn Sie Ihren Code schreiben fertig sind, weil Sie bereits die Tests geschrieben haben, werden für sie alle. Natürlich gibt es immer menschliche Fehler, und Sie können etwas vermissen ... Wenn diese Situation eintritt, ist es Zeit, einen anderen Test und dann beheben Sie den Code hinzuzufügen.

Andere Tipps

Kent Becks Rat ist, Tests zu schreiben, bis die Angst in Langeweile verwandelt. Das heißt, bis Sie nicht mehr Angst haben, dass etwas bricht, vorausgesetzt, Sie sind mit einem angemessenen Maß an Angst beginnen.

Auf einer bestimmten Ebene, es ist ein Bauchgefühl von

  

"Bin ich zuversichtlich, dass die Tests alle Probleme fangen ich denken kann,   jetzt? "

Auf einer anderen Ebene Sie haben bereits eine Reihe von Benutzern oder Systemanforderungen, die erfüllt werden müssen, so könnte man es stoppen.

Während ich abdeckenden Code zu tun, mir zu sagen, wenn ich nicht meinem TDD-Prozess folgen und der Code zu finden, die entfernt werden können, würde ich nicht Code-Coverage als nützliche Art und Weise zählt zu wissen, wann man aufhören muss. Ihre Code-Abdeckung 100% sein könnte, aber wenn Sie eine Anforderung nicht mit einberechnet, na ja, dann bist du nicht wirklich getan, Sie sind.

Vielleicht ein Missverständnis über TDD ist, dass Sie wissen müssen, um alles vorne zu testen. Dies ist falsch, weil die Tests, die von dem TDD-Verfahren führen wie ein Brotkrumen sind. Sie wissen, was in der Vergangenheit getestet wurde, und Sie können in einem Ausmaß führen, aber es wird Ihnen nicht sagen, was als nächstes zu tun.

Ich denke, TDD gedacht als einen evolutionären Prozess werden könnte. Das heißt, beginnen Sie mit Ihrem ursprünglichen Entwurf und es wird festgelegt von Tests. Wie Sie den Code in der Produktion zerschlagen wird, können Sie mehr Tests und Code hinzufügen, passieren diese Tests macht. Jedes Mal, wenn Sie einen Test hier hinzufügen, und einen Test gibt, sind Sie auch TDD tun, und es kostet nicht allzu viel. Sie wusste nicht, diese Fälle existiert, wenn Sie Ihre erste Reihe von Tests geschrieben, aber Sie das Wissen jetzt gewonnen, und können an der Knopfdruck für diese Probleme überprüfen. Das ist die große Leistung von TDD, und ein Grund, warum ich es so sehr befürworten.

Nun, wenn Sie nicht von irgendwelchen mehr Fehlerfälle denken, die nicht wie beabsichtigt funktioniert.

Ein Teil des TDD ist eine Liste der Dinge zu halten Sie, und Probleme mit Ihrer aktuellen Implementierung implementieren möchten ... so, wenn die Liste leer ist, werden Sie im Wesentlichen getan ....

Und denken Sie daran, können Sie immer zurück und fügen Sie Tests, wenn Sie Fehler oder neue Probleme bei der Umsetzung zu entdecken.

, dass der gesunde Menschenverstand, es gibt keine perfekte Antwort. TDD Ziel ist die Angst zu entfernen, wenn Sie sich sicher fühlen Sie getestet es gut genug, um weitergehen ...

Nur nicht vergessen, dass, wenn Sie einen Fehler später zu finden, einen Test schreiben, zuerst den Fehler zu reproduzieren, es dann korrigieren, so dass Sie zukünftige Änderung verhindern, dass es erneut zu brechen!

Einige Leute beschweren sich, wenn sie nicht X Prozent der Berichterstattung haben .... einige Tests sind nutzlos, und 100% Abdeckung bedeutet nicht, dass Sie alles testen, die Ihren Code Pause machen können, nur die Tatsache, dass es für die brechen werde nicht Art und Weise der Sie es!

Ein Test ist eine Möglichkeit, genau zu beschreiben etwas, was Sie wollen. Hinzufügen eines Test erweitert die Anwendungsbereich von dem, was Sie wollen, oder fügt Details von dem, was Sie wollen.

Wenn Sie an nichts mehr denken können, dass Sie möchten, oder jede Verfeinerungen zu dem, was Sie wollen, dann fahren Sie mit etwas anderes. Sie können später jederzeit wieder kommen.

Tests in TDD sind etwa für die Beschreibung: , in der Tat können sie ein Ersatz für eine Spezifikation sein. In TDD sind Tests nicht über den Code abdeckt. Sie sorgen dafür, der Code die Spezifikation umfasst, da der Code ein Test fehlschlagen, wenn es nicht die Spezifikation abdeckt. Jeder zusätzlicher Code, den Sie haben keine Rolle.

Damit Sie genug Tests haben, wenn die Tests schauen, wie sie alle Erwartungen beschreiben, die Sie oder die Akteure haben.

vielleicht habe ich etwas irgendwo in der Agile / XP Welt, aber mein Verständnis des Prozesses war, dass der Entwickler und der Kunde die Tests als Teil der Funktion angeben . Diese Testfälle ermöglicht eine formale Anforderungen Dokumentation zu ersetzen, hilft dabei, die Anwendungsfälle für die Funktion zu identifizieren, etc. So können Sie fertig sind Testen und Codierung, wenn alle diese Tests bestanden ... plus noch mehr Kante Fälle, die Sie denken, die auf dem Weg

Alberto Savoia sagt , dass „, wenn alle Tests bestehen, sind die Chancen, dass Ihr Test nicht gut genug “. Ich denke, dass es ein guter Weg, um Tests zu denken: fragen, ob Sie Rand Fällen tun, einige unerwartete Parameter übergeben und so weiter. Ein guter Weg, um die Qualität Ihrer Tests zu verbessern, ist mit einem Paar arbeiten - speziell ein Tester - und Hilfe über mehr Testfälle bekommen. Paar mit Tester ist gut, weil sie eine andere Sicht haben.

Natürlich könnten Sie ein Tool verwenden Mutationstests zu tun und mehr Vertrauen bekommen von Ihre Tests. Ich habe Jester verwendet und es verbessert sowohl meine Tests und die Art und Weise, dass ich sie schreibe. Betrachten wir so etwas wie es zu benutzen.

Mit freundlichen Grüßen

Theoretisch sollten Sie alle möglichen Eingangskombinationen abdecken und testen, dass die Ausgabe korrekt ist, aber manchmal ist es einfach nicht wert.

Viele der anderen Kommentare haben den Nagel auf den Kopf getroffen. Fühlen Sie sich sicher über den Code, den Sie Ihre Testabdeckung gegeben geschrieben haben? Wie Sie den Code Ihre Tests entwickelt immer noch ausreichend es decken? Sie Ihre Tests das gewünschte Verhalten und Funktionalität für die zu testende Komponente erfassen?

Es muss ein Mittelweg sein. Wie Sie mehr und mehr Testfälle Ihre Tests hinzufügen können spröde als das geworden, was kontinuierlich eine Kante Fall betrachtet ändert. Im Anschluss an viele der früheren Vorschläge kann es sehr hilfreich sein, um alles zu bekommen Sie von vorne denken und dann das Hinzufügen neuer Tests, da die Software wächst. Diese Art von organischen wachsen können Ihre Tests wachsen ohne den ganzen Aufwand vorne helfen.

Ich werde nicht lügen, aber ich habe oft faul, wenn zusätzliche Tests schreiben zurück. Ich könnte diese Eigenschaft vermisst, die 0-Code oder den Standard-Konstruktor enthält, die mich nicht interessieren. Manchmal nicht, können Sie völlig anal über den Prozess zu sein sparen Zeit n Bereiche, die weniger sind dann entscheidend (die 100% Code-Coverage-Mythos).

Sie müssen bedenken, dass das Endziel ein erstklassiges Produkt aus der Tür zu bekommen und selbst Tests nicht zu töten. Wenn Sie das Bauchgefühl, wie Sie etwas vermissen, dann stehen die Chancen, Sie haben und dass Sie weitere Tests hinzufügen müssen.

Viel Glück und glücklich Codierung.

Sie können immer ein Testabdeckung Tool wie EMMA verwenden ( http://emma.sourceforge.net/) oder seine Eclipse-Plugin EclEmma ( http://www.eclemma.org/ ) oder dergleichen. Einige Entwickler glauben, dass 100% der Testabdeckung ist ein lohnendes Ziel; andere nicht einverstanden sind.

Versuchen Sie einfach, mit jeder Art und Weise im Rahmen des Zumutbaren zu kommen, dass Sie etwas versagen führen könnten. Null-Werte, Werte außerhalb des Bereichs, etc. Wenn Sie mit etwas nicht so leicht kommen kann, nur um etwas anderes weiter auf.

Wenn die Straße hinunter Sie jemals einen neuen Bug finden oder einen Weg gefunden, fügen Sie den Test.

Es geht nicht um Code Coverage. Das ist eine gefährliche Metrik, weil Code „gedeckt“ ist, lange bevor es „getestet gut“ ist.

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