Softwaretests: von Unit-Test bis Abnahme
Kurzantwort
Softwaretests prüfen, ob ein Programm das tut, was es soll. Man unterscheidet Teststufen vom Modul- über den Integrations- und Systemtest bis zum Abnahmetest durch den Kunden. Beim Vorgehen trennt man Black-Box-Tests, die nur Eingabe und Ausgabe betrachten, von White-Box-Tests, die den inneren Code berücksichtigen. Je früher ein Fehler gefunden wird, desto billiger ist seine Behebung.
Teil des Lernpfads Programmieren und Softwareentwicklung · Schritt 14 von 18
„Läuft bei mir" ist kein Qualitätsnachweis. Software, die in Produktion Fehler zeigt, kostet Geld, Vertrauen und Nerven – und je später ein Fehler auffällt, desto teurer wird er. Deshalb ist Testen kein lästiger Anhang der Entwicklung, sondern ein eigener, planbarer Teil davon.
Warum wird getestet?
Testen soll Fehler finden, bevor der Kunde sie findet. Ein wichtiger Grundsatz dahinter:
Dazu kommt die Zehnerregel: Die Kosten, einen Fehler zu beheben, steigen mit jeder Phase, in der er unentdeckt bleibt, ungefähr um das Zehnfache. Ein Fehler im Konzept ist billig, derselbe Fehler beim Kunden ist teuer.
Die Teststufen
Getestet wird von klein nach groß – das entspricht der rechten Seite des V-Modells:
| Stufe | Was wird geprüft | Beispiel |
|---|---|---|
| Modultest (Unit) | einzelne Funktion isoliert | Rechnet berechneRabatt() korrekt? |
| Integrationstest | Zusammenspiel der Module | Passen Warenkorb und Rabatt zusammen? |
| Systemtest | das Gesamtsystem | Funktioniert der ganze Bestellablauf? |
| Abnahmetest | Kunde prüft gegen Anforderung | Erfüllt es das Pflichtenheft? |
Black-Box gegen White-Box
Zwei grundsätzliche Sichtweisen auf einen Test:
Der wichtigste Trick: Grenzwerte
Automatisieren, was sich wiederholt
Selbstkontrolle
Selbstkontrolle
Eine Eingabemaske akzeptiert ein Alter ab 18 Jahren. Welche Testwerte sind nach der Grenzwertanalyse am sinnvollsten?
Häufige Fragen
Was ist der Unterschied zwischen Verifikation und Validierung?
Verifikation fragt: Haben wir das Produkt richtig gebaut, also entspricht es der Spezifikation? Validierung fragt: Haben wir das richtige Produkt gebaut, also erfüllt es den tatsächlichen Bedarf des Kunden? Ein Programm kann fehlerfrei die Spezifikation erfüllen und trotzdem am Bedarf vorbeigehen – dann ist es verifiziert, aber nicht validiert.
Was ist eine Regression?
Ein Fehler, der in einer Funktion auftaucht, die vorher nachweislich lief, ausgelöst durch eine Änderung an anderer Stelle. Regressionstests sind Tests, die man nach jeder Änderung erneut laufen lässt, um genau das zu bemerken. Deshalb lohnt es sich, sie zu automatisieren.
Wer führt den Abnahmetest durch?
Der Kunde oder Auftraggeber, nicht das Entwicklungsteam. Geprüft wird gegen die vereinbarten Anforderungen aus dem Pflichtenheft. Erst wenn der Abnahmetest bestanden ist, gilt die Leistung als erbracht – deshalb ist er auch rechtlich und für die Abrechnung bedeutsam.
Muss man 100 Prozent des Codes testen?
Vollständige Testabdeckung ist bei realer Software weder erreichbar noch wirtschaftlich, weil die Zahl möglicher Eingabekombinationen praktisch unbegrenzt ist. Ziel ist eine sinnvolle Abdeckung der wichtigen und riskanten Teile. Kennzahlen wie die Zweigüberdeckung helfen einzuschätzen, wie gründlich getestet wurde, ohne Vollständigkeit vorzutäuschen.
Weiterlesen: Fehlerbehandlung mit Exceptions · UML-Grundlagen: Klassendiagramm und Use Cases · Wasserfall vs. Scrum: Unterschied erklärt
Das Wichtigste in Kürze
- Testen zeigt die Anwesenheit von Fehlern, beweist nie Fehlerfreiheit.
- Zehnerregel: Je später ein Fehler gefunden wird, desto teurer.
- Teststufen: Modul → Integration → System → Abnahme.
- Black-Box prüft Ein-/Ausgabe, White-Box kennt den Code und dessen Pfade.
- Grenzwertanalyse: an den Rändern testen – dort stecken die meisten Fehler.