Die Integration von Softwarekomponenten ist ein kritischer Schritt in der Entwicklung von Anwendungen. Um die reibungslose Funktion und die Zuverlässigkeit sicherzustellen, ist ein umfassendes Integration Testing unerlässlich. Diese Dokumentation beschreibt die Testumgebung, die Schwerpunkte und die Testfälle für das Integration Testing der LB2-Anwendung.
Die Software, die wir testen, ist aus dem bereits absolvierten Modul 322. Es ist eine Applikation, bei der man seine Schulnoten eintragen und verwalten kann. Folgend die Software- und Hardwarekonfiguration.
Kategorie | Konfiguration |
Software Konfiguration | |
Reverse Proxy | Nginx |
Container Management | Portainer EE |
Base Docker Image | eclipse-temurin:17-jre |
Datenbank | MongoDB |
Frameworks | JPA, Junit, lombok, Spring Rest |
OS | Debian 12 (bookworm) |
Wireguard | VPN Connection zu den Management Endpoints |
Hardware Konfiguration | |
vCPU Cores | 4 - Ampere Processor (arm64) |
RAM | 8 GB - DDR4 ECC |
SSD | 80 GB - Raid 10 |
Netzwerk | 10 GBit - Redundant Network |
Begründung: Eine stabile Verbindung zur Datenbank ist entscheidend für die Funktionalität der Anwendung. Die Datenbank stellt das Herzstück dar, in dem Informationen gespeichert, abgerufen und aktualisiert werden. Eine unterbrochene Verbindung kann zu Ausfällen und Beeinträchtigungen der Anwendungsleistung führen. Daher ist es von grundlegender Bedeutung, die Robustheit und Zuverlässigkeit der Datenbankverbindung sicherzustellen.
Begründung: Die korrekte Speicherung und der Abruf von Daten sind essentiell, um die Datenintegrität sicherzustellen. Datenintegrität bezieht sich darauf, dass die in einem System gespeicherten Daten korrekt und unverändert bleiben. Dies ist von entscheidender Bedeutung, um sicherzustellen, dass Informationen zuverlässig und genau sind.
Begründung: Es ist wichtig, dass korrekte Daten in der Datenbank gespeichert werden, um zu verhindern, dass inkonsistente Zustände in der Datenbank vorkommen. Inkonsistente oder falsche Daten können dazu führen, dass die Applikation schwerer bedienbar oder gar unbrauchbar ist.
Schritte:
- Starten der Datenbank (wenn sie nicht bereits läuft)
- Starten der Applikation
- Sicherstellen, dass die Applikation erfolgreich ohne Fehler gestartet ist
- Versuchen, über die Applikation Testdaten in die Datenbank zu schreiben
Erwartetes Ergebnis:
- Daten können ohne Probleme eingefügt werden und die Applikation läuft
Schritte:
- Sicherstellen das die Datenbank nicht läuft
- Starten der Applikation
- Überprüfen, ob die Applikation gestartet ist und wenn nicht weshalb sie nicht gestartet ist
Erwartete Ergebnisse:
- Applikation ist nicht gestartet
- Hilfreiche Errormessage wird in den Logs angezeigt
Schritte:
- Sicherstellen, dass die Datenbank läuft
- Starten der Applikation
- Sicherstellen, dass die Applikation erfolgreich ohne Fehler gestartet ist
- Herunterfahren der Datenbank
- Überprüfen, ob ein Error in den Logs angezeigt wird
Erwartete Ergebnisse:
- Applikation ist nicht abgestürzt
- Beim Benutzen der Applikation wird ein Error angezeigt
- Errormessage ist in den Logs ersichtlich
Schritte:
- Starten der Applikation
- Eingabe der Daten in die entsprechenden Felder über eine API-Anfrage
- Senden der API-Anfrage
- Warten auf Response der API und überprüfen, ob diese erfolgreich war
- Überprüfen, ob die eingefügten Daten korrekt in der Datenbank erscheinen (mittels direkter Abfrage der Datenbank)
Erwartete Ergebnisse:
- Bestätigung, dass die Daten erfolgreich eingefügt wurden
- Daten sind korrekt und vollständig in der Datenbank gespeichert
- Keine Fehlermeldung in der Applikation oder in den Server Logs
Schritte:
- Starten der Applikation
- Daten mittels einer API-Anfrage anfordern
- Überprüfen, ob die angezeigten oder abgerufenen Daten mit den erwarteten Daten übereinstimmen
- Vergleich der Datenanzeige in der Applikation mit den direkten Datenbankinhalten, falls möglich
Erwartete Ergebnisse:
- Daten werden korrekt und vollständig angezeigt
- Ergebnis der Datenanzeige entspricht den gespeicherten Daten in der Datenbank
- Keine Fehlermeldung in der Applikation oder in den Server-Logs
Schritte:
- Starten der Applikation
- Ändern der Daten mittels einer API-Anfrage
- Überprüfen, ob die API-Response keine Fehler aufweist
- Überprüfen, ob die Änderungen korrekt in die Datenbank übernommen wurden
Erwartete Ergebnisse:
- Korrekte und vollständige Aktualisierung der Daten in der Datenbank
- Die Applikation zeigt eine Erfolgsmeldung an, keine Fehler
- Die Datenbank weist die neuen Werte auf, welche zuvor geändert worden sind
Schritte:
- Starten der Applikation
- Auslösen des Löschvorgangs durch das Senden einer API-Anfrage
- Überprüfen, ob die API Response keine Fehler aufweist
- Überprüfen in der Datenbank, ob die Datensätze vollständig entfernt wurden
Erwartete Ergebnisse:
- Gelöschte Daten sind nicht mehr in der Datenbank vorhanden
- Keine Rückverweise oder Artefakte der gelöschten Datensätze in verwandten Tabellen, falls relationale Integrität gefordert ist
- Applikation oder API zeigt die erfolgreiche Löschung ohne Fehlermeldungen an
Schritte:
- Starten der Applikation
- Senden eines korrekten Datenmodells über die API
- Überprüfen, ob die API Request erfolgreich durchgelaufen ist
- Überprüfen in der Datenbank, ob der neue Datensatz korrekt eingefügt wurde
Erwartete Ergebnisse:
- Die Applikation zeigt eine Erfolgsmeldung an, keine Fehler
- Die Datenbank enthält den neuen Datensatz mit den korrekt eingetragenen Daten
Schritte:
- Starten der Applikation
- Eingaben von falschen Daten per API Request. (Irgendein beliebiges Feld weglassen)
- Überprüfen, ob die API mit einem Fehler geantwortet hat
- Überprüfen der Datenbank, ob der fehlerhafte Datensatz nicht eingefügt wurde
Erwartete Ergebnisse:
- Die Applikation zeigt eine klar verständliche Fehlermeldung an, die auf das spezifische Problem hinweist
- Keine fehlerhaften Daten werden in die Datenbank eingefügt
Schritte:
- Starten der Applikation
- Updaten eines Datensatzes mit ungültigen Daten (Daten, bei denen ein Feld weggelassen ist) mithilfe der API
- Überprüfen, ob die API mit einem Fehler antwortet
- Überprüfen in der Datenbank, ob die Daten unverändert bleiben
Erwartete Ergebnisse:
- Die Applikation zeigt eine Fehlermeldung an, die den Benutzer auf das Problem mit den ungültigen Daten hinweist
- Die ursprünglichen, gültigen Daten bleiben in der Datenbank unverändert, es erfolgt kein Update mit ungültigen Daten
Testfall | Ergebnis | Bemerkung |
Datenbankverbindung | ||
Testfall 1 | 0 | Funktioniert ohne Probleme. |
Testfall 2 | 0 | Funktioniert ohne Probleme. (Screenshot 3 im Anhang) |
Testfall 3 | 2 | Beim Benutzen der Applikation wird zwar ein Error angezeigt. Allerdings handelt es sich dabei um den default Error von Spring Boot. (Screenshot 1 im Anhang)
Für eine bessere Verwendbarkeit wäre es vorteilhaft, wenn diese auf Deutsch ersichtlich wäre. |
Datenintegrität | ||
Testfall 4 | 0 | Daten sind in der Datenbank ersichtlich und der HTTP Code 201 wird zurückgegeben. |
Testfall 5 | 0 | Alle Daten werden korrekt und vollständig in der UI angezeigt. Auch Umlaute sind korrekt dargestellt. |
Testfall 6 | 0 | Alle Daten werden korrekt geändert + API request gibt einen HTTP 200 zurück. |
Testfall 7 | 0 | Daten wurden gelöscht. |
Datenvalidierung | ||
Testfall 8 | 0 | Funktioniert. |
Testfall 9 | 1 | Funktioniert - Allerdings hat es einen Rechtschreibfehler in der Fehlermeldung.
(Screenshot 2 im Anhang) |
Testfall 10 | 1 | Gleiches Problem wie bei Testfall 9. (Screenshot 2 im Anhang) |
Bewertungsskala:
0 | kein Mangel |
1 | belangloser Mangel Verwendung möglich, Brauchbarkeit ist vorhanden, Mängel sollte dennoch nicht vorkommen |
2 | leichter Mangel Verwendung möglich, Brauchbarkeit ist nur wenig beeinträchtigt |
3 | schwerer Mangel Verwendung ist noch möglich, Brauchbarkeit ist stark verringert |
4 | kritischer Mangel unbrauchbar |
- Screenshot 1:
Hier wird die default Fehlermeldung von Spring Boot angezeigt, der besagt, dass die Verbindung zur Datenbank nicht aufgebaut werden konnte. Dieser ist schwer für den user verständlich und könnte auch sensitive Daten beinhalten
- Screenshot 2:
Hier wurde ein Rechtschreibfehler in der Fehlermeldung gemacht. Anstatt “an title” müsste “a title” stehen.
- Screenshot 3:
Hier sieht man das Spring Boot nicht auf die Datenbank zugreifen konnte → da der Port nicht offen ist weil die Datenbank nicht läuft.