Hach, wenn ich das Posting von jocoder lese, geht mir einer ab, ehrlich. Sowas gibt es viel zu selten.
Standarddialog:
Ralf: "Haben Sie das getestet?"
X: "Klar!"
Ralf: "Das glaube ich Ihnen nicht - Sie haben es ausprobiert, ein Test ist etwas anderes"
Zum Glück arbeite ich derzeit in einem Projekt, das der Validierungspflicht unterliegt (Arzneimittelindustrie), so dass der Kunde verpflichtet ist, jeden einzelnen Prozess nach einer Testmatrix zu testen und schriftlich abzunehmen, sonst dürfen sie ihn nicht verwenden.
Wir unterstützen den Kunden hierbei, indem wir die üblichen Geschäftsprozesse mit erweiterten Geschäftsobjekten durchlaufen, um diese Tests zu automatisieren (es handelt sich um eine komplette Eigenentwicklung, darum geht das und darum brauchen wir ECATT & Co nicht). Damit machen wir alle Integrationstests. Zum Beispiel testen wir das BRF+ Regelwerk mit einer Excel-Testmatrix, die jede mögliche Variation von Eingabewerten enthält und dem erwarteten Ergebnis gegenüberstellt. Das lesen wir in ein Testprogramm ein, das alle diese Inputs durch das Regelwerk jagt und Soll und Ist miteinander vergleicht. Also Test des gesamten Regelwerks mit drei Mausklicks. Macht das jemand kaputt, weiß man das sofort bzw. weiß zudem, in welcher Ecke man suchen soll. So müssen die das BRF+ nicht händisch durchtesten, was ein irrer Aufwand wäre, und das ist ja nur ein ganz kleiner Teil der Applikation. Und so kann man dann jederzeit nachsehen "wie lief denn der Testlauf vom 5.1.18 um 18 Uhr?".
Einen Unit Test mache ich in aller Regel schon für den Entwicklertest, um also überhaupt exemplarisch die Funktion ermitteln zu können. Der ist dann kein Unit Test der reinen Lehre nach. Aber die mache ich eben auch, wenn der Kunde sagt "keine Unit-Tests, dafür haben wir kein Geld / keine Zeit / ...."
Darüber hinaus schreibe ich dann auch "richtige" Unit-Tests, die etwas aufwendiger sind, aber dann eben auch richtig testen. Teilweise schreibe ich auch erweiterte Unit-Test, um das Zusammenspiel von Objekten zu testen (was dann auch wieder der reinen Lehre widerspricht). Im Grunde genommen muss man jede Anwendung ohne Zuhilfenahme der GUI automatisiert testen können.
Ralf