Testen von Softwaresystemen - Cheatsheet
Definition und Ziele des Softwaretestens
Definition:
Systematischer Prozess zur Evaluierung der Qualität und Funktionsweise von Software.
Details:
- Erkennen von Fehlern und Mängeln
- Sicherstellen der Erfüllung der Anforderungen
- Verbesserung der Softwarequalität
- Vermeidung von Risiken
- Validierung und Verifikation
Arten von Tests: Unit-Tests, Integrationstests, Systemtests, Abnahmetests
Definition:
Arten von Tests: Unit-Tests, Integrationstests, Systemtests, Abnahmetests
Details:
- Unit-Tests: Testen einzelner Komponenten oder Funktionen isoliert.
- Integrationstests: Überprüfung des Zusammenspiels mehrerer Komponenten.
- Systemtests: Testen des gesamten Systems in einer Umgebung, die der Produktionsumgebung ähnelt.
- Abnahmetests: Letzte Überprüfung durch den Kunden oder Endnutzer, um die Anforderungen und Erwartungen zu bestätigen.
Black-Box-Testing vs. White-Box-Testing
Definition:
Vergleich von Testverfahren: Black-Box-Testing analysiert das Systemverhalten ohne Kenntnis der internen Struktur, White-Box-Testing untersucht den inneren Code und prüft logische Abläufe.
Details:
- Black-Box-Testing: Testet externes Verhalten, spezifikationsbasiert, Fokus auf funktionale Anforderungen
- White-Box-Testing: Testet interne Logik, struktur- und codebasiert, Fokus auf Kontrollfluss und Pfadabdeckung
- Ansätze ergänzen sich für vollständige Testabdeckung
- Beispiele für Black-Box-Testing: Äquivalenzklassenanalyse, Grenzwertanalyse
- Beispiele für White-Box-Testing: Anweisungsüberdeckung, Zweigüberdeckung
Äquivalenzklassenbildung
Definition:
Definieren von Testfällen durch Gruppierung von Eingabedaten in Äquivalenzklassen, die den gleichen Fehler aufweisen würden.
Details:
- Ziel: Reduktion der Anzahlt nötiger Testfälle bei gleichzeitiger Abdeckung aller relevanten Szenarien.
- Eine Äquivalenzklasse enthält Werte, die durch gleiche Verarbeitung gleiche Ergebnisse liefern.
- Unterscheidung in: Äquivalenzklassen für gültige Eingaben und Äquivalenzklassen für ungültige Eingaben.
- Für jede Klasse wird ein repräsentativer Wert getestet.
Grenzwertanalyse
Definition:
Systematisches Testen von Eingabewerten an den Grenzen der Eingabebereiche, sinnvoll bei der Prüfung von Fehlern an den Extremwerten.
Details:
- Konzentriert sich auf Grenzwerte und Werte knapp innerhalb und außerhalb dieser Grenzen
- Effektiv für das Finden von Fehlern, die sich in Grenzbereichen manifestieren
- Beispiele: Minimal- und Maximalwerte, Null, negative Werte (falls anwendbar)
- Anwendung in Kombination mit anderen Testmethoden wie Äquivalenzklassenbildung
- Formal kann dies so ausgedrückt werden: Sei die Funktion f definiert auf dem Bereich [a, b], dann erfolgt das Testen für Werte a, a+1, b-1, b sowie für Werte knapp außerhalb dieses Bereichs wie a-1 und b+1
Vorteile und Herausforderungen der Testautomatisierung
Definition:
Testautomatisierung: Anwendung von Softwaretools zur Durchführung von Tests, um Genauigkeit und Effizienz zu steigern.
Details:
- Vorteile:
- Zeiteinsparung
- Wiederholbarkeit
- Genauigkeit
- Abdeckung
- Herausforderungen:
- Hohe Anfangsinvestition
- Wartungsaufwand
- Einschränkungen bei nicht-funktionalen Tests
- Komplexität der Tool-Integration
Agile Testing und Test Driven Development (TDD)
Definition:
Agile Testing: Testmethoden, die in Agile-Entwicklungsprojekten eingesetzt werden. TDD: Entwicklungsprozess, bei dem Tests vor dem eigentlichen Code geschrieben werden.
Details:
- Agile Testing integriert Testen kontinuierlich während des gesamten Entwicklungszyklus.
- Fokus auf Zusammenarbeit zwischen Entwicklern, Testern und Kunden.
- TDD: Zyklus von Red (Test schreiben), Green (Code implementieren), Refactor (Code verbessern).
- TDD fördert sauberen, wartbaren Code und frühzeitige Fehlererkennung.
- Vorteile: Höhere Softwarequalität, verbesserte Designentscheidungen.
- Herausforderungen: Initialer Zeitaufwand, erfordert disziplinierten Ansatz.
Erstellung und Durchführung automatisierter Tests
Definition:
Erstellung und Durchführung automatisierter Tests dienen der effizienten Überprüfung von Softwarefunktionen durch automatisierte Testskripte.
Details:
- Testautomatisierung reduziert manuellen Testaufwand und Fehleranfälligkeit.
- Durchführung mit Tools wie Selenium, JUnit, u.a.
- Schritte: Testskripterstellung, Testdatenmanagement, Testausführung, Ergebnisanalyse.
- Wiederholbarkeit und Skalierbarkeit der Tests.
- Wichtig für Continuous Integration/Continuous Deployment (CI/CD).