In den letzten rund einem Jahr habe ich mein Team auf den Entwicklungsmodus "Release-Early-Release-Oft" (AKA: Rapid Application Development, nicht Agile) umgestellt. Weitere Informationen zum Schließen des Builds finden Sie in meiner Antwort hier: Eine einfache Möglichkeit, die Release-Qualität in der RAD-Umgebung zu verbessern
Als wir RAD einführten, waren die Leute ziemlich unabhängig und führten zuerst Unit-Tests durch. Die integrierten Tests fanden viel später statt. Es war ein natürlicher Prozess für sie ohne viel formelle Durchsetzung. Jetzt ist die Situation ganz anders:
Die gesamte Plattform ist gut in etablierte Builds / Releases integriert, die clientseitig ohne Hot Spots arbeiten.
Es kommen immer wieder neue Funktionsanforderungen, die wir schrittweise weiterentwickeln.
Die Gesamtdynamik des Systems ist sehr wichtig, da unabhängige Entwicklungsgruppen zwar die Prozesse richtig verfolgen, jedoch aufgrund komplizierter, nicht offensichtlicher Umstände schwerwiegende Fehler aufgetreten sind.
Viele Teile des Systems beinhalten neue Algorithmen und Forschungseingaben, so dass die Herausforderungen (und damit der Testmechanismus) nicht immer richtig vorausgesehen werden, wie z. B. das Testen von Funktionen in genau definierter Software.
Vor kurzem habe ich versucht, ein besseres Gesamtbild zu erhalten, um festzustellen, ob wir eine Prozessverbesserung benötigen. Als ich mich mit meinem Team zusammensetzte, sträubten sich viele: "Wir machen keine Unit-Tests mehr!" während andere dachten, wir sollten jetzt nicht anfangen, weil es niemals effektiv sein wird.
Sind Unit-Tests in einem relativ ausgereiften System nützlich? Sollten wir zumindest den Testumfang abhängig von der Laufzeit der Einheiten abwägen müssen? Verlangsamen Unit-Tests das Entwicklungstempo? Müssen Unit-Tests anders bewertet werden?
Was sind die Best Practices für das Testen einer ausgereiften Plattform in einer Umgebung mit häufigem Release-Early-Release?