Wir arbeiten test-driven.
Je nachdem auf Unit-Ebene (wenn z.B. nur ein Rechen-Algorithmus aus dem Legacy Code durch einen anderen ersetzt werden soll oder für wohldefinierte Units innerhalb eines neuen Moduls) oder auch auf Ebene Modul-Integration, wenn das Modul als solches neu angebunden wird.
Automatisierte Tests auf Systemebene und Oberflächentests haben wir wieder gelassen; da ist die Cost of Ownership extrem hoch für den Benefit.
Man muss halt vorher wissen, was rauskommen soll (die BAs hassen mich wahrscheinlich, da müssen sie nämlich konkret werden), ich oder Kolleginnen schreiben die Tests und die Entwicklung programmiert dagegen an.
Und das sind im wesentlichen funktionale Tests - nicht-funktionale Anforderungen sind schwer in Tests zu gießen, zumal die auf System-Ebene oder im Bereich der User Acceptance.