Ein wiederkehrendes Thema, auf das ich in meiner Karriere gestoßen bin, ist, als neuer Entwickler in ein Team einzusteigen und schnell ein inhärentes Misstrauen gegenüber den vorhandenen Unit- und Integrationstestsuiten zu haben.
Während des Interviews werden Sie von der Geschäftsleitung darüber informiert, dass sie "Unit-Tests nachdrücklich unterstützen" und dies offen unterstützen. Sie tun es, aber alles an den Tests selbst ist einfach falsch. Wie die Tatsache, dass sie eine 100% ige Abdeckung beanspruchen, wenn es eine 100% ige Abdeckung für Integrationstests, aber weniger als 10% für wiederholbare Einheitentests gibt. Einige andere Probleme, die ich gefunden habe:
Keine eindeutige Angabe zwischen einem Unit-Test und einem Integrationstest. Unit- und Integrationstests werden in derselben Klasse gemischt.
Integrationstests, bei denen explizite Abhängigkeiten von sehr spezifischen dynamischen Daten in der Datenbank einer bestimmten Umgebung nicht deklariert wurden.
Nicht-transaktionale Integrationstests, im Grunde genommen Tests, die sich die Mühe machen oder nicht, nach sich selbst aufzuräumen, und manchmal manuelles "Scrubbing" der Datenbank erfordern, um den Test wiederholbar zu machen.
Kein Verspotten, und der Anwendungscode muss grundlegend überarbeitet werden, damit das Verspotten möglich ist. Mit anderen Worten: Entwerfen ohne zu prüfen.
Keine eindeutigen Namenskonventionen, um schnell einen Testnamen anzeigen und ungefähr bestimmen zu können, welche Tests durchgeführt werden.
Das soll nicht heißen, dass ALLE Tests nutzlos oder schlecht sind, ein Großteil davon ist ziemlich gut und es lohnt sich, sie zu behalten, aber manchmal scheint es, als würde man nach Gold suchen. Ich würde es absichtlich vermeiden, Tests durchzuführen, nur weil ich Angst hatte, die Datenbank für meine Black-Box-Testfälle zu vermasseln.
Dies hat mir im Wesentlichen ein inhärentes Misstrauen gegenüber Unit- und Integrationstests gegeben, die ich nicht persönlich geschrieben oder in irgendeiner Weise überprüft habe. Wenn Sie auf einer bestimmten Ebene kein Vertrauen in die Qualität Ihrer Testsuite haben, bringt dies dem Team oder dem Projekt überhaupt keinen Wert.
Was machen Sie, wenn Sie sich in dieser Situation befinden? Was ist Ihrer Meinung nach der beste Angriffsplan, um so etwas in Angriff zu nehmen?
Sollten alle Tests in einem monumentalen Aufwand über Releases hinweg überarbeitet werden? Sollten Sie einfach auf die Idee verzichten, dass dieses Legacy-Projekt eine eintägige solide Einheitentestabdeckung haben könnte?