Files
Chatapp/testprotokoll.md
Francesco Lorenzo D'Amico a5d116358e Initial commit
2026-08-10 15:25:21 +02:00

113 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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}
_______________________________________________