Initial commit

This commit is contained in:
Francesco Lorenzo D'Amico
2026-08-10 15:18:25 +02:00
parent 8fdb425402
commit a5d116358e
15 changed files with 700 additions and 165 deletions
+112
View File
@@ -0,0 +1,112 @@
---
title: "Testprotokoll Blackbox Test"
author: "Chat App"
date: "19.03.2026"
geometry: margin=2cm
fontsize: 11pt
---
## Projektinformationen
| | |
|---|---|
| **Projekt** | Chat App |
| **Datum** | 19.03.2026 |
| **Tester** | _______________ |
| **Version** | 1.0 |
---
## Testumgebung
| | |
|---|---|
| **Browser** | Chrome / Firefox |
| **URL** | http://localhost |
| **Methode** | Manueller Blackbox Test |
---
## Beschreibung der Systemteile
| Komponente | Technologie | Aufgabe |
|---|---|---|
| **Frontend** | React, Vite, Socket.IO Client, Nginx | Benutzeroberfläche für den Chat. Stellt Verbindung zum Backend über WebSocket her und zeigt Nachrichten, Teilnehmer und Verbindungsstatus an. |
| **Backend** | Node.js, Express, Socket.IO | REST-API und WebSocket-Server. Verwaltet Benutzer-Sessions, Räume und leitet Nachrichten in Echtzeit weiter. |
| **Datenbank** | MongoDB | Persistente Speicherung von Nachrichten und Benutzerdaten. Alternativ steht ein JSON-Fallback-Store zur Verfügung. |
| **Infrastruktur** | Docker, Docker Compose, Nginx | Containerisierung aller Dienste. Nginx fungiert als Reverse Proxy für das Frontend. |
---
## Vorschläge zur Ausfallsicherheit
**Frontend**
- Automatischer Reconnect bei WebSocket-Verbindungsabbruch ist bereits implementiert (5 Versuche)
- Statische Dateien über CDN ausliefern für höhere Verfügbarkeit
**Backend**
- Mehrere Instanzen hinter einem Load Balancer betreiben (z. B. Nginx upstream)
- Bei mehreren Instanzen Socket.IO mit Redis Adapter koppeln, damit alle Instanzen dieselben Räume/Events teilen
- Health-Check-Endpunkt `/health` ist bereits vorhanden und kann von einem Orchestrator (z. B. Kubernetes) genutzt werden
**Datenbank**
- MongoDB Replica Set einrichten: primärer Node schreibt, sekundäre Nodes lesen → bei Ausfall des primären Nodes übernimmt automatisch ein sekundärer
- Regelmäßige automatische Backups des Volumes einrichten
- JSON-Fallback-Store dient als Notlösung bei MongoDB-Ausfall (bereits implementiert)
**Infrastruktur**
- `restart: unless-stopped` ist in allen Docker-Diensten bereits konfiguriert → automatischer Neustart bei Absturz
- Für Produktion: Docker Swarm oder Kubernetes für automatisches Failover und Skalierung
---
## Testfälle
| Nr. | Beschreibung | Eingabe | Erwartetes Ergebnis | Tatsächliches Ergebnis | Status |
|---|---|---|---|---|---|
| T01 | Beitreten mit gültigem Benutzernamen und Raum | Username: `Max`, Room: `general` | Benutzer tritt dem Raum bei, Chatverlauf wird angezeigt | | [ ] |
| T02 | Beitreten ohne Benutzernamen | Username: *(leer)*, Room: `general` | Fehlermeldung wird angezeigt, kein Beitritt | | [ ] |
| T03 | Beitreten ohne Raumnamen | Username: `Max`, Room: *(leer)* | Fehlermeldung wird angezeigt, kein Beitritt | | [ ] |
| T04 | Nachricht senden | Nachricht: `Hallo!` → Senden | Nachricht erscheint im Chat | | [ ] |
| T05 | Leere Nachricht senden | Nachricht: *(leer)* → Senden | Nachricht wird nicht gesendet | | [ ] |
| T06 | Zwei Benutzer im selben Raum | Tab 1: `Max` / `general`, Tab 2: `Anna` / `general` | Beide sehen Nachrichten des jeweils anderen in Echtzeit | | [ ] |
| T07 | Benutzer in verschiedenen Räumen | Tab 1: `Max` / `general`, Tab 2: `Anna` / `privat` | Nachrichten sind voneinander getrennt | | [ ] |
| T08 | Teilnehmerliste aktualisiert sich | Tab 2 schließen | Tab 1 zeigt Benutzer als offline/entfernt | | [ ] |
| T09 | Chatverlauf nach Neuverbindung | Seite neu laden, wieder einloggen | Vorherige Nachrichten werden geladen | | [ ] |
| T10 | Sonderzeichen in Nachricht | Nachricht: `<script>alert(1)</script>` | Text wird als plain text angezeigt, kein Script ausgeführt | | [ ] |
| T11 | Langer Text | Nachricht mit 500 Zeichen | Nachricht vollständig angezeigt, kein Layout-Fehler | | [ ] |
| T12 | Backend nicht erreichbar | Backend stoppen, App öffnen | Fehlermeldung oder Reconnect-Versuch wird angezeigt | | [ ] |
---
## Legende
| Symbol | Bedeutung |
|---|---|
| [OK] | Bestanden |
| [X] | Fehlgeschlagen |
| [ ] | Nicht getestet |
---
## Gesamtergebnis
| Gesamt | Bestanden | Fehlgeschlagen | Nicht getestet |
|---|---|---|---|
| 12 | | | |
---
## Bemerkungen
\vspace{1cm}
_______________________________________________
\vspace{1cm}
_______________________________________________