Haben Sie TDD zum Debuggen repariert?

7

Ich weiß, dass es auf TDD viele Sachen gibt, und ich versuche auch, die Übung aufzunehmen. Aber ich frage mich, ob es eine gute Idee ist, deinen Bugfix zu beheben?

Ich dachte an die Linie, den Käfer zu finden und ihn einzuengen. Schreiben Sie einen Komponententest, um sicherzustellen, dass er nun jedes Problem, das zuvor verursacht wurde, durchläuft. Schreiben Sie mehr Komponententest für andere brechbare Bedingungen. Und schließlich schreibe Unit-Test, um den Integrationstest zu testen, da wir davor keinen Unit-Test haben. Wenn ich also einen Bug behebe, bin ich immer besorgt, dass ich versehentlich etwas kaputt machen könnte.

  1. Also ist TDD zum Debuggen geeignet auch?
  2. Oder ist es     dort andere Methode oder Ressource / Buch     das wäre nützlicher dafür     Zweck?
  3. Ich bin mehr besorgt um die         Integrationstest Teil wie ich habe         oben erwähnt. Ich suche         alles in LAMP / Axkit / Perl bezogen         Methode.

Danke.

    
melaos 21.01.2009, 09:56
quelle

8 Antworten

28
  1. Schreiben Sie einen Test, der aufgrund von fehlschlägt der Fehler.
  2. Beheben Sie den Fehler in Ihrem Code.
  3. Führen Sie den Test erneut aus.
  4. Führen Sie alle Tests erneut aus.

Also - ja - sehr.

    
DanSingerman 21.01.2009, 10:03
quelle
7

Wenn ein Tester einen Fehler findet, schreibe ich normalerweise einen Komponententest dafür. Wenn der Test erfolgreich ist, weiß ich, dass der Fehler behoben ist und in Zukunft immer wieder abgedeckt wird.

    
Gerrie Schenck 21.01.2009 10:02
quelle
6

Wenn Sie einen Fehler in Ihrem System haben, ist es in TDD gut, einen Test zu schreiben, der den Fehler entdeckt (d. h. einen roten Test, der den Fehler beweist). Wenn Sie den Fehler beheben müssen, sollte der Test schließlich grün werden. Es kann eine gute Idee sein, andere Fehler zu finden, wenn sie nahe genug sind.

Im Hinblick auf das Debugging sollte TDD verwendet werden, um Debugging-Sitzungen außerhalb des Programmierers zu nutzen. Sie können immer noch debuggen, wenn Sie keine Ahnung haben, wo ein Fehler liegt, aber es ist einfacher, einen Fehler zu lokalisieren, wenn Sie eine Regressionstest-Suite mit ausreichender Granularität haben.

Sie müssen sich jedoch daran erinnern, dass es bei TDD mehr um Komponententests und nicht über Integrationstests. Es ist nichts falsch daran, Integrationstests zu schreiben, da es sich um eine Plausibilitätsprüfung handelt, um sicherzustellen, dass Ihre Anwendung oder das getestete System funktioniert.

Ein Buch, bei dem es um das Testen mit xUnit-Frameworks geht, ist das xUnit Patterns-Buch , das allgemein genug ist, um mit jedem Einheitentest-Framework zu arbeiten (sogar für PerlUnit würde ich raten) ein Kochbuch mit interessanten Tricks, die Sie mit xUnit-Frameworks machen können.

UPDATE: Es gibt ein Kapitel über Unit-Tests in Perl bei Extreme Perl .

    
Spoike 21.01.2009 10:08
quelle
3

Die Antwort lautet: Ja. Die grundlegende Struktur dabei besteht darin, einen Testfall zu schreiben, der den Fehler simuliert und den Testfall nicht besteht. Dann beheben Sie den Fehler, der den Testfall bestehen würde.

    
Santosh S 21.01.2009 10:05
quelle
2

Ja. Natürlich wurden alle Tests, die Sie während TDD Ihrer Veröffentlichung durchgeführt haben, zu einer Regressionstest-Suite hinzugefügt. Aber im Falle eines Fehlers war diese Regressionssuite offensichtlich nicht detailliert genug.

Der erste Schritt bei der Behebung eines Fehlers besteht in der Replikation, und dieser ist TDD. Sobald Sie einen Testfall gefunden haben, der den Fehler repliziert, können Sie ihn erweitern, wenn Sie möchten (um andere offensichtliche Probleme der gleichen Klasse zu erfassen), aber ich tendiere nicht dazu, viele Erweiterungen vorzunehmen, da wir spezifische Bearbeitungszeiten für einen einzelnen Fehler beheben.

Sobald Sie eine Fehlerbehebung für diesen Fehler haben, fügen Sie den Testfall der Regressionssuite hinzu. Die Idee ist es, Testfälle für beide Releases und Bugfixes in die Regressionssuite aufzunehmen, um eine sehr gute Abdeckung zu erreichen.

    
paxdiablo 21.01.2009 10:11
quelle
1

Ich habe immer Tests vor dem eigentlichen Code geschrieben, während ich einen Fehler behob.

Auf diese Weise hatte ich das Beispiel, was ich von einem funktionierenden Code erwarten konnte - und ich konnte mich darauf konzentrieren, diesen Test (und alle anderen für die Regression) zu bestehen.

    
kender 21.01.2009 10:03
quelle
1

Ja, aber Vorsicht, wenn Sie so viele Bugs wie ich schreiben, werden Sie bald eine große Anzahl von Tests haben, um alle Bugs abzudecken, die Sie geschrieben und dann behoben haben.

Dies bedeutet, dass die Testläufe langsamer sind und die Absicht des Verhaltens durch Ihre Fehlerversuche verschleiert wird.

Sie können diese Tests logisch getrennt halten oder Ihre ursprünglichen spezifizierten Verhaltensprüfungen (Tests lesen) wiederholen, um zu sehen, ob Sie wirklich alle erwarteten Verhaltensweisen abgedeckt haben.

Ich denke, es ist wichtig, zwischen den beiden zu unterscheiden.

    
Johnno Nolan 21.01.2009 10:47
quelle
0

Ich denke, Sie würden den Fehler zunächst beheben und dann würden die Regressionstests aus TDD bestehen.

    
Kezzer 21.01.2009 09:58
quelle