Skip to content

bbzblit/m450-lb2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

LB2 Integration Testing

1 Einleitung

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.

2 Testumgebung

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

3 Schwerpunkte und Begründung

3.1 Datenbankverbindung

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.

3.2 Datenintegrität

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.

3.3 Datenvalidierung

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.

4 Beschreibung der Testfälle

4.1 Datenbankverbindung

Testfall 1: Testen einer erfolgreichen Verbindung

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

Testfall 2: Testen einer nicht erfolgreichen Verbindung

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

Testfall 3: Testen einer abgebrochenen Verbindung

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

4.2 Datenintegrität

Testfall 4:** **Daten korrekt in die Datenbank einfügen (create)

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

Testfall 5: Daten aus der Datenbank lesen (read)

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

Testfall 6:** **Daten ändern (update)

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

Testfall 7: Daten löschen (delete)

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

4.3 Datenvalidierung

Testfall 8: Erfassung gültiger Daten

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

Testfall 9: Erfassung ungültiger 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

Testfall 10: Aktualisierung von Daten mit ungültigen Werten

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

5 Der Tests und Resultate

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

6 Anhang

  • Screenshot 1:

Screenshot from 2023-12-05 10-43-04

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:

Screenshot from 2023-12-05 10-39-31

Hier wurde ein Rechtschreibfehler in der Fehlermeldung gemacht. Anstatt “an title” müsste “a title” stehen.

  • Screenshot 3:

image

Hier sieht man das Spring Boot nicht auf die Datenbank zugreifen konnte → da der Port nicht offen ist weil die Datenbank nicht läuft.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published