Ich arbeite an einem Legacy-System (damit meine ich, dass es ohne Tests geschrieben wurde). Wir haben versucht, einen Teil des Systems zu testen, indem wir Integrationstests geschrieben haben, die die Funktionalität von außen testen.
Dies gibt mir ein gewisses Vertrauen, Teile des Codes umzugestalten, ohne dass ich mir Sorgen machen muss, dass er kaputt geht. Das Problem ist jedoch, dass diese Integrationstests eine Bereitstellung (mehr als 2 Minuten) und viele Minuten benötigen, um ausgeführt zu werden. Sie sind auch ein Schmerz zu pflegen. Sie decken jeweils Tausende von Codezeilen ab, und wenn eine von ihnen unterbrochen wird, kann das Debuggen des Grunds Stunden dauern.
Ich habe viele Komponententests für diese Funktionsänderungen geschrieben, die ich in letzter Zeit vorgenommen habe, aber bevor ich mich dazu entscheide, führe ich immer eine neue Bereitstellung durch und führe alle Integrationstests aus, um sicherzustellen, dass ich nichts verpasst habe. Zu diesem Zeitpunkt kenne ich meine Komponententests und einige der Integrationstests überlappen sich mit dem, was sie testen.
Woher weiß ich, dass meine guten Komponententests einen schlechten Integrationstest ausreichend abdecken, damit ich diesen Integrationstest löschen kann?
quelle
Unit-Tests sind nicht das Allerheiligste, sondern nur ein Werkzeug von vielen, das zum Testen einer Codebasis verwendet werden sollte. Aus diesem Grund sollte keine Anzahl von Komponententests als sicher angesehen werden, um andere Tests zu ersetzen. Wenn Sie einen schlechten Integrationstest haben, sollten Sie daran arbeiten, ihn zu einem guten Integrationstest zu machen. Ersetzen Sie ihn nicht durch etwas anderes, sondern ersetzen Sie Ihre Haustür durch einen Begrenzungszaun und ein Tor.
quelle