T E S T I N G - IU-Internationale-Hochschule-Augsburg/fallstudie-thema-2-online-umfragesystem GitHub Wiki
Der Unit Test
1. Ziele des Komponententests
Überprüfung der technischen Korrektheit der Komponente gemäß ihrer Spezifikation Aufdecken von Fehlern und Defekten in der Implementierung Verifikation, dass die Komponente ihre definierten Funktionen korrekt erfüllt
2. Durchführung
Die zu testende Komponente wird aus dem Gesamtsystem herausgelöst und in einer Testumgebung isoliert getestet. Entwickler, die den Code geschrieben haben, sind oft in die Tests eingebunden. Es werden Testfälle und -daten erstellt, die die Komponente mit gültigen und ungültigen Eingaben testen. Oft werden Komponententests automatisiert als Teil eines Continuous Integration Prozesses durchgeführt.
3. Vorteile
Frühe Fehlererkennung bereits auf Komponentenebene Einfachere Fehlerdiagnose und -behebung durch Isolierung der Komponente Erhöhte Codequalität und Robustheit der Komponenten Grundlage für Regressionstests nach Codeänderungen Der Komponententest ist die unterste Stufe der Teststrategie und bildet die Basis für die späteren Integrations- und Systemtests. Eine hohe Testabdeckung auf Komponentenebene erhöht die Gesamtqualität des Softwaresystems.
Schritte des Unit Tests
1. Vorbereitung der Testumgebung
Die zu testende Komponente wird aus dem Gesamtsystem isoliert und in eine separate Testumgebung überführt. Abhängigkeiten zu anderen Komponenten werden durch Stubs (Attrappen) oder Test-Treiber ersetzt. Die Testumgebung ermöglicht die Ausführung der Komponente mit definierten Eingabedaten.
2. Erstellung der Testfälle und Testdaten
Es werden Testfälle erstellt, die verschiedene Szenarien abdecken: Gültige Eingaben innerhalb des erwarteten Bereichs Ungültige/Fehlerhafte Eingaben außerhalb des erwarteten Bereichs Grenzfälle an den Rändern des gültigen Eingabebereichs Äquivalenzklassen von Eingaben, die ähnliches Verhalten auslösen
3. Durchführung der Tests
Die vorbereiteten Testfälle werden gegen die Komponente ausgeführt. Die tatsächlichen Ausgaben der Komponente werden mit den erwarteten Ausgaben verglichen. Abweichungen werden als Defekte protokolliert.
4. Codeabdeckungsanalyse
Es wird analysiert, welche Code-Pfade durch die Tests abgedeckt wurden. Metriken wie Anweisungs-, Zweig- und Pfadüberdeckung geben Aufschluss über die Testabdeckung. Nicht abgedeckte Codebereiche werden identifiziert und weitere Testfälle erstellt.
5. Statische Codeanalyse
Der Quellcode wird statisch auf Fehler, Stilverstöße und Qualitätsmängel untersucht. Codereviews durch andere Entwickler ergänzen die automatisierte Analyse.
6. Nicht-funktionale Tests
Es werden zusätzliche Tests für nicht-funktionale Aspekte wie Leistung, Sicherheit und Zuverlässigkeit durchgeführt.
7. Testautomatisierung und Kontinuierliche Integration
Die Komponententests werden typischerweise automatisiert und in einen Continuous Integration Prozess integriert. Nach jeder Codeänderung werden alle Tests automatisch ausgeführt (Regressionstests).
Für diese Fallstudie ist das automatisierte Testen jedoch zu aufwendig, stattdessen werden die einzelnen Komponenten händisch getestet.