Angenommen, Sie wollten Ihre Anwendung bei jeder Bereitstellung manuell testen. Wie würden Sie das machen?
Zunächst einmal könnten Sie eine Liste aller Dinge erstellen, die Sie testen möchten, damit Sie später nicht vergessen, etwas zu testen. Dann würden Sie wahrscheinlich die Schritte für jeden Test aufschreiben, um sicherzustellen, dass Sie sie jedes Mal auf die gleiche Weise durchgeführt haben. Wenn Sie nicht sicherstellen würden, dass der von Ihnen verwendete Testprozess konsistent ist, wären Ihre Ergebnisse nicht konsistent.
Nun, da Sie die Liste der Tests haben, die Sie durchführen müssen, öffnen Sie Ihren Browser, lesen Sie die Schritte des ersten Tests, führen Sie sie durch und notieren Sie sich das Ergebnis. Sie würden diesen Vorgang für jeden Test in Ihrer Liste wiederholen.
Die Anzahl der Tests, die Sie durchführen, würde mit der Zunahme Ihrer Anwendung und dem Auffinden neuer Fehler weiter zunehmen. Sie können diese Tests natürlich nur mit menschlicher Geschwindigkeit durchführen, was sie ziemlich langsam macht.
Die Ironie dabei ist, dass Sie beim mechanischen Durchlaufen einer Liste von Operationen rechnen. Du machst es einfach viel langsamer als zum Beispiel ein Computer.
Dies ist neben vielen anderen guten Gründen der Grund, warum wir Komponententests schreiben: Sie überlassen es dem Computer, das Rechnen zu erledigen, damit Sie es nicht müssen.
Ich kann eine umfassende Unit-Test-Suite schnell genug ausführen, um sie während der Entwicklung häufig zu verwenden, nicht nur einmal pro Woche vor der Bereitstellung. So kann ich Fehler schneller erkennen und Zeit und Geld sparen.
Ich kann sogar Tests schreiben, die das Verhalten des Systems vorhersagen, und dann dieses Verhalten schreiben (von dem ich bereits weiß, dass es richtig ist, weil ich es gerade getestet habe), ein Prozess, der als Test Driven Development bekannt ist.