Skip to content
IRC-CodingIRC-Coding
TestartenSoftware TestingUnit TestsIntegration TestsE2E TestsFunktionale TestsNicht-funktionale TestsRegressionstests

Testarten in der Softwareentwicklung: Übersicht und Einsatzgebiete

Übersicht der wichtigsten Testarten in der Softwareentwicklung: Unit, Integration, E2E, funktional, nicht-funktional, manuell, automatisiert und mehr.

S

schutzgeist

2 min read
Testarten in der Softwareentwicklung: Übersicht und Einsatzgebiete

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)

  1. Welche vier Teststufen gibt es typischerweise? Unit, Integration, System, Abnahme.

  2. 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.

  3. Was ist ein Regressionstest? Ein Test, der sicherstellt, dass neue Änderungen bestehende Funktionen nicht zerstört haben.

  4. Nenne eine nicht-funktionale Testart. Performance, Load, Stress, Security oder Usability Testing.

  5. 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

  1. https://iso25000.com
  2. https://martinfowler.com/testing/
  3. https://en.wikipedia.org/wiki/Software_testing
Zurück zum DEV Blog
Share:

Ähnliche Beiträge