Außerdem, wenn eine Software alle Tests besteht, heißt das noch lange nicht, dass die Software das macht, was der Kunde erwartet.
Doch. Genau dafür sind Unittests gemacht: Sie implementieren die Spezifikation und prüfen anhand der Assertions, ob diese eingehalten wird. Es ist Sache der Spec, die Erwartungen der Kunden korrekt zu formulieren.
Ne. Nersgatt hat schon recht:
Unit-Tests testen nur die kleinste Einheit.
Ich kann komplett Bugfreie Units schreiben, die 100% meines Codes abdecken.
Dann kann ich die aber so falsch zusammenstöpseln das kein einziger Integration-Test glückt.
Ich kann die aber auch korrekt zusammenstöpseln, das die Intgeration Tests funktionieren.
Das ich eine Zahl korrekt am UI eingebe, durch das Business Layer schiebe und in die
DB bringe heisst aber auch noch lange nicht, das das auch die Funktionalen Tests erfüllt.
Wenn die Funktionalen Tests erfolgreich sind, muss die komplett-Anwendung aber immer noch nicht laufen. Hier muss ich erst die Acceptance-Tests berücksichtigen und zum laufen bringen.
Wie man sieht ist Testing eine - im wortwörtlichen Sinne - vielschichtige Angelegenheit.