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.
Danke.
Also - ja - sehr.
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.
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 .
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.
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.
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.
Tags und Links debugging tdd integration-testing