Testarten in der Softwareentwicklung
Softwaretests lassen sich auf viele Arten kategorisieren. Je nach Fragestellung, Phase und Ziel unterscheidet man Testarten nach Testobjekt, Teststufe, Testziel oder Ausführungsweise. Dieser Artikel gibt eine strukturierte Übersicht über die wichtigsten Testarten und zeigt, wann Du welche einsetzt.
In a Nutshell
- Testarten lassen sich nach Teststufe, Ziel und Ausführung unterscheiden.
- Die wichtigsten Teststufen sind Unit, Integration, System und Abnahmetest.
- Funktionale Tests prüfen das Was, nicht-funktionale Tests das Wie.
- Manuell und automatisiert ergänzen sich, ersetzen sich aber nicht gegenseitig.
Kategorisierung nach Teststufe
Unit Test
Prüft die kleinste testbare Einheit isoliert. Schnell, günstig und direktes Feedback.
Integration Test
Prüft das Zusammenspiel mehrerer Komponenten oder Systeme. Findet Schnittstellenfehler.
System Test
Prüft das gesamte System als Ganzes gegen die festgelegten Anforderungen.
Abnahmetest (Acceptance Test)
Prüft, ob das System aus Sicht des Auftraggebers oder Nutzers akzeptabel ist.
Kategorisierung nach Testziel
Funktionale Tests
Prüfen, ob die Software die geforderten Funktionen korrekt erfüllt.
- Unit Tests: Isolierte Funktionsprüfung.
- Integration Tests: Zusammenspiel prüfen.
- System Tests: Gesamtsystem validieren.
- Regressionstests: Sicherstellen, dass Änderungen kein Altes zerstören.
- Smoke Tests: Minimale Prüfung, ob das System grundsätzlich läuft.
Nicht-funktionale Tests
Prüfen Eigenschaften wie Performance, Sicherheit, Benutzbarkeit oder Zuverlässigkeit.
- Performance Tests: Reaktionszeit, Durchsatz, Skalierbarkeit.
- Load Tests: Verhalten unter erwarteter Last.
- Stress Tests: Verhalten unter übermäßiger Last.
- Security Tests: Sicherheitslücken identifizieren.
- Usability Tests: Benutzerfreundlichkeit prüfen.
- Accessibility Tests: Barrierefreiheit validieren.
- Reliability Tests: Zuverlässigkeit und Verfügbarkeit überprüfen.
Kategorisierung nach Ausführung
Manuelle Tests
Ein Mensch führt Tests nach einem Testfall durch. Flexibel, aber zeitaufwendig und schlecht reproduzierbar.
Automatisierte Tests
Tests werden von Werkzeugen ausgeführt. Schnell, wiederholbar und skalierbar, aber initial aufwendig.
Exploratives Testen
Tester erkunden die Software ohne vordefinierte Testfälle, um unerwartete Fehler zu finden.
Praxisbeispiel: Testarten für ein E-Commerce-System
Funktionale Tests:
- Unit Test: Preisberechnung mit Rabatt
- Integration Test: Warenkorb mit Datenbank und Zahlungs-API
- E2E Test: Kaufprozess vom Login bis zur Bestellbestätigung
- Regressionstest: Wiederholung kritischer Tests nach jedem Release
Nicht-funktionale Tests:
- Performance Test: Checkout-Aufruf unter 500 Millisekunden
- Load Test: 1.000 gleichzeitige Nutzer
- Security Test: SQL-Injection-Versuch auf Suchfeld
- Accessibility Test: Bedienbarkeit mit Screenreader
Ausführung:
- Automatisiert: Unit, Integration, E2E, Performance, Regression
- Manuell: Exploratives Testen, Usability-Tests
Vorteile und Nachteile
Vorteile
- Struktur: Klare Kategorien helfen, Teststrategien zu planen.
- Risikofokus: Jede Testart deckt unterschiedliche Risiken ab.
- Kommunikation: Stakeholder sprechen über eindeutige Begriffe.
- Effizienz: Richtige Mischung reduziert Aufwand und maximale Abdeckung.
Nachteile
- Komplexität: Viele Kategorien können überwältigend wirken.
- Überlappungen: Eine Test kann mehreren Kategorien zugeordnet werden.
- Aufwand: Umfassende Testabdeckung erfordert viele verschiedene Tests.
- Falsche Balance: Zu viel Fokus auf eine Testart lässt andere Risiken offen.
Prüfungsrelevante Stichpunkte
- Unterscheidung nach Teststufen: Unit, Integration, System, Abnahme.
- Unterscheidung nach Testziel: funktional, nicht-funktional.
- Unterscheidung nach Ausführung: manuell, automatisiert, explorativ.
- Beispiele für nicht-funktionale Tests.
- Bedeutung von Regressionstests.
Typische Prüfungsfragen (mit Kurzantwort)
-
Welche vier Teststufen gibt es typischerweise? Unit, Integration, System, Abnahme.
-
Was ist der Unterschied zwischen funktionalen und nicht-funktionalen Tests? Funktionale Tests prüfen das Verhalten, nicht-funktionale Tests prüfen Eigenschaften wie Performance oder Sicherheit.
-
Was ist ein Regressionstest? Ein Test, der sicherstellt, dass neue Änderungen bestehende Funktionen nicht zerstört haben.
-
Nenne eine nicht-funktionale Testart. Performance, Load, Stress, Security oder Usability Testing.
-
Was ist exploratives Testen? Freies Erkunden der Software ohne vordefinierte Testfälle, um Fehler zu finden.
Weiter im Software Testing Lernpfad
Der nächste Artikel im Software Testing Lernpfad behandelt Mock, Stub, Fake und Test Doubles — die verschiedenen Arten von Test Doubles und deren Einsatz.
Wichtigste Quellen
- https://iso25000.com
- https://martinfowler.com/testing/
- https://en.wikipedia.org/wiki/Software_testing



