Es scheint, als ob das Schreiben von Tests zusätzliche Arbeit ist, den Leuten eine Krücke gibt, wenn sie den richtigen Code schreiben, und möglicherweise nicht sehr oft effektiv ist.
Unit Testing hat als Krücke Wert. Es unterstützt Ihre Entwicklungsbemühungen und ermöglicht es Ihnen, Ihre Implementierung zu ändern, ohne befürchten zu müssen, dass Ihre Anwendung nicht mehr wie erforderlich funktioniert. Unit-Tests sind auch viel mehr als eine Krücke, denn sie bieten Ihnen ein Werkzeug, mit dem Sie überprüfen können, ob Ihre Implementierung den Anforderungen entspricht.
Alle Tests, ob Unit-Tests, Abnahmetests, Integrationstests usw., sind nur so effektiv wie die Personen, die sie verwenden. Wenn Sie sich mühsam Ihrer Arbeit nähern, werden Ihre Tests mühsam und Ihre Implementierung wird Probleme haben. Wieso sich die Mühe machen? Sie machen sich die Mühe zu testen, weil Sie sich und Ihren Kunden beweisen müssen, dass Ihre Software funktioniert, und keine Probleme haben, die die Verwendung der Software verhindern könnten. Ja, Tests sind definitiv zusätzliche Arbeit, aber wie Sie testen, wird bestimmen, wie viel Aufwand Sie für die Behebung von Fehlern nach der Veröffentlichung benötigen und wie viel Aufwand Ihr Code für Änderungen und Wartung erfordert.
Ich verstehe, wie Unit-Tests funktionieren und wie man sie schreibt, aber kann irgendjemand den Fall vertreten, dass es wirklich eine gute Idee ist und sich die Mühe und Zeit lohnt?
TDD und jede Methode, bei der Sie Tests schreiben müssen, bevor Sie Code schreiben, verwendet den Ansatz, den Sie frühzeitig als Anzahlung für zukünftige technische Schulden einsetzen. Während Sie das Projekt abarbeiten, wird alles, was übersehen wird oder nicht gut umgesetzt wird, eine größere technische Verschuldung in Form eines erhöhten Wartungsaufwands verursachen, was sich direkt auf die zukünftigen Kosten und die Ressourcenanforderungen auswirkt. Das Testen im Voraus stellt sicher, dass Sie nicht nur Anstrengungen unternommen haben, um zukünftige technische Schulden zu beheben, sondern auch, dass Sie Ihre Anforderungen so codieren, dass sie einfach durch Ausführen Ihres Codes überprüft werden können. Mit Test first haben Sie auch die Möglichkeit, Ihr Verständnis der Problemdomäne zu überprüfen, bevor Sie sich zur Lösung des Problems im Code verpflichten, und Ihre Implementierungsbemühungen zu überprüfen.
Es kommt wirklich darauf an, den Geschäftswert Ihres Codes zu maximieren. Code, der weitgehend ungetestet und schwer zu warten ist, ist im Allgemeinen billig und schnell zu erstellen und über die Lebensdauer des Produkts nach der Veröffentlichung sehr kostspielig zu warten. Die Erstellung von Code, der gründlich auf Geräteebene getestet wurde, ist in der Regel teurer, die Wartung über die gesamte Lebensdauer des Produkts nach der Veröffentlichung jedoch vergleichsweise kostengünstig.
Gibt es auch irgendetwas, das TDD besonders gut für SCRUM macht?
TDD eignet sich nicht speziell für eine bestimmte Methodik. Es ist einfach ein Werkzeug. Eine Praxis, die Sie in Ihre Entwicklungsprozesse integrieren können, um Ihre spezifischen Ergebnisse zu erzielen. Um Ihre Frage zu beantworten, ist TDD eine Ergänzung zu Ihrer Methode, sei es SCRUM oder ein anderer Ansatz.